Correzione e manutenzione dei collegamenti ipertestuali in modalità organizzazione


15

Questa è una domanda in due parti che ha a che fare con il marciume dei link .

  1. La modalità org fornisce funzionalità per la convalida dei collegamenti ipertestuali, in particolare quelli locali? Questo potrebbe essere usato per combattere il marciume dei link dopo il fatto.

  2. Ancora meglio, l'organizzazione fornisce funzionalità in modo che se rinominare un file in dired, aggiornerà i file interessati? Ciò potrebbe impedire alcuni tipi di marcescenza dei collegamenti prima che accada, almeno per i file locali.

Risposte:


6

Per la parte 1, non ho trovato nulla incorporato. La seguente funzione fornirà un elenco di collegamenti interrotti nel minibuffer. L'ho provato su alcuni semplici esempi, ma lungi dall'essere esaustivo.

(defun check-bit-rot ()
  "Searches current buffer for file: links, and reports the broken ones."
  (interactive)
  (save-excursion
    (beginning-of-buffer)
    (let (file-links)
      (while (re-search-forward org-bracket-link-analytic-regexp nil t)
        (if (string= "file:" (match-string-no-properties 1))
            (if (not (file-exists-p (match-string-no-properties 3)))
                (setq file-links
                      (cons (match-string-no-properties 0)
                            file-links)))))
      (message
       (concat "Warning: broken links in this file:\n"
               (mapconcat #'identity file-links "\n"))))))

1
Pensi che org-bracket-link-analytic-regexpaiuterebbe a separare i collegamenti Org? Sembra che sia stato creato per attività come questa.
Costantino,

@Constantine sì, grazie! Non lo sapevo.
Tyler,

Bello. Due possibili idee aggiuntive: (1) aggiungere del testo di marcatura a collegamenti errati per promuovere la scoperta tramite la ricerca e / o l'evidenziazione; (2) aggiungi ai segnalibri i link errati.
David J.

Idea (3) lo trasforma in un controllo a flycheck e l'evidenziazione nel buffer verrà eseguita per te.
Malabarba,

Suggerimenti interessanti. Ci proverò quando il tempo lo permetterà durante le vacanze.
Tyler,

8

Da Org 9.0 è possibile eseguire la org-lintfunzione che, tra le altre cose, verifica la presenza di collegamenti locali interrotti.


2

Ho scritto uno script Python https://github.com/cashTangoTangoCash/orgFixLinks che tenta di riparare collegamenti interrotti a file locali, all'interno di uno o più file dell'organizzazione su un'unità locale nel sistema operativo Ubuntu. È certamente uno script da riga di comando amatoriale, ma potrebbe valere la pena giocarci. Esiste un wiki GitHub che fornisce un certo grado di documentazione: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Si prega di controllare le avvertenze nel file README.

Mi dispiace che questo script Python non faccia parte di Org, ma sia completamente separato / autonomo. Spero che nessuno si preoccupi di non rispondere direttamente alla domanda del PO; Ho pensato che a qualcuno potesse piacere giocare con la sceneggiatura di Python.

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.