[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [ANN] Changes to link syntax
From: |
Nicolas Goaziou |
Subject: |
Re: [O] [ANN] Changes to link syntax |
Date: |
Fri, 15 Mar 2019 12:55:02 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
stardiviner <address@hidden> 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)))))))))))
- Re: [O] [ANN] Changes to link syntax, (continued)