我听说Ace提供了获取和修补差异的功能,但是我搜索了Ace的文档,尝试使用谷歌搜索,但无法找到如何做到这一点。
Ace是否提供了创建和修补正在编辑的文档的差异的功能?
根据我的研究,我认为这样做的方法是使用google-diff-match-patch库(https://code.google.com/p/google-diff-match-patch/)。但是我更喜欢使用Ace的内置机制,如果有的话。
答案 0 :(得分:3)
我们正在为我们正在开发的项目准确地选择这个选项,所以我为它创建了一个lib:http://ace-diff.github.io/ace-diff/ - 它建立在google-diff-match-patch之上,就像“用户”所说的那样,同样。
该网站包含一些演示,代码+ doc在github上。希望这有帮助!
答案 1 :(得分:1)
没有Ace没有提供修补差异的功能。你需要使用diff-match-patch,
例如,diff to values将patch应用于ace文档使用
var Range = require("ace/range").Range;
var dmplib = require("diff_match_patch");
var dmp = new dmplib.diff_match_patch();
var diff = dmp.diff_main(oldValue, newValue, true);
var offset = 0;
diff.forEach(function(chunk) {
var op = chunk[0];
var text = chunk[1];
if (op === 0) {
offset += text.length;
} else if (op === -1) {
doc.remove(Range.fromPoints(
doc.indexToPosition(offset),
doc.indexToPosition(offset + text.length)
));
} else if (op === 1) {
doc.insert(doc.indexToPosition(offset), text);
offset += text.length;
}
});
答案 2 :(得分:0)
我今天需要将差异的捕获和合并添加到一个项目中。完整的分屏库对于我的需求来说太过分了。
以下内容基于上面的a_user代码,但以简洁的语法编写:
plt.quiver(x,y,u,v,scale=10)