So zeigen Sie einen Unterschied zwischen zwei Puffern mit Unterschieden auf Zeichenebene an

20

Wenn zwei Puffer auf Unterschiede verglichen werden, werden M-x ediff-buffersdie spezifischen Zeichen, die sich in einem Wort geändert haben (z. B. Unterschiede auf "Zeichenebene") , nicht angezeigt. Die meisten modernen Diff-Tools zeigen die Diffs in einem Wort an.

In Emacs scheint diese wichtige (oder offensichtlich nützliche?) Funktion standardmäßig zu fehlen. Wie kann ich Emacs dazu bringen, die Unterschiede nach Zeichen anzuzeigen?

Update Hier ist M-x ediff-buffers diff1 diff2, emacs -Qum sicherzustellen, dass mein Thema nicht stört: Bildbeschreibung hier eingeben

Hier ist derselbe Text, der in Meld eingefügt wurde: Bildbeschreibung hier eingeben

modulitos
quelle
Anscheinend hängt dieses Problem mit dem von Ihnen verwendeten Thema zusammen. In Vanille-Emacs (24.4) werden Unterschiede zwischen einzelnen Zeilen hervorgehoben. Sie können dies überprüfen , indem Sie Emacs starten über emacs -Qund ruft ediff-buffersauf diff1und diff2wie gewohnt.
itsjeyd
Ich habe versucht mit zu rennen emacs -Q, wie oben hinzugefügt. Außerdem habe ich meine Frage dahingehend geändert, dass Unterschiede auf Zeichenebene anstelle von Unterschieden innerhalb von Zeilen behandelt werden.
Modulitos

Antworten:

9
(setq-default ediff-forward-word-function 'forward-char)
Joakim Hårsman
quelle
6

Diese Funktion wird in Ediff als "Verfeinerung" bezeichnet. Sie können *drücken, um den aktuellen Block zu verfeinern, oder @um die automatische Verfeinerung zu aktivieren, wenn Sie zu einem anderen Block wechseln.

Legoscia
quelle
1
Ich habe meine Frage geändert, um die Unterschiede auf Zeichenebene anstelle der Unterschiede in der Zeile zu behandeln. Ist es möglich, Emacs die Unterschiede innerhalb eines Wortes anzeigen zu lassen?
Modulitos