Correction et maintenance des hyperliens en mode organisation

15

Il s'agit d'une question en deux parties concernant la pourriture des liens .

  1. Le mode org fournit-il des fonctionnalités pour valider les hyperliens, en particulier les liens locaux? Cela pourrait être utilisé pour lutter contre la pourriture des liens après coup.

  2. Encore mieux, l'organisation fournit-elle des fonctionnalités de sorte que si je renomme un fichier en dired, il mettra à jour les fichiers affectés? Cela pourrait empêcher certains types de pourriture des liens avant qu'il ne se produise, au moins pour les fichiers locaux.

David J.
la source

Réponses:

6

Pour la partie 1, je n'ai rien trouvé de intégré. La fonction suivante fournira une liste de liens rompus dans le mini-tampon. Je l'ai testé sur quelques exemples simples, mais loin d'être exhaustifs.

(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"))))))
Tyler
la source
1
Pensez-vous que org-bracket-link-analytic-regexpcela aiderait à sélectionner les liens Org? On dirait qu'il a été créé pour des tâches comme celle-ci.
Constantine
@ Constantin oui, merci! Je n'en savais rien.
Tyler
Agréable. Deux idées complémentaires possibles: (1) ajouter du texte de marquage aux mauvais liens pour promouvoir la découverte via la recherche et / ou la mise en évidence; (2) signet les mauvais liens.
David J.
Idea (3) en fait un vérificateur de flycheck, et la mise en évidence dans le tampon sera effectuée pour vous.
Malabarba
Suggestions intéressantes. J'y creuserai quand le temps le permettra pendant les vacances.
Tyler
8

Depuis Org 9.0, vous pouvez exécuter la org-lintfonction qui, entre autres, vérifie les liens locaux rompus.

Lesser Spotted
la source
2

J'ai écrit un script Python https://github.com/cashTangoTangoCash/orgFixLinks qui tente de réparer les liens rompus vers les fichiers locaux, dans un ou plusieurs fichiers org sur un disque local dans le système d'exploitation Ubuntu. C'est certainement un script de ligne de commande amateur, mais cela pourrait valoir la peine de jouer avec. Il existe un wiki GitHub qui fournit un certain degré de documentation: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Veuillez vérifier les avertissements dans le fichier README.

Je suis désolé que ce script Python ne fasse pas partie d'Org, mais soit complètement séparé / autonome. J'espère que personne ne se soucie de ne pas répondre directement à la question du PO; Je pensais juste que quelqu'un pourrait aimer jouer avec le script Python.

NoHatToday84
la source