Подтвердить что ты не робот

Есть ли способ заставить Ediff не открывать свой навигационный интерфейс во внешнем окне?

Не используя Emacs так долго (v23, windows) и только что обнаружил M-x ediff. Фантастика. Хотя я не хочу увлекаться тем фактом, что он открывает свою помощь/навигация в отдельном фрейме/окне, что означает, что если я потеряю фокус на этом окне, однократные ярлыки не работают.

Например, как только я нажимаю ?, чтобы развернуть окно, он сдвинется поверх моего текущего окна, поэтому я должен забрать мою мышь и перенести ее на другой экран. Затем, если я потеряю фокус в этом окне и нажмите p/n/j или любой другой ключ для работы с diff, он вставляет его в мой документ. Поэтому я должен отменить, захватить мышь, сфокусироваться на другое окно и повторить.

Есть ли способ настроить эти параметры для показа в расколе?

4b9b3361

Ответ 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))
  ...)

Не то, чтобы вы установили переменную таким образом, но это позволяет вам знать эти вещи:

  • Интересующая вас переменная ediff-window-setup-function
  • Значение, которое необходимо установить, равно ediff-setup-windows-plain
  • Вы можете настроить переменную в настройке: M-x customize-group RET ediff-window

    Настройка окна Ediff: однокадровое меню

Ответ 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 года!