Может ли объединение ediff одновременно отображать буферы предков, A, B и слияний?
Я - жесткий пользователь emacs
, но до сих пор всегда использовал kdiff3
для трехсторонних слияний с предком, например при выполнении git merge
или rebase
. Мне очень нравится, что kdiff3
может не только одновременно отображать все четыре версии слияния текста:
- общий предок (буфер A в
kdiff3
)
- "ours" a.k.a. "local" (буфер B в
kdiff3
)
- "theirs" a.k.a. "remote" (буфер C в
kdiff3
)
- результат или цель слияния
но также делает различия между A, B и C прозрачными с помощью подсветки цветом. Тем не менее, kdiff3
неудивительно отстой в сравнении с emacs
, когда дело доходит до текстового редактирования буфера слияния, поскольку kdiff3
не является полномасштабным текстовым редактором. Он также не интегрируется из коробки с отличным пакетом magit
. Поэтому я пытаюсь переключиться на ediff
при разрешении конфликтов в этом конкретном сценарии (я успешно использовал ediff
для другого использования случаев в течение многих лет).
Однако, несмотря на чтение ediff
manual и Страница EmacsWiki и спрашивая в #emacs
IRC, я не могу найти способ одновременного отображения всех 4 буферов. По умолчанию он показывает:
- "ours" a.k.a. "local" (помеченный буфер A)
- "их" a.k.a. "remote" (помеченный буфер B)
- результат или цель слияния (помеченный буфер C)
Нажатие /
переключает окно, отображающее буфер результатов слияния (C), так что он отображает буфер предка, но вы не можете одновременно видеть результат предка и результат слияния. (Кроме того, diff в буфере предков подсвечивается одним цветом, который явно не показывает, какие биты отличаются от двух других видимых буферов (A и B), хотя согласно этот поток, кажется, что, к сожалению, предварительная интерпретация различий еще не реализована.)
Есть ли простой способ настроить ediff
одновременное отображение всех 4 буферов?
Ответы
Ответ 1
Это добавляется к версии trunk. Теперь по умолчанию 3-сторонние слияния показывают
четыре буфера, то есть "локальный" (буфер A), "remote" (буфер B),
результат слияния (буфер C) и предок. Вы можете изменить это значение по умолчанию
настраивая новый вариант "ediff-show-ancestor".
Ключ '/' теперь привязан к новой команде 'ediff-toggle-show-ancestor': it
переключает, показывать ли 3 (локальный, удаленный и результат)
или 4 (локальный, удаленный, результат, предок).
Эти изменения будут видны в выпуске Emacs 26.1.
Ответ 2
Нет, нет простого способа настроить его для этого. Существует опция ediff-window-setup-function
, которую вы можете настроить для любой функции, которую вы хотите. Вы можете посмотреть настройки по умолчанию, ediff-setup-windows-plain
и ediff-setup-windows-multi
, чтобы понять, что вам нужно делать. Фактически, самый простой способ продолжить - скопировать один из них в вашу конфигурацию emacs и изменить его (смена имени, конечно); они не тривиальны.