问题标签 [emacs-ediff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1863 浏览

emacs - ediff merge 可以同时显示祖先、A、B 和合并缓冲区吗?

我是一个铁杆emacs用户,但到目前为止一直用于kdiff3与祖先的 3 路合并,例如在执行git mergerebase. 我真的很喜欢这种方式,kdiff3它不仅可以同时显示正在合并的所有四个版本的文本:

  • 共同祖先(缓冲区Akdiff3
  • “我们的”又名“本地”(缓冲区B in kdiff3
  • “他们的”又名“远程”(缓冲区C in kdiff3
  • 合并结果或目标

而且还通过颜色突出显示ABC之间的差异。然而,与合并缓冲区的文本编辑kdiff3相比,emacs这并不令人惊讶,因为kdiff3它不是一个成熟的文本编辑器。它也没有与优秀的magit包装一起开箱即用。所以我试图ediff在解决这个特定场景中的冲突时切换到使用(多年来我已经成功地ediff用于其他用例)。

然而,尽管阅读了ediff手册EmacsWiki 页面,并在#emacsIRC 上询问,我还是找不到同时显示所有 4 个缓冲区的方法。默认情况下它显示:

  • “我们的”又名“本地”(标记为缓冲区A
  • “他们的”又名“远程”(标记为缓冲区B
  • 合并结果或目标(标记为缓冲区C

/切换显示合并结果缓冲区 ( C ) 的窗口,使其显示祖先缓冲区,但您无法同时看到祖先和合并结果。(此外,祖先缓冲区中的差异以单一颜色突出显示,这并不能清楚地显示哪些位与其他两个可见缓冲区(AB)不同,尽管根据这个线程,不幸的是,祖先差异细化似乎没有'尚未实施。)

有没有一种简单的方法可以配置ediff为同时显示所有 4 个缓冲区?

0 投票
1 回答
114 浏览

emacs - 如何将文件 B 中的空白差异合并到文件 A?

我想将文件 B 中的空白差异合并到文件 A,但不合并非空白差异,因为我想浏览它们并一一检查?这可能吗?

0 投票
3 回答
1469 浏览

emacs - emacs ediff 刷新缓冲区

我正在使用 emacs ediff 来比较我经常更新的两个文件。如何在不杀死和重新加载 ediff 的情况下刷新或更新缓冲区以反映新文件?当我尝试使用 Cx Cv 更新每个文件时,Ediff 控制面板显示“你已经杀死了一个重要的 Ediff 缓冲区——你现在必须离开 Ediff!”

0 投票
3 回答
832 浏览

emacs - Emacs ediff 在不同的 dired 缓冲区中标记了文件

我有以下函数在我在 dired 缓冲区中标记的文件上运行 ediff:

它仅适用于同一目录中的文件,我怎样才能使其适用于我在不同目录中标记的文件?

0 投票
1 回答
3600 浏览

git - Ediff 作为 git difftool

我正在尝试使用 emacs ediff 作为 git difftool。

我遵循了这里提出的一些配置: Using ediff as git mergetool

在比较某个文件的不同 git 修订版之间时,我完全没有问题:ediff 运行良好,并且两个版本之间的差异被正确描述。

但是,当我尝试运行 git difftool 以将文件的当前目录版本与某个 git 修订版进行比较时,我遇到了问题。对于某些文件,我收到以下错误:

apply: Wrong type argument: arrayp, nil

这很奇怪,因为此错误仅针对某些文件,而不是所有文件。

我对几个文件进行了实验,我认为经验法则如下: - 如果要比较的文件没有放在git根目录下,那么它会失败。- 否则,ediff 显示文件的当前版本与指定修订之间的差异,没有任何问题。

我已经尝试过上面提到的链接中解释的一些配置。所有这些都给了我相同的结果: git difftool 在将非根 git 文件的当前目录版本与某个 git 修订版进行比较时失败。

知道如何解决这个问题吗?

非常感谢。-鲍勃

0 投票
1 回答
107 浏览

emacs - 如何为ediff交互式设置变量

我正在使用 ediff 模式,我想水平分割窗口而不是垂直默认值。ediff 手册说这可以交互完成。

ediff-拆分窗口函数

控制您希望窗口在文件 A 和文件 B(和文件 C,如果适用)之间拆分的方式。它默认为垂直拆分(split-window-vertically,但如果您愿意,您可以将其设置为 split-window-horizo​​ntally。Ediff 还允许您从垂直拆分切换到水平拆分并以交互方式返回。

请注意,如果 Ediff 检测到它比较的所有缓冲区都显示在单独的帧中,它会假定用户希望它们如此显示并停止拆分窗口。相反,它安排每个缓冲区显示在单独的框架中。您可以通过隐藏其中一个缓冲区 A/B/C 来切换到单帧模式。

您还可以通过键入来交换显示缓冲区的窗口 ~

我尝试使用 Mx set-variable 将此变量设置为 split-window-horiztonally,但这并没有改变布局。我想以交互方式执行此操作,我知道我可以在 .emacs 中将其设置为默认值,但在此阶段我不想这样做。

0 投票
1 回答
64 浏览

emacs - 是否可以默认启用 ediff 功能?

我经常使用 ediff-directories 来区分包含许多 c/c++ 文件的目录。每当我输入文件时,我总是使用“##”来忽略差异中的空白。

当我有很多文件要比较时,这会成为一个问题。有没有办法自动忽略空白?

0 投票
0 回答
176 浏览

emacs - Emacs的ediff模式是否支持同步点?

多年来,我一直在使用 Emacs 的 ediff 模式,我刚刚意识到,每当我需要同步点 (*) 来理解差异时,我都会退回到 Meld 或 KDiff3。

ediff中没有对同步点的支持吗?或者是否有支持此功能的 Emacs 的替代差异模式?

(*) 同步点允许您在选定位置手动对齐差异的两侧。然后独立计算两侧的第一和第二部分的差异。

0 投票
0 回答
37 浏览

emacs - 使用 EDIFF 时如何处理这种合并冲突情况,我们需要来自变体 A 和 B 的部分冲突

在某些情况下,我们需要下图中两个变体行中的部分代码。我们如何处理这种情况,EDIFF以便最终结果是

在此处输入图像描述