From 0b81f2d4cc9f6dd5f8d38f9a6550387c93b15435 Mon Sep 17 00:00:00 2001 Message-Id: <0b81f2d4cc9f6dd5f8d38f9a6550387c93b15435.1667546163.git.yantar92@posteo.net> From: Ihor Radchenko Date: Fri, 4 Nov 2022 15:14:44 +0800 Subject: [PATCH] org: Allow spaces in #+LINK abbreviation definitions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lisp/org.el (org-set-regexps-and-options): Allow spaces when defining link abbreviations via #+LINK keyword. * testing/lisp/test-org-element.el (test-org-element/link-parser): Add a new test. * doc/org-manual.org (Link Abbreviations): Add example demonstrating link abbreviation with spaces. Reported-by: Rudolf Adamkovič Link: https://orgmode.org/list/87zgf7zujc.fsf@localhost --- doc/org-manual.org | 3 +++ lisp/org.el | 6 +++++- testing/lisp/test-org-element.el | 9 +++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index dc2fc57cd..47710466a 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -3652,8 +3652,11 @@ ** Link Abbreviations #+begin_example ,#+LINK: bugzilla https://10.1.2.9/bugzilla/show_bug.cgi?id= ,#+LINK: duckduckgo https://duckduckgo.com/?q=%s +,#+LINK: "Nu Html Checker" https://validator.w3.org/nu/?doc=%h #+end_example +The abbreviations containing spaces must be quoted. + In-buffer completion (see [[*Completion]]) can be used after =[= to complete link abbreviations. You may also define a Lisp function that implements special (e.g., completion) support for inserting such a diff --git a/lisp/org.el b/lisp/org.el index d8708f8f2..0036b189a 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -4184,7 +4184,11 @@ (defun org-set-regexps-and-options (&optional tags-only) (delq nil (mapcar (lambda (value) - (and (string-match "\\`\\(\\S-+\\)[ \t]+\\(.+\\)" value) + (and (or + ;; "abbrev with spaces" spec + (string-match "\\`\"\\(.+[^\\]\\)\"[ \t]+\\(.+\\)" value) + ;; abbrev spec + (string-match "\\`\\(\\S-+\\)[ \t]+\\(.+\\)" value)) (cons (match-string-no-properties 1 value) (match-string-no-properties 2 value)))) (cdr (assoc "LINK" alist)))))) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index eb5b95e86..78a735efe 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -2007,6 +2007,15 @@ (ert-deftest test-org-element/link-parser () (progn (org-mode-restart) (goto-char (1- (point-max))) (org-element-property :type (org-element-context)))))) + ;; Link abbreviation with spaces. + (should + (equal "https" + (org-test-with-temp-text + "#+LINK: \"Nu Html Checker\" https://validator.w3.org/nu/?doc=%h + [[Nu Html Checker:test]]" + (progn (org-mode-restart) + (goto-char (1- (point-max))) + (org-element-property :type (org-element-context)))))) ;; Link abbreviation in a secondary string. (should (equal "https" -- 2.35.1