Memperbaiki dan mempertahankan hyperlink mode-org

15

Ini adalah pertanyaan dua bagian yang berkaitan dengan tautan busuk .

  1. Apakah mode-org menyediakan fungsionalitas apa pun untuk memvalidasi tautan, terutama tautan lokal? Ini bisa digunakan untuk memerangi tautan yang membusuk setelah fakta.

  2. Lebih baik lagi, apakah org menyediakan fungsionalitas sehingga jika saya mengganti nama file dalam dired, itu akan memperbarui file yang terpengaruh? Ini dapat mencegah beberapa jenis tautan busuk sebelum terjadi, setidaknya untuk file lokal.

David J.
sumber

Jawaban:

6

Untuk bagian 1, saya tidak menemukan apa pun bawaan. Fungsi berikut akan memberikan daftar tautan yang terputus di minibuffer. Saya sudah mengujinya pada beberapa contoh sederhana, tetapi jauh dari lengkap.

(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
sumber
1
Apakah Anda pikir org-bracket-link-analytic-regexpakan membantu memisahkan tautan Org? Sepertinya itu dibuat untuk tugas seperti ini.
Constantine
@Constantine ya, terima kasih! Tidak tahu tentang itu.
Tyler
Bagus. Dua kemungkinan ide tambahan: (1) menambahkan beberapa teks penanda ke tautan buruk untuk mempromosikan penemuan melalui pencarian dan / atau penyorotan; (2) bookmark tautan yang buruk.
David J.
Ide (3) menjadikan ini sebagai pemeriksa lalat terbang, dan penyorotan in-buffer akan dilakukan untuk Anda.
Malabarba
Saran yang menarik. Saya akan menggali ketika waktu memungkinkan selama liburan.
Tyler
8

Sejak Org 9.0 Anda dapat menjalankan org-lintfungsi yang, antara lain, memeriksa tautan lokal yang rusak.

Terlihat Lebih Rendah
sumber
2

Saya menulis skrip Python https://github.com/cashTangoTangoCash/orgFixLinks yang berupaya memperbaiki tautan yang rusak ke file lokal, dalam satu atau lebih file org pada drive lokal di OS Ubuntu. Ini tentu saja merupakan skrip baris perintah amatir, tetapi mungkin layak untuk dimainkan. Ada wiki GitHub yang menyediakan tingkat dokumentasi: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Silakan periksa peringatan di README.

Maaf, skrip Python ini bukan bagian dari Org, tetapi sepenuhnya terpisah / berdiri sendiri. Saya harap tidak ada yang terganggu karena saya tidak menjawab pertanyaan OP secara langsung; Saya hanya berpikir seseorang mungkin suka bermain dengan skrip Python.

NoHatToday84
sumber