В общем, я не люблю кадры. Щас пользуюсь
(setq ediff-window-setup-function #'ediff-setup-windows-plain)
Чтобы убедиться, что ediff
не создает кадр при его запуске.
Тем не менее, некоторые команды, такие как ediff-show-registry
все еще открывают новые кадры.
Есть ли способ, которым я могу полностью отключить создание кадров в ediff
?
ediff-skip-unsuitable-frames
или отметив , что из полностью внутриediff-show-registry
- например, комментарий из:(ediff-skip-unsuitable-frames 'ok-unsplittable)
?ediff
библиотек,(make-frame
и вы найдете несколько мест, которые необходимо исправить в соответствии с вашими предпочтениями. Ваш запрос, безусловно, является обоснованным и заслуживает (на мой взгляд) особого запроса к автору и / или команде Emacs - большинство людей подумают, что ониediff-setup-windows-plain
должны применяться по всем направлениям без различныхmake-frame
исключений.Ответы:
Существует внутренний предикат
ediff-init.el
, называемыйediff-window-display-p
. Когда я переопределил это (после загрузки ediff, конечно) примерно так, все работает в одном кадре, включая функцию, которую вы упомянули как проблему:Я согласен с @lawlist, что это хорошая функция - исправить
ediff-window-setup-function
.источник
(advice-add 'ediff-window-display-p :override #'ignore)
, что может быть легче отменить сadvice-remove
(плюс это не требует загрузки ediff в первую очередь).ediff-setup-windows-plain
занимает весь кадр - я хочу, чтобы мои «контекстные» окна были открыты (например, заметки и другие файлы). Поэтому я написал пользовательскую функцию настройки окна (использует собственный буфер отображения, работающий от ace-window, чтобы выбрать, где можно разделить окна и отобразить новые буферы). Кажется, что, когда Ediff загружается, он проверяет этоediff-window-display-p
и, если false, обходит пользовательскую функцию настройки окна и используетediff-setup-windows-plain
. Так что для моей пользовательской настройки я либо избегуediff-show-registry
, либо напишу пользовательскую команду.