Sottolineando in collegamenti in modalità org con descrizioni multilinea?


8

Q: Come posso smettere di sottolineare attraverso il "margine" sinistro nei collegamenti che si estendono su più di una riga?

La faccia org-linkeredita dalla faccia link, che ha l'attributo sottolineato impostato su t(o almeno lo fa di default). Di solito, va tutto bene. Diventa brutto, tuttavia, se la descrizione del collegamento è sufficientemente lunga da essere racchiusa in più di una riga, come nel seguente screenshot:

collegamenti in modalità org

Lo screenshot mostra la sottolineatura che si estende dal margine sinistro fino al rientro. È un brutto segno di spunta visivo. Esiste un modo per mantenere la sottolineatura per i link, ma non hanno la sottolineatura si estende dal margine in questo modo?


1
Se trovi una soluzione che ti piace, ti preghiamo di condividerla con i manutentori dell'organizzazione
grettke,

Risposte:


3

Ho fatto un po 'casino org-activate-bracket-links. Non sono davvero un esperto nel blocco dei caratteri, quindi sono riuscito a rendere "^ +" invisibile solo la parte del collegamento:

(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)))

Grazie per il suggerimento Sebbene elimini la sgradevole sottolineatura dal margine sinistro, sfortunatamente, il testo della seconda riga ora è invece allineato al margine sinistro. Proverò a frugare ancora un po '.
Dan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.