2014-04-02 18 views
5

All,emacs chuyển đệm mỗi cửa sổ

Tôi đang tìm kiếm một cách để bộ đệm chuyển đổi trong nhiều cửa sổ tương tự như IDE khác. Giả sử tôi chia khung của tôi thành hai cửa sổ (C-x 3). Tôi muốn xử lý bộ đệm cho .c files luôn ở cửa sổ bên trái và .h files ở bên phải. Tôi đang tìm một cách để ghép một danh sách các bộ đệm vào một cửa sổ cụ thể và các bộ đệm chu kỳ chỉ thuộc về cửa sổ hiện tại. Vì vậy, nếu tôi đang chỉnh sửa .h file ở bên phải và nhấn tổ hợp phím, tôi sẽ nhận được .h file tiếp theo.

Cảm ơn lời khuyên, Janos

Trả lời

1

tôi sử dụng buffer-stack (có sẵn thông qua MELPA) cho một cái gì đó tương tự. buffer-stack cho phép bạn chuyển đổi giữa các bộ đệm theo cách rất linh hoạt (nó nhớ các bộ đệm được sử dụng gần đây nhất của bạn và nó sử dụng các ngăn xếp ngăn cách trên mỗi khung).

Bạn có thể thêm chức năng bộ lọc vào các lệnh chuyển đổi bộ đệm. Vì vậy, bạn có thể thêm một chức năng lọc để xem xét chỉ bộ đệm với tên tập tin với phần mở rộng tương tự hơn hiện tại. Tôi sử dụng chức năng lọc để chuyển đổi giữa các vùng đệm của cùng một chế độ. Dưới đây là một ví dụ cho thấy các keybindings của tôi để chuyển đổi lọc theo chế độ hiện tại và cũng swith để dired bộ đệm. Sẽ dễ dàng thêm một bộ lọc khác dựa trên đuôi tệp:

(defmacro command (&rest body) 
    `(lambda() 
    (interactive) 
    ,@body)) 

(defvar buffer-stack-mode) 

(defun buffer-op-by-mode (op &optional mode) 
    (let ((buffer-stack-filter 'buffer-stack-filter-by-mode) 
     (buffer-stack-mode (or mode major-mode))) 
    (funcall op))) 

(defun buffer-stack-filter-by-mode (buffer) 
    (with-current-buffer buffer 
    (equal major-mode buffer-stack-mode))) 

(global-set-key [(meta kp-7)] 
       (command (buffer-op-by-mode 'buffer-stack-up))) 
(global-set-key [(meta kp-9)] 
       (command (buffer-op-by-mode 'buffer-stack-down))) 
(global-set-key [(meta kp-3)] 
       (command (buffer-op-by-mode 'buffer-stack-down 'dired-mode))) 
(global-set-key [(meta kp-1)] 
       (command (buffer-op-by-mode 'buffer-stack-up 'dired-mode))) 
1

Bạn có thể sử dụng ff-find-other-file. Với đối số tiền tố C-u, nó sẽ mở một cửa sổ khác.

Đối với ý tưởng của bạn để nhận được tệp .h tiếp theo, bạn chỉ giới hạn chính mình bằng cách cố gắng mang ý tưởng tồi từ IDE vào Emacs. Sử dụng projectile hoặc ido-switch-buffer hoặc helm-buffers-list: những công cụ có thể quản lý hàng trăm file cùng một lúc, trong khi cách tiếp cận của "nhận được tập tin tiếp theo" (tức tab) không xung quanh 20.

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