Souligner les liens en mode organisation avec des descriptions multilignes?

8

Q: Comment puis-je arrêter de souligner à travers la "marge" gauche dans les liens qui s'étendent sur plusieurs lignes?

La face org-linkhérite de la face link, dont l'attribut de soulignement est défini sur t(ou du moins il le fait par défaut). D'ordinaire, c'est très bien. Cela devient moche, cependant, si la description du lien est suffisamment longue pour se dérouler sur plusieurs lignes, comme dans la capture d'écran suivante:

liens en mode organisation

La capture d'écran montre le soulignement s'étendant de la marge gauche jusqu'à l'indentation. C'est une tique visuelle assez moche. Est - il possible de maintenir des liens soulignant, et pourtant ne pas avoir le soulignement s'étendent de la marge de cette façon?

Dan
la source
1
Si vous trouvez une solution que vous aimez, alors partagez-la avec les responsables de l'organisation car elle finira probablement dans la ligne principale: orgmode.org/community.html
grettke

Réponses:

3

J'ai déjoué un peu avec org-activate-bracket-links. Je ne suis pas vraiment un expert en verrouillage de polices, j'ai donc seulement réussi à rendre la "^ +" partie du lien invisible:

(defun org-activate-bracket-links (limit)
  "Add text properties for bracketed links."
  (if (and (re-search-forward org-bracket-link-regexp limit t)
           (not (org-in-src-block-p)))
      (let* ((hl (org-match-string-no-properties 1))
             (help (concat "LINK: " (save-match-data (org-link-unescape hl))))
             (ip (org-maybe-intangible
                  (list 'invisible 'org-link
                        'keymap org-mouse-map 'mouse-face 'highlight
                        'font-lock-multiline t 'help-echo help
                        'htmlize-link `(:uri ,hl))))
             (vp (list 'keymap org-mouse-map 'mouse-face 'highlight
                       'font-lock-multiline t 'help-echo help
                       'htmlize-link `(:uri ,hl))))
        ;; We need to remove the invisible property here.  Table narrowing
        ;; may have made some of this invisible.
        (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
        (remove-text-properties (match-beginning 0) (match-end 0)
                                '(invisible nil))
        (if (match-end 3)
            (progn
              (add-text-properties (match-beginning 0) (match-beginning 3) ip)
              (org-rear-nonsticky-at (match-beginning 3))
              (add-text-properties (match-beginning 3) (match-end 3) vp)
              (org-rear-nonsticky-at (match-end 3))
              (add-text-properties (match-end 3) (match-end 0) ip)
              (org-rear-nonsticky-at (match-end 0))
              (let ((b3 (match-beginning 3))
                    (e3 (match-end 3)))
                (save-excursion
                  (save-match-data
                    (goto-char b3)
                    (while (re-search-forward "\\(?:^ +\\| +$\\)" e3 t)
                      (org-rear-nonsticky-at (match-beginning 0))
                      (add-text-properties (match-beginning 0)
                                           (match-end 0) ip)
                      (org-rear-nonsticky-at (match-end 0)))))))
          (add-text-properties (match-beginning 0) (match-beginning 1) ip)
          (org-rear-nonsticky-at (match-beginning 1))
          (add-text-properties (match-beginning 1) (match-end 1) vp)
          (org-rear-nonsticky-at (match-end 1))
          (add-text-properties (match-end 1) (match-end 0) ip)
          (org-rear-nonsticky-at (match-end 0)))
        t)))
abo-abo
la source
Merci pour la suggestion. Bien qu'il élimine le soulignement disgracieux de la marge de gauche, malheureusement, le texte de la deuxième ligne est désormais aligné sur la marge de gauche. Je vais essayer de fouiner un peu plus.
Dan