emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals-release/org bafeaf161c: element: Fix parsing of inline


From: ELPA Syncer
Subject: [elpa] externals-release/org bafeaf161c: element: Fix parsing of inline footnotes
Date: Mon, 28 Feb 2022 09:57:42 -0500 (EST)

branch: externals-release/org
commit bafeaf161c2253510b6b759f6400cffa1198e48b
Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Commit: Nicolas Goaziou <mail@nicolasgoaziou.fr>

    element: Fix parsing of inline footnotes
    
    * lisp/org-element.el (org-element--pair-round-table):
    (org-element--pair-square-table):
    (org-element--pair-curly-table): De-activate all but one pair of
    parenthesis.
    * testing/lisp/test-org-element.el 
(test-org-element/footnote-reference-parser):
    Add test.
    
    Reported-by: Greg Minshall <minshall@umich.edu>
    <http://lists.gnu.org/r/emacs-orgmode/2022-02/msg00369.html>
---
 lisp/org-element.el              | 24 +++++++++---------------
 testing/lisp/test-org-element.el |  9 +++++++++
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index 7952786607..9db1406b3f 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -396,31 +396,25 @@ still has an entry since one of its properties (`:title') 
does.")
   "Alist between element types and locations of secondary values.")
 
 (defconst org-element--pair-round-table
-  (let ((table (make-syntax-table)))
+  (let ((table (make-char-table 'syntax-table '(2))))
     (modify-syntax-entry ?\( "()" table)
     (modify-syntax-entry ?\) ")(" table)
-    (dolist (char '(?\{ ?\} ?\[ ?\] ?\< ?\>) table)
-      (modify-syntax-entry char " " table)))
-  "Table used internally to pair only round brackets.
-Other brackets are treated as spaces.")
+    table)
+  "Table used internally to pair only round brackets.")
 
 (defconst org-element--pair-square-table
-  (let ((table (make-syntax-table)))
+  (let ((table (make-char-table 'syntax-table '(2))))
     (modify-syntax-entry ?\[ "(]" table)
     (modify-syntax-entry ?\] ")[" table)
-    (dolist (char '(?\{ ?\} ?\( ?\) ?\< ?\>) table)
-      (modify-syntax-entry char " " table)))
-  "Table used internally to pair only square brackets.
-Other brackets are treated as spaces.")
+    table)
+  "Table used internally to pair only square brackets.")
 
 (defconst org-element--pair-curly-table
-  (let ((table (make-syntax-table)))
+  (let ((table (make-char-table 'syntax-table '(2))))
     (modify-syntax-entry ?\{ "(}" table)
     (modify-syntax-entry ?\} "){" table)
-    (dolist (char '(?\[ ?\] ?\( ?\) ?\< ?\>) table)
-      (modify-syntax-entry char " " table)))
-  "Table used internally to pair only curly brackets.
-Other brackets are treated as spaces.")
+    table)
+  "Table used internally to pair only curly brackets.")
 
 (defun org-element--parse-paired-brackets (char)
   "Parse paired brackets at point.
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index ea9f97a64b..06bbf7a019 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -1161,6 +1161,15 @@ Some other text
    (org-test-with-temp-text "Text[fn::def]"
      (org-element-map
         (org-element-parse-buffer) 'footnote-reference 'identity)))
+  ;; Parse inline references with syntax loaded characters.
+  (should
+   (eq 'footnote-reference
+       (org-test-with-temp-text "Text[fn<point>::(def]"
+         (org-element-type (org-element-context)))))
+  (should
+   (eq 'footnote-reference
+       (org-test-with-temp-text "Text[fn<point>::\"def]"
+         (org-element-type (org-element-context)))))
   ;; Parse nested footnotes.
   (should
    (= 2



reply via email to

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