2012-10-06 27 views
6

Có cách nào để có hành vi như bạn tìm thấy ở chế độ theo dõi hay không nhưng có trên nhiều cửa sổ trong các khung riêng biệt không?chế độ theo dõi emacs trên các khung hình

Tôi phải làm việc với một số mã di sản khó chịu có bảy viên gạch trang tám cấp độ lồng nhau cho các vòng với lots'a goto và nó giúp xem càng nhiều mã càng tốt (để đầy đủ hiểu và viết lại nó mà không phá vỡ mọi thứ khác).

Tôi càng thấy nhiều mã hơn cùng một lúc thì càng tốt.

+2

Giới hạn này tồn tại vì hai lý do: 1) không có "khung đầu tiên" tự nhiên, vì vậy sẽ khó có thể theo dõi để sắp xếp nội dung của cửa sổ. 2) Nó cho phép người dùng mở nhiều khung hình, mỗi khung hiển thị các phần khác nhau của bộ đệm. Tại sao bạn không sử dụng một khung lớn - tôi là sáu cột rộng lây lan trên hai màn hình vật lý, mang lại cho tôi tổng cộng 888 dòng. – Lindydancer

Trả lời

3

Hạn chế này được đặt rõ ràng bằng follow-all-followers trong cuộc gọi tới next-window.

Đây là giải pháp sơ bộ. Có một số thiếu sót bạn sẽ nhận thấy khá nhanh (ví dụ: bạn có thể cần phải sắp xếp các khung theo cách thủ công), nhưng nó tạo điều kiện cho yêu cầu cơ bản của việc sử dụng tất cả các khung và bạn sẽ có thể làm cho nó hoạt động.

Tôi cũng đề nghị rằng FrameMove với WindMove có thể chứng minh rất hữu ích cho sự sắp xếp này.

(defmacro with-temporary-advice (function class name &rest body) 
    "Enable the specified advice, evaluate BODY, then disable the advice." 
    `(progn 
    (ad-enable-advice ,function ,class ,name) 
    (ad-activate ,function) 
    ,@body 
    (ad-disable-advice ,function ,class ,name) 
    (ad-activate ,function))) 

(defadvice next-window (before my-next-window-all-frames disable) 
    "Enforce the ALL-FRAMES argument to `next-window'." 
    (ad-set-arg 2 'visible)) 

(defadvice follow-all-followers (around my-follow-all-frames activate) 
    "Allow `follow-mode' to span frames." 
    (with-temporary-advice 
    'next-window 'before 'my-next-window-all-frames 
    ad-do-it)) 

Thay vào đó, bạn có thể chỉ cần xác định lại chức năng follow-all-followers để thực hiện những gì bạn muốn.

+0

Đây là một nơi tốt để bắt đầu. Cảm ơn. – Ishpeck

Các vấn đề liên quan