Korygowanie i utrzymywanie hiperłączy w trybie org

15

Jest to dwuczęściowe pytanie dotyczące gnicia linków .

  1. Czy tryb org zapewnia jakąkolwiek funkcjonalność do sprawdzania poprawności hiperłączy, szczególnie lokalnych? Można to wykorzystać do zwalczania zgnilizny linków po fakcie.

  2. Co więcej, czy org zapewnia funkcjonalność, więc jeśli zmienię nazwę pliku na dired, zaktualizuje on pliki, których dotyczy problem? Może to zapobiec gniciu linków zanim to nastąpi, przynajmniej w przypadku plików lokalnych.

David J.
źródło

Odpowiedzi:

6

W części 1 nie znalazłem niczego wbudowanego. Poniższa funkcja zapewni listę uszkodzonych łączy w minibuforze. Przetestowałem to na kilku prostych przykładach, ale wcale nie wyczerpujących.

(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
źródło
1
Czy uważasz, org-bracket-link-analytic-regexpże pomogłoby to rozdzielić linki organizacji? Wygląda na to, że został stworzony dla zadań takich jak ten.
Constantine
@ Constantine tak, dzięki! Nie wiedziałem o tym.
Tyler
Ładny. Dwa możliwe pomysły na dodatki: (1) dodaj tekst oznaczający do złych linków, aby promować odkrywanie poprzez wyszukiwanie i / lub wyróżnianie; (2) dodaj do zakładek złe linki.
David J.
Pomysł (3) przekształca to w sprawdzanie flycheck, a podświetlanie w buforze zostanie wykonane za Ciebie.
Malabarba
Ciekawe propozycje Wkopię się w to, kiedy czas pozwoli na wakacje.
Tyler,
8

Od wersji 9.0 możesz uruchomić org-lintfunkcję, która między innymi sprawdza, czy nie ma uszkodzonych łączy lokalnych.

Lesser Spotted
źródło
2

Napisałem skrypt w języku Python https://github.com/cashTangoTangoCash/orgFixLinks, który próbuje naprawić uszkodzone łącza do plików lokalnych, w ramach jednego lub więcej plików org na lokalnym dysku w systemie Ubuntu. Jest to z pewnością amatorski skrypt wiersza poleceń, ale warto się nim bawić. Istnieje wiki GitHub, która zapewnia pewien stopień dokumentacji: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Sprawdź ostrzeżenia w README.

Przykro mi, że ten skrypt w języku Python nie jest częścią organizacji, ale jest całkowicie osobny / samodzielny. Mam nadzieję, że nikomu nie przeszkadza, że ​​nie odpowiadam bezpośrednio na pytanie PO; Pomyślałem, że ktoś może lubić bawić się skryptem Python.

NoHatToday84
źródło