Corrección y mantenimiento de hipervínculos en modo org.

15

Esta es una pregunta de dos partes que tiene que ver con la rotura de enlaces .

  1. ¿Org-mode proporciona alguna funcionalidad para validar hipervínculos, especialmente los locales? Esto podría usarse para combatir la pudrición del enlace después del hecho.

  2. Aún mejor, ¿la organización proporciona funcionalidad para que si cambio el nombre de un archivo en dired, actualice los archivos afectados? Esto podría evitar algunos tipos de pudrición de enlaces antes de que ocurra, al menos para archivos locales.

David J.
fuente

Respuestas:

6

Para la parte 1, no encontré nada incorporado. La siguiente función proporcionará una lista de enlaces rotos en el minibúfer. Lo he probado en algunos ejemplos simples, pero lejos de ser exhaustivo.

(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
fuente
1
¿Crees org-bracket-link-analytic-regexpque ayudaría a separar los enlaces de Org? Parece que fue creado para tareas como esta.
Constantine
@Constantine sí, gracias! No sabía sobre eso.
Tyler
Agradable. Dos posibles ideas complementarias: (1) agregar texto marcado a enlaces malos para promover el descubrimiento a través de la búsqueda y / o resaltado; (2) marcar los enlaces malos.
David J.
La idea (3) convierte esto en un comprobador de verificación de vuelo, y el resaltado en el búfer se hará por usted.
Malabarba
Sugerencias interesantes Lo investigaré cuando el tiempo lo permita durante las vacaciones.
Tyler
8

Desde Org 9.0 puede ejecutar la org-lintfunción que, entre otras cosas, busca enlaces locales rotos.

Menor manchado
fuente
2

Escribí un script de Python https://github.com/cashTangoTangoCash/orgFixLinks que intenta reparar enlaces rotos a archivos locales, dentro de uno o más archivos de organización en una unidad local en el sistema operativo Ubuntu. Ciertamente es un script de línea de comando amateur, pero podría valer la pena jugarlo. Hay un wiki de GitHub que proporciona un grado de documentación: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Por favor, consulte las advertencias en el archivo README.

Lamento que este script de Python no sea parte de Org, sino que esté completamente separado / independiente. Espero que a nadie le moleste que no estoy respondiendo la pregunta del OP directamente; Solo pensé que a alguien le gustaría jugar con el script de Python.

NoHatToday84
fuente