Korrigieren und Pflegen von Hyperlinks im Organisationsmodus

15

Dies ist eine zweiteilige Frage, die mit Link Rot zu tun hat .

  1. Bietet der Organisationsmodus Funktionen zum Überprüfen von Hyperlinks, insbesondere von lokalen? Dies könnte verwendet werden, um Link Rot nachträglich zu bekämpfen.

  2. Besser noch: Bietet org Funktionen, mit denen beim Umbenennen einer Datei in dired die betroffenen Dateien aktualisiert werden? Dies könnte verhindern, dass einige Arten von Links verrotten, zumindest für lokale Dateien.

David J.
quelle

Antworten:

6

Für Teil 1 habe ich nichts eingebaut gefunden. Die folgende Funktion liefert eine Liste defekter Links im Minipuffer. Ich habe es an einfachen Beispielen getestet, aber alles andere als erschöpfend.

(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
quelle
1
Glaubst du, org-bracket-link-analytic-regexpwürde es helfen, Org-Links auseinander zu nehmen? Es scheint, als ob es für Aufgaben wie diese erstellt wurde.
Konstantin
@Constantine ja, danke! Wusste nichts davon.
Tyler
Nett. Zwei mögliche Add-On-Ideen: (1) Hinzufügen von Markierungstext zu fehlerhaften Links, um die Entdeckung durch Suchen und / oder Hervorheben zu fördern; (2) Setzen Sie ein Lesezeichen für die fehlerhaften Links.
David J.
Idea (3) verwandelt dies in einen Flycheck-Checker, und die Hervorhebung im Puffer wird für Sie durchgeführt.
Malabarba
Interessante Vorschläge. Ich werde mich damit befassen, wenn es die Zeit im Urlaub erlaubt.
Tyler
8

Seit Org 9.0 können Sie die org-lintFunktion ausführen , die unter anderem nach fehlerhaften lokalen Links sucht.

Kleiner beschmutzt
quelle
2

Ich habe ein Python-Skript https://github.com/cashTangoTangoCash/orgFixLinks geschrieben , das versucht, fehlerhafte Links zu lokalen Dateien in einer oder mehreren Organisationsdateien auf einem lokalen Laufwerk des Ubuntu-Betriebssystems zu reparieren. Es ist sicherlich ein Amateur-Befehlszeilenskript, aber es könnte sich lohnen, damit zu spielen. Es gibt ein GitHub-Wiki mit einer Reihe von Dokumentationen: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Bitte überprüfen Sie die Warnungen in der README.

Es tut mir leid, dass dieses Python-Skript nicht Teil von Org ist, sondern vollständig separat / eigenständig. Ich hoffe, es stört niemanden, dass ich die Frage des OP nicht direkt beantworte. Ich dachte nur, jemand könnte gerne mit dem Python-Skript spielen.

NoHatToday84
quelle