Перемикаючи буфери, не допускайте автоматичного перемикання кадру на emacs


13

Коли я перемикаю буфери, emacs перейде на існуючий кадр, якщо буфер вже відкритий там.

Я знайшов, як запобігти цьому при переключенні на ido за допомогою:

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

Але цього недостатньо: для приклад, якщо є помилка lisp, emacs автоматично переключиться на буфер * Backtrace * і переключить кадри, якщо він уже відкритий.

Чи є спосіб запобігти переходу повністю emacs на існуючий кадр?

Відповіді:


3

Здається, для цього не існує варіанту.

Функція знайти буфер робить дозволяє вказати , слід шукати у всіх кадрах або тільки в поточному кадрі:

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

Однак реалізація switch-to-bufferпропускає 0 для ALL-FRAMESаргументу, а значить, він буде виглядати у всіх кадрах.

Я гадаю, ви могли б скористатися :aroundпорадою get-buffer-windowдля заміни цього аргументу, якщо ви справді хотіли б глобально запобігти цій поведінці ... але я підозрюю, що це порушить інші речі.


Ось чого я боявся. Я можу спробувати додаткові поради навколо get-buffer-window, але я не дуже люблю порадити широко використовувані функції.
MonsieurBanana

Так, це, ймовірно, спричинить неприємності. Ви можете перевірити popwinпакунок як спосіб роботи зі спеціальними буферами - не впевнений, чи може бути достатньо цього плюс конфігурації ido, яку ви вже знайшли.
глюкас

1
Насправді я, можливо, пропустив човен тут. Спробуйте ознайомитись з розділами керівництва Emacs на тему "Вибір вікна" та "Відображення функцій дій". Зокрема, використання inhibit-switch-frameздається корисним. (У мене ще не було можливості експериментувати з цими варіантами.)
glucas

Дивіться також: emacs.stackexchange.com/questions/2194/…
glucas

Дякую, що нитка SE дуже корисна. Документація display-bufferі display-buffer-alistболить у мене голова, але це лише питання часу, поки я не знайду рішення.
MonsieurBanana
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.