Sublinhado nos links do modo organizacional com descrições de várias linhas?

8

P: Como posso parar de sublinhar na "margem" esquerda em links que se estendem por mais de uma linha?

A face org-linkherda da face link, que tem o atributo de sublinhado definido como t(ou pelo menos por padrão). Normalmente, tudo está bem. Fica feio, no entanto, se a descrição do link for suficientemente longa para ser agrupada em mais de uma linha, como na captura de tela a seguir:

links de modo organizacional

A captura de tela mostra o sublinhado que se estende da margem esquerda até o recuo. É uma marca visual bastante feia. Existe alguma maneira de manter o sublinhado de links e ainda assim o sublinhado não se estender da margem dessa maneira?

Dan
fonte
1
Se você encontrar uma solução que você gosta, então por favor partilhe-a com os mantenedores org porque ele provavelmente vai acabar na linha principal: orgmode.org/community.html
grettke

Respostas:

3

Eu brinquei um pouco com isso org-activate-bracket-links. Como não sou especialista em bloqueio de fontes, só consegui tornar "^ +" invisível a parte do link:

(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
fonte
Obrigado pela sugestão. Embora elimine o sublinhado desagradável da margem esquerda, infelizmente, o texto da segunda linha agora está nivelado na margem esquerda. Vou tentar bisbilhotar um pouco mais.
Dan