Browse Source

org-element: Be more strict when looking for table.el tables

* lisp/org-element.el (org-element--current-element): Increase number
  of checks to avoid more false positive.

In particular "+-+" is not recognized anymore as a table.el table.
Nicolas Goaziou 1 year ago
parent
commit
d228909d15
1 changed files with 12 additions and 1 deletions
  1. 12 1
      lisp/org-element.el

+ 12 - 1
lisp/org-element.el

@@ -3912,7 +3912,18 @@ element it has to parse."
 	     ((looking-at "%%(")
 	      (org-element-diary-sexp-parser limit affiliated))
 	     ;; Table.
-	     ((looking-at "[ \t]*\\(|\\|\\+\\(-+\\+\\)+[ \t]*$\\)")
+	     ((or (looking-at "[ \t]*|")
+		  ;; There is no strict definition of a table.el
+		  ;; table.  Try to prevent false positive while being
+		  ;; quick.
+		  (let ((rule-regexp "[ \t]*\\+\\(-+\\+\\)+[ \t]*$")
+			(next (line-beginning-position 2)))
+		    (and (looking-at rule-regexp)
+			 (save-excursion
+			   (forward-line)
+			   (re-search-forward "^[ \t]*\\($\\|[^|]\\)" limit t)
+			   (and (> (line-beginning-position) next)
+				(org-match-line rule-regexp))))))
 	      (org-element-table-parser limit affiliated))
 	     ;; List.
 	     ((looking-at (org-item-re))