Виправлення та підтримання гіперпосилань в режимі org


15

Це питання з двох частин, пов'язане з гниттям посилань .

  1. Чи надає org-режим якусь функціональність для перевірки гіперпосилань, особливо локальних? Це може бути використане для боротьби з гниттям зв'язку після факту.

  2. Ще краще, чи забезпечує організація функціональність, так що якщо я перейменую файл у діброване, він оновить файли, які стосуються? Це може запобігти гниттю деяких посилань до того, як це станеться, принаймні для локальних файлів.

Відповіді:


6

У частині 1 я не знайшов нічого вбудованого. Наступна функція надаватиме список непрацюючих посилань у мінібуфері. Я перевірив це на кількох простих прикладах, але далеко не вичерпно.

(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
Як ви думаєте, org-bracket-link-analytic-regexpце допомогло б вибрати окремі посилання на Org? Здається, він був створений для таких завдань, як ця.
Костянтин

@Constantine так, дякую! Не знав про це.
Тайлер

Приємно. Дві можливі ідеї надбудови: (1) додати текст маркування до поганих посилань для сприяння виявленню за допомогою пошуку та / або виділення; (2) закладка поганих посилань.
Девід Дж.

Ідея (3) перетворити це на перевірку флеш-контролем, і виділення в буфері буде зроблено за вас.
Малабарба

Цікаві пропозиції. Я вкопаюсь у нього, коли дозволить час відпустки.
Тайлер

8

З Org 9.0 ви можете запустити org-lintфункцію, яка, серед іншого, перевіряє наявність зламаних локальних посилань.


2

Я написав сценарій Python https://github.com/cashTangoTangoCash/orgFixLinks, який намагається відновити непрацюючі посилання на локальні файли, в межах одного або декількох файлів org на локальному диску в ОС Ubuntu. Це, безумовно, аматорський сценарій командного рядка, але, можливо, варто пограти з ним. Існує вікі GitHub, яка надає ступінь документації: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Перевірте попередження у програмі README.

Мені шкода, що цей скрипт Python не є частиною Org, а повністю окремим / окремим. Я сподіваюся, що ніхто не турбується, що я не відповідаю на питання ОП безпосередньо; Я просто думав, що комусь може сподобатися грати із сценарієм Python.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.