Khi chuyển đổi bộ đệm, ngăn không cho emacs tự động chuyển khung


13

Khi tôi chuyển đổi bộ đệm, emacs sẽ chuyển sang khung hiện có nếu bộ đệm đã được mở ở đó.

Tôi đã tìm thấy cách ngăn chặn điều đó khi chuyển đổi bằng ido bằng cách sử dụng:

(setq ido-default-buffer-method 'selected-window)

Nhưng điều đó là không đủ: ví dụ nếu có một lỗi emacs lỗi sẽ tự động chuyển sang bộ đệm * Backtrace * và sẽ chuyển khung nếu nó đã mở.

Có cách nào để ngăn chặn hoàn toàn emacs chuyển sang một khung tồn tại?

Câu trả lời:


3

Dường như không có một lựa chọn nào cho việc này.

Chức năng để tìm một bộ đệm không cho phép bạn xác định xem có nên tìm trong tất cả các khung hoặc chỉ trong khung hiện tại:

(get-buffer-window &optional BUFFER-OR-NAME ALL-FRAMES)

Tuy nhiên, việc thực hiện switch-to-buffervượt qua 0 cho ALL-FRAMESđối số, có nghĩa là nó sẽ nhìn trong tất cả các khung.

Tôi cho rằng bạn có thể sử dụng :aroundlời khuyên get-buffer-windowđể thay thế cho lập luận đó, nếu bạn thực sự muốn ngăn chặn hành vi này trên toàn cầu ... nhưng tôi nghi ngờ điều đó sẽ phá vỡ những thứ khác.


Đó là những gì tôi sợ. Tôi có thể thử lời khuyên bổ sung xung quanh cửa sổ get-buffer-window, nhưng tôi không thích tư vấn các chức năng được sử dụng rộng rãi.
MonsieurBanana

Vâng, dường như có thể gây rắc rối. Bạn có thể muốn kiểm tra popwingói như một cách xử lý các bộ đệm đặc biệt - không chắc chắn nếu điều đó cộng với cấu hình ido bạn đã tìm thấy có đủ không.
glucas

1
Thật ra, tôi có thể đã bỏ lỡ chiếc thuyền ở đây. Bạn nên xem phần hướng dẫn sử dụng Emacs trên 'Chọn cửa sổ' và 'Hiển thị các chức năng hành động'. Đặc biệt, việc sử dụng inhibit-switch-framecó vẻ hữu ích. (Tôi chưa có cơ hội thử nghiệm các tùy chọn này.)
glucas


Cảm ơn, chủ đề SE rất hữu ích. Tài liệu cho display-bufferdisplay-buffer-alistlàm cho đầu tôi đau, nhưng đó chỉ là câu hỏi về thời gian cho đến khi tôi tìm ra giải pháp.
MonsieurBanana
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.