F: Wie verhindere ich, dass org-mode
Verknüpfungsflächen in die ...
selektiven Anzeigezeichen am Ende einer gefalteten Kopfzeile übergehen?
Dies ist eine visuelle Zecke, die mich ein wenig verrückt macht. Wenn org-mode
ein Link das allerletzte Element in einer Zeile ist, überläuft die Linkfläche die ...
, die angibt, dass der Header zusammengefaltet ist. Wenn beispielsweise nach dem Link eine Leerstelle vorhanden ist, tritt kein Ausbluten auf.
Der Screenshot, den ich gepostet habe, zeigt das Problem. Zeile drei ist die problematische Zeile ohne Zeichen zwischen dem Ende des Links und dem Ende der Zeile, während Zeile vier einen Link gefolgt von einem Leerzeichen anzeigt:
Zuallererst, warum passiert das? Zweitens und genauer gesagt, wie bringe ich es zum Stillstand?
UPDATE 1: Gemäß den Kommentaren unten sind Screenshots des Puffers mit geschlossenen und offenen Headern. Ich habe Emacs geöffnet ohne init - Datei (dh emacs -Q
), require
d org-Modus, und diese Beispieldatei geöffnet. Also: es scheint nicht verrückt in meinem Setup zu sein.
Alle Header geschlossen:
Alle Überschriften öffnen:
Das Thema, das ich oben verwendet habe, ist inkpot, obwohl ich das gleiche Problem habe, wenn ich das solarisierte Thema sowie das Standardthema (wie in den neuen Screenshots) verwende.
Emacs-Version ist 24.3.1. Ich erhalte die gleichen Ergebnisse, wenn ich die org-Version 7.9.3f (dh die mit dieser Emacs-Version mitgelieferte) sowie 8.3beta verwende.
UPDATE 2: Hier ist ein minimales Arbeitsbeispiel als Antwort auf eine Kommentaranfrage:
* here's a header with a [[~/somefile.txt][link at the end]]
- This one's a problem
- Interesting note:
+ put the cursor immediately *after* the *d* in "end" with the
header closed/folded
* the face no longer bleeds over into the dots
+ move the cursor anywhere else
* the face bleeds over into the dots again
* here's another [[~/someotherfile.txt][go at it]]
DEADLINE: <2014-10-26 Sun>
- This one's also a problem
* here's another header with a [[~/anotherfile.txt][link followed by a space]]
- No bleed-over onto the dots with this one
Antworten:
Dies sieht aus wie ein Fehler, der durch
org-mode
dieorg-activate-bracket-links
Funktion von ausgelöst wird .So sieht diese Funktion aus:
Es sucht nach einer Übereinstimmung für einen in Klammern gesetzten Link (z. B.
[[target][label]]
verbirgt das[[target][
Teil durch Hinzufügenip
zu den Texteigenschaften, verknüpft das dannlabel
durch Hinzufügenvp
zu den Texteigenschaften und entfernt schließlich das Nachziehen]]
durch erneutes Hinzufügen zu den Texteigenschaftenip
.Das sieht alles richtig aus.
org-rear-nonsticky-at
sollte sich um das Ausbluten von Eigentum kümmern.Ausgelöst wird dieses Verhalten durch
(add-text-properties (match-end 3) (match-end 0) ip)
, welches das Trailing verbirgt]]
. Nur die'invisible 'org-link
Eigenschaft löst dieses Verhalten aus, die anderen Eigenschaften scheinen unschuldig zu sein.Sie könnten überschreiben ,
org-activate-bracket-links
so dassip
nicht mehr Sätze'invisible
aber'display ""
, die die gleiche Wirkung hat:Dies ist eindeutig ein hässlicher Hack. Aber es funktioniert für mich und könnte für Sie arbeiten. Ich empfehle weiterhin, einen Fehlerbericht einzureichen.
quelle
[[~/somefile.txt][link label]]
alslink label
(wo kursiv die Standardfläche für den Link angeben), wird eslink label]]
(ohne Veränderung der Fläche). Ich werde einen Fehlerbericht einreichen.org-activate-bracket-links
ist das Ersetzen'invisible non-nil
durch'display ""
. Daher sollte die Verknüpfungsfläche weiterhin wie zuvor angewendet werden. In Emacs 24.4 funktioniert das sicherlich, aber ich denke, Energie wird besser für den Fehlerbericht aufgewendet, als dafür, dass mein Hack funktioniert ... :)