Как заставить определенный буфер открываться в новом окне?

12

При фиксации изменений в Magit полезно открыть представление diff при добавлении подробностей о коммите.

В Magit мы видим различие в *magit ..*буфере. Когда вы нажмете , ccкогда курсор находится на Staged файла, Magit фиксации буфера .. COMMIT_EDITMSGвыскочит. По умолчанию этот новый буфер заменяет *magit ..*буфер, который показывал различия в фиксации.

ВОПРОС - Как сделать .. COMMIT_EDITMSGбуфер откроется в новом окне (повторное использование в другое окно или создать новое окно , если кадр был только 1 окно , чтобы начать с) , так что я могу видеть и *magit ..*и .. COMMIT_EDITMSGбуферы?

Каушал Моди
источник
Связанный: emacs.stackexchange.com/q/327/50
Малабарба

Ответы:

17

Можно настроить способ открытия буфера (в том же кадре / окне или в другом кадре / окне), используя display-buffer-alist. Обратитесь к ссылкам ниже, чтобы узнать больше об этой переменной.

Решение

Мы должны указать emacs всегда открывать буферы, оканчивающиеся COMMIT_EDITMSGокном, но не в том же ( *magit ..*) окне.

Добавьте следующий фрагмент кода init.elпосле, (require 'magit)чтобы указать это действие.

(add-to-list 'display-buffer-alist
                 '(".*COMMIT_EDITMSG". ((display-buffer-pop-up-window) .
                                        ((inhibit-same-window . t)))))

Разбивка решения

display-buffer-alistэто alistтот, который вызывает FUNCTION(или список функций) с ALISTпараметрами, когда значение CONDITIONравно true. display-buffer-alistМожет быть представлена в виде,

'(CONDITION . (FUNCTION . ALIST))
  • Вот CONDITION, что имя буфера заканчивается COMMIT_EDITMSGи что представлено ".*COMMIT_EDITMSG".
  • FUNCTIONНа вызов , display-buffer-pop-up-windowкак мы хотим , чтобы создать окно для этого буфера. Вместо того, чтобы указывать функцию отдельно, она помещается в виде списка отдельной функции, (display-buffer-pop-up-window)так что в будущем при необходимости можно будет легко добавить больше функций в список.
  • ALISTСодержит , (inhibit-same-window . t)как мы не хотим , чтобы этот буфер , чтобы открыть в одном окне.

Ссылки

Каушал Моди
источник
2

Начиная с v2.1.0Magit, по умолчанию отображаются изменения, которые фиксируются вместе с буфером, используемым для записи сообщения фиксации.

Tarsius
источник