Corrigindo e mantendo hiperlinks no modo organizacional


15

Esta é uma pergunta em duas partes relacionada à podridão do link .

  1. O modo org fornece alguma funcionalidade para validar hiperlinks, especialmente os locais? Isso poderia ser usado para combater o apodrecimento do link após o fato.

  2. Melhor ainda, a organização fornece funcionalidade para que, se eu renomear um arquivo em dired, ele atualize os arquivos afetados? Isso pode impedir que alguns tipos de link apodreçam antes que aconteça, pelo menos para arquivos locais.

Respostas:


6

Para a parte 1, não encontrei nada embutido. A função a seguir fornecerá uma lista de links quebrados no minibuffer. Eu testei em alguns exemplos simples, mas longe de ser exaustivo.

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

11
Você acha org-bracket-link-analytic-regexpque ajudaria a separar os links da organização? Parece que foi criado para tarefas como esta.
Constantine

@ Constantino sim, obrigado! Não sabia sobre isso.
Tyler

Agradável. Duas idéias adicionais possíveis: (1) adicione algum texto de marcação a links incorretos para promover a descoberta por meio de pesquisa e / ou destaque; (2) adicione os links incorretos aos favoritos.
David J.

A idéia (3) transforma isso em um verificador flycheck, e o destaque no buffer será feito para você.
Malabarba

Sugestões interessantes. Vou investigar quando o tempo permitir durante o feriado.
Tyler

8

Desde a Org 9.0, você pode executar a org-lintfunção que, entre outras coisas, verifica se há links locais corrompidos.


2

Eu escrevi um script Python https://github.com/cashTangoTangoCash/orgFixLinks que tenta reparar links quebrados para arquivos locais, em um ou mais arquivos organizacionais em uma unidade local no sistema operacional Ubuntu. Certamente, é um script de linha de comando amador, mas pode valer a pena brincar. Existe um wiki do GitHub que fornece um certo nível de documentação: https://github.com/cashTangoTangoCash/orgFixLinks/wiki . Por favor, verifique os avisos no README.

Sinto muito que este script Python não faça parte da organização, mas completamente separado / independente. Espero que ninguém se incomode por não responder diretamente à pergunta do OP; Eu apenas pensei que alguém poderia gostar de brincar com o script Python.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.