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.

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

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.