[Top][All Lists]

[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)))
                         (format "Possibly obsolete URI syntax: %S.  Update?"
                  (setf (buffer-substring uri-start uri-end)
                        (org-link-escape (org-link-decode uri)))))))))))

reply via email to

[Prev in Thread] Current Thread [Next in Thread]