Ich muss Wortunterschiede einiger kleiner Zeichenfolgen anzeigen.
Das heißt, ich habe eine Liste von Paaren ähnlich der folgenden:
"aaa bbb ccc" . "aaa vv ccc"
"abcd ef ghkl" . "ghkl"
"a (u -> h)" . "(a -> g) (u -> h)"
In jedem Fall möchte ich geänderten oder hinzugefügten Text hervorheben. Ich kann dies mit vielen Aufrufen des Befehls diff tun, habe aber Angst vor den Kosten.
Gibt es Elisp-Bibliotheken, die ich für diesen Zweck verwenden könnte?
wdiff <(echo "abc def ghi" ) <(echo "abc ghi")
=>abc [-def-] ghi
. Dies hängt jedoch davon ab, ob wdiff und diffutils installiert sind. Dies hilft nicht, wenn Sie etwas für den allgemeinen Gebrauch unter Windows erstellen. Ich denke, Sie benötigen eine elisp-Lösung.Antworten:
Ich glaube nicht, dass es dafür eine Elisp-Lösung gibt. Aber wenn Sie sich ansehen, wie ich implementiert habe
smerge-refine-subst
(auch in verwendetdiff-refine-hunk
), sollte es Ihnen eine Vorstellung davon geben, wie Sie damit spielen könnendiff
.IOW Sie sollten in der Lage sein, einen einzelnen
diff
Prozess auszuführen , um alle Ihre Zeilen gleichzeitig zu verarbeiten, indem Sie sie verketten und dazwischen "Synchronisationszeilen" hinzufügen. Um zu vermeidendiff
, dass Zeilen eines Paares mit Zeilen eines anderen Paares übereinstimmen, sollten Sie wahrscheinlich vor jeder Zeile einen Text (der für jedes Paar eindeutig ist) voranstellen.quelle
diff-refine-hunk
? Ich könnte mit jedem Paar eine gefälschte Diff-Datei erstellen und dann bei jedem Paar refine-hunk aufrufen.smerge-refine-subst
(was intern verwendet wirddiff-refine-hunk
. Aber das führt einendiff
Prozess aus. Wenn Sie also einen einzelnen Diff für alle Paare ausführen möchten, müssen Sie Ihre Eingabe von Hand massieren.