2013-03-23 43 views
16

我是頑固的emacs用戶,但到目前爲止總是使用kdiff3與祖先進行3向合併。當執行git mergerebase時。我真的很喜歡kdiff3不僅能夠同時顯示文本的所有四個版本的方式被合併:可以同時顯示祖先,A,B和合並緩衝區嗎?

  • 的共同祖先(緩衝kdiff3一個
  • 「我們的」又名「本地」(緩衝kdiff3
  • 「他們的」 又名 「遠程」(緩衝器çkdiff3
  • 合併結果或目標

也使得之間的差異,和通過顏色高亮Ç清楚。然而,kdiff3emacs相比,當涉及到合併緩衝區的文本編輯時,並不令人驚訝,因爲kdiff3不是一個完整的文本編輯器。它也不包含優質的magit包裝。所以我試圖在解決這個特定場景(我已成功使用ediff其他多年的使用情況)中解決衝突時嘗試使用ediff

然而,儘管讀ediff manualEmacsWiki page,並要求對#emacs IRC,我無法找到一個方法來同時顯示所有4個緩衝區。缺省情況下它顯示:

  • 「我們的」又名「本地」(標記緩衝
  • 「他們的」又名「遠程」(標記緩衝
  • 合併結果或目標(標記緩衝ç

按下/切換顯示所述合併結果緩衝器中的窗口(ç),以便它顯示祖先緩衝區,但不能同時看到祖先和合並結果。 (此外,在祖先緩衝器中的差異在一個單一的顏色被突出顯示不清晰顯示哪些位與其它兩個可見緩衝器()不同,儘管根據this thread,似乎不幸祖先diff精化還沒有實現。)

有沒有簡單的方法來配置ediff來同時顯示所有4個緩衝區?

回答

1

不,沒有簡單的方法來配置它來做到這一點。有選項ediff-window-setup-function,您可以自定義爲您想要的任何功能。您可以查看默認值ediff-setup-windows-plainediff-setup-windows-multi以瞭解您需要執行的操作。事實上,最簡單的方法是將其中一個複製到emacs配置中並進行修改(當然,更改名稱);它們不是微不足道的。

3

這已被添加到中繼版本。現在默認情況下,3路合併顯示 四個緩衝區,即「本地」(緩衝區A),「遠程」(緩衝區B),合併結果(緩衝區C)和祖先。您可以更改此默認 自定義新選項'ediff-show-ancestor'。

關鍵「/」現在綁定到一個新的命令「ediff肘節出現-祖先」:它 切換是否顯示3(本地,遠程和結果) 或4(本地,遠程,結果,祖先)緩衝區。

這些更改將在Emacs 26.1版本中可見。

+1

嗚呼,那真是好消息!感謝更新 :) – 2017-03-14 11:08:38