2013-03-23 1 views
16

Я умерший emacs пользователь, но до сих пор всегда использовал kdiff3 для трехсторонних слияний с предком, например. при выполнении git merge или rebase. Я на самом деле нравится то, kdiff3 не только одновременно отображать все четыре версии текста, в котором объединены:Может ли ediff merge одновременно показывать предки, A, B и слияния буферов?

  • общего предка (буфер в kdiff3)
  • «наш» ака «локальный» (буфер Б в kdiff3)
  • «чужой» иначе «удаленный» (буфер с в kdiff3)
  • результат слияния или целевая
  • -

, но также делает различие между , B и С ясно, с помощью цветной подсветки. Однако kdiff3 неудивительно сосет по сравнению с emacs, когда дело доходит до редактирования текста буфера слияния, поскольку kdiff3 не является полномасштабным текстовым редактором. Он также не интегрируется из коробки с отличным пакетом magit. Поэтому я пытаюсь переключиться на использование ediff при разрешении конфликтов в этом сценарии (я успешно использовал ediff для других прецедентов в течение многих лет).

Однако, несмотря на чтение ediff manual и EmacsWiki page, и с просьбой о #emacs IRC, я не могу найти способ, чтобы одновременно отобразить все 4 буфера. По умолчанию он показывает:

  • «наш» также известный как «местный» (помеченный буфер )
  • «чужой» иначе «удаленный» (помеченный буфер Б)
  • результат слияния или целевое (помеченный буфер с)

Нажатие / переключает окно, отображающее буфер результата слияния (с), так что он отображает буфер предков, но вы не можете одновременно видеть результат предка и результат слияния. (Кроме того, diff в буфере предков подсвечивается одним цветом, который явно не показывает, какие биты отличаются от двух других видимых буферов (A и B), хотя, согласно this thread, кажется, что, к сожалению, предок diff до сих пор не реализована.)

Есть ли простой способ настроить ediff для одновременного отображения всех 4 буферов?

ответ

1

Нет, нет простого способа настроить его для этого. Существует опция ediff-window-setup-function, которую вы можете настроить для любой функции, которую вы хотите. Вы можете посмотреть настройки по умолчанию, ediff-setup-windows-plain и ediff-setup-windows-multi, чтобы получить представление о том, что вам нужно сделать.Фактически, самый простой способ продолжить - скопировать один из них в вашу конфигурацию emacs и изменить его (смена имени, конечно); они не тривиальны.

3

Это добавлено к версии багажника. Теперь по умолчанию 3-сторонние слияния показывают четыре буфера, то есть «локальный» (буфер A), «удаленный» (буфер B), результат слияния (буфер C) и предок. Вы можете изменить это значение по умолчанию , настроив новый вариант «ediff-show-ancestor».

Ключ «/» теперь связан с новой командой «Ediff-рычажной-шоу-предком»: он переключает ли показывать 3 (локальный, удаленный и результат) или 4 (локальный, удаленный, результат, предка).

Эти изменения будут видны в выпуске Emacs 26.1.

+1

Woohoo, это отличная новость! Спасибо за обновление :) –