Q: Comment empêcher les org-mode
faces de lien de déborder dans les ...
caractères d'affichage sélectif à la fin d'un en-tête plié?
C'est une tique visuelle qui me rend un peu fou. Lorsque, dans org-mode
, un lien est la toute dernière chose sur une ligne, la face du lien déborde dans le ...
qui indique que l'en-tête est replié. S'il y a, disons, un espace vide après le lien, il n'y a pas de saignement.
La capture d'écran que j'ai publiée montre le problème. La ligne trois est la ligne problématique sans caractère entre la fin du lien et la fin de la ligne, tandis que la ligne quatre montre un lien, suivi d'un espace:
Tout d'abord, pourquoi cela se produit-il? Deuxièmement, et plus précisément, comment puis-je l'arrêter?
MISE À JOUR 1: Selon les commentaires, les captures d'écran du tampon sont affichées ci-dessous avec les en-têtes fermés et ouverts. J'ai ouvert Emacs sans fichier init (c'est-à-dire, emacs -Q
), require
d org-mode, et ouvert cet exemple de fichier. Donc: cela ne semble pas être quelque chose de bizarre dans ma configuration.
Tous les en-têtes fermés:
Tous les en-têtes ouverts:
Le thème que j'avais utilisé ci-dessus est encrier, bien que j'obtienne le même problème lors de l'utilisation du thème solarisé ainsi que du thème par défaut (comme dans les nouvelles captures d'écran).
La version d'Emacs est 24.3.1. J'obtiens les mêmes résultats lorsque j'utilise la version 7.9.3f de l'organisation (c'est-à-dire celle fournie avec cette version d'Emacs), ainsi que la version 8.3beta.
MISE À JOUR 2: voici un exemple de travail minimum en réponse à une demande de commentaire:
* 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
Réponses:
Cela ressemble à un bug déclenché par
org-mode
laorg-activate-bracket-links
fonction de.Voici à quoi ressemble cette fonction:
Il recherche une correspondance pour un lien entre crochets (par exemple
[[target][label]]
, masque la[[target][
partie en l'ajoutantip
aux propriétés du texte, puis le relie en l'label
ajoutantvp
aux propriétés du texte, et enfin supprime la fin]]
en ajoutantip
à nouveau aux propriétés du texte.Tout semble correct.
org-rear-nonsticky-at
devrait prendre soin des saignements de la propriété.Ce comportement est déclenché par
(add-text-properties (match-end 3) (match-end 0) ip)
, qui masque la fin]]
. Seule la'invisible 'org-link
propriété déclenche ce comportement, les autres propriétés semblent innocentes.Vous pouvez écraser de
org-activate-bracket-links
telle sorte queip
ne définit plus'invisible
mais'display ""
, ce qui a le même effet:De toute évidence, c'est un hack laid. Mais cela fonctionne pour moi et pourrait fonctionner pour vous. Je recommande toujours de déposer un rapport de bogue.
la source
[[~/somefile.txt][link label]]
commelink label
(où l'italique indique le visage standard pour le lien), il devientlink label]]
(sans changement de visage). Je déposerai un rapport de bogue.org-activate-bracket-links
remplace'invisible non-nil
par'display ""
, il devrait donc toujours appliquer la face du lien comme précédemment. Cela fonctionne certainement pour moi dans Emacs 24.4, mais je suppose que l'énergie est mieux dépensée pour le rapport de bogue plutôt que d'essayer de faire fonctionner mon hack ... :)