2009-10-15 37 views
7

Vì vậy, tôi thường có 3 bộ đệm mở trong Emacs.Làm cách nào để tạo các lệnh di chuyển cửa sổ bỏ qua một cửa sổ nhất định?

  1. Một bộ đệm cho mã thực tế tôi đang viết.
  2. Một bộ đệm cho thử nghiệm đơn vị cho mã đã nêu.
  3. Bộ đệm thứ ba hiển thị kết quả của phép thử đơn vị. Bộ đệm này được đưa vào là bên dưới hai bộ đệm khác khi tôi chạy thử nghiệm đơn vị của mình C-x SPACE.

Làm cách nào để tắt bộ đệm thứ ba này khi tôi nhấn C-x o Tôi chỉ chuyển đổi giữa bộ đệm 1 và bộ đệm 2? Hiện tại, tôi chuyển đổi giữa bộ đệm 1, sau đó là bộ đệm 2, sau đó là bộ đệm 3, sau đó là bộ đệm 1, v.v. Để cụ thể, tôi muốn C-x o để chỉ chuyển đổi giữa bộ đệm 1 và 2.

Cảm ơn bạn.

+0

Không phải là câu trả lời nhưng giải pháp có thể giúp bạn: http://stackoverflow.com/questions/91071/emacs-switch-active-window –

+0

Có vẻ như bạn đang yêu cầu bỏ qua một * cửa sổ * khi nó chứa một bộ đệm cụ thể mà bạn không muốn chuyển sang. Chính xác? –

+0

Stephen, tôi có thể đề nghị bạn cập nhật tiêu đề và câu hỏi để đặt cửa sổ thay vì bộ đệm không? buffer/window/frame có ý nghĩa cụ thể trong các emacs: Frame tương đương với những gì mà một trình quản lý cửa sổ gọi là một cửa sổ (bao vây bạn thường có thể di chuyển xung quanh). cửa sổ là những gì bạn đang đề cập đến: một tập con của khung hiển thị một số văn bản. một bộ đệm là những gì đại diện cho nội dung thực tế được hiển thị. Nó thường được xác định bởi một tên, cho thấy trong mô hình. Bạn có thể hiển thị cùng một bộ đệm trên 2 cửa sổ, ví dụ: – Bahbar

Trả lời

7

Một giải pháp chung để này (có thể nhìn) một cái gì đó như sau:

(defvar ignore-windows-containing-buffers-matching-res '("\\*Help") 
     "List of regular expressions specifying windows to skip (if window contains buffer that matches, skip)") 

(defadvice other-window (before other-window-ignore-windows-containing activate) 
    "skip over windows containing buffers which match regular expressions in 'ignore-windows-containing-buffers-matching-res" 
    (if (and (= 1 (ad-get-arg 0)) (interactive-p)) 
     (let* ((win (next-window)) 
      (bname (buffer-name (window-buffer win)))) 
     (when (some 'identity (mapcar '(lambda (re) 
             (string-match re bname)) 
            ignore-windows-containing-buffers-matching-res)) 
      (ad-set-arg 0 2))))) 

Tùy chỉnh biến trở thành một biểu thức chính quy phù hợp với các tên đệm bạn muốn bỏ qua.

+0

Tôi đã sao chép tệp này vào tệp .emacs của tôi. Sau đó tôi chỉ thay thế "* Help" bằng "* Ruby-Test *" (đó là tên của bộ đệm mà thử nghiệm ruby ​​đang được chạy bên trong). Bây giờ khi tôi chuyển đổi bộ đệm, nó chỉ chuyển đổi giữa bộ đệm 1 và 2. Có vẻ như một giải pháp tốt. Cảm ơn. –

5

Câu trả lời của Trey sẽ thực hiện chính xác những gì bạn muốn (ít nhất có vẻ như nó sẽ xảy ra; Tôi chưa thử). Giải pháp chung chung hơn là sử dụng swbuff với swbuff-x hoặc swbuff-advice của riêng tôi. Thông tin về cả ba có thể được tìm thấy trên Emacs Wiki swbuff page.

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