Есть ли способ заставить Ediff не открывать свой навигационный интерфейс во внешнем окне?
Не используя Emacs так долго (v23, windows) и только что обнаружил M-x ediff. Фантастика.
Хотя я не хочу увлекаться тем фактом, что он открывает свою помощь/навигация в отдельном фрейме/окне, что означает, что если я потеряю фокус на этом окне, однократные ярлыки не работают.
Например, как только я нажимаю ?, чтобы развернуть окно, он сдвинется поверх моего текущего окна, поэтому я должен забрать мою мышь и перенести ее на другой экран. Затем, если я потеряю фокус в этом окне и нажмите p/n/j или любой другой ключ для работы с diff, он вставляет его в мой документ. Поэтому я должен отменить, захватить мышь, сфокусироваться на другое окно и повторить.
Есть ли способ настроить эти параметры для показа в расколе?
Ответы
Ответ 1
Я не знал, как это сделать, но, как правило, легко учиться с Emacs. Сначала я спросил об настройках ediff:
M-x customize-apropos
ediff
Я видел, что есть что-то, называемое Функция настройки Ediff Window, которая принимает значения Multi Frame, Single Frame или Другая функция. Mine был установлен в Multi Frame и изменил его на Single Frame и сохранил его для будущих сеансов. И Вуаля! как говорится.
Ответ 2
Просто:
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
M-x описать-переменную функцию настройки ediff-window просветит вас
в дальнейшем.
Для справки моя настройка ediff довольно проста:
(if (locate-library "ediff")
(progn
(autoload 'ediff-files "ediff")
(autoload 'ediff-buffers "ediff")
(eval-after-load "ediff" '(progn
(message "doing ediff customisation")
(setq diff-switches "-u"
ediff-custom-diff-options "-U3"
ediff-split-window-function 'split-window-horizontally
ediff-window-setup-function 'ediff-setup-windows-plain)
(add-hook 'ediff-startup-hook 'ediff-toggle-wide-display)
(add-hook 'ediff-cleanup-hook 'ediff-toggle-wide-display)
(add-hook 'ediff-suspend-hook 'ediff-toggle-wide-display)))))
Ответ 3
Из раздела Конфигурация окна и фрейма в Руководстве пользователя Ediff:
Следующая переменная управляет тем, как установлены окна:
ediff-window-setup-function
Настройка мультикадра выполняется с помощью ediff-setup-windows-multiframe
функция, которая по умолчанию включена окна. Обычная настройка, где все окна всегда находятся в один кадр, выполняется ediff-setup-windows-plain
, что по умолчанию на экране без окна (или в окне xterm). По факту, под Emacs, вы можете свободно переключаться между этими двумя установками путем выполнения команда ediff-toggle-multiframe
используя Minibuffer из Menubar.
Ответ 4
(custom-set-variables
...
'(ediff-window-setup-function (quote ediff-setup-windows-plain))
...)
Не то, чтобы вы установили переменную таким образом, но это позволяет вам знать эти вещи:
Ответ 5
Примечание. Вы можете избежать использования мыши, чтобы вернуться в окно управления ediff, используя M-x other-frame. Также найдено на C-x 5 o.
Ответ 6
Это больше не работает в 2017 году gnu emacs (24.5, 25.2, 2017) на окнах
(setq ediff-window-setup-function 'ediff-setup-windows-plain) ; stopped working
Даже
ediff-toggle-multiframe ; no longer has any effect now.
Он работает в emacs22.3 на окнах, поэтому я использую более старые emacs с 2008 года!