stardiviner <numbch...@gmail.com> writes: > Hi, @Nicolas, will you release a method to update all existing Org > file links?
On second though, you may want to test the following: (defun org-update-link-syntax () "Update syntax for links in current buffer." (org-with-point-at 1 (let ((case-fold-search t)) (while (re-search-forward "\\[\\[[^]]*?%\\(?:2[05]\\|5[BD]\\)" nil t) (let ((object (save-match-data (org-element-context)))) (when (and (eq 'link (org-element-type object)) (= (match-beginning 0) (org-element-property :begin object))) (goto-char (org-element-property :end object)) (let* ((uri-start (+ 2 (match-beginning 0))) (uri-end (save-excursion (goto-char uri-start) (re-search-forward "\\][][]" nil t) (match-beginning 0))) (uri (buffer-substring-no-properties uri-start uri-end)) (start 0)) (when (catch :obsolete (while (string-match "%\\(..\\)?" uri start) (setq start (match-end 0)) (unless (member (match-string 1 uri) '("25" "5B" "5D" "20")) (throw :obsolete nil))) (y-or-n-p (format "Possibly obsolete URI syntax: %S. Update?" uri))) (setf (buffer-substring uri-start uri-end) (org-link-escape (org-link-decode uri)))))))))))