From 12272f1ea89c169dcbece009c3a227e354019366 Mon Sep 17 00:00:00 2001 Message-Id: <12272f1ea89c169dcbece009c3a227e354019366.1640961654.git.yantar92@gmail.com> From: Ihor Radchenko Date: Fri, 31 Dec 2021 22:39:03 +0800 Subject: [PATCH] Fix underline parser inside parenthesis * lisp/org-element.el (org-element--object-lex): prioritise underline parser over subscript. `org-element-underline-parser' is more strict compared to `org-element-subscript-parser'. * testing/lisp/test-org-element.el (test-org-element/underline-parser): Add test. Fixes https://list.orgmode.org/87v8z52eom.fsf@posteo.net/T/#t --- lisp/org-element.el | 8 ++++---- testing/lisp/test-org-element.el | 11 ++++++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index 45ddc79b7..c9d1d80bb 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -4850,10 +4850,10 @@ (defun org-element--object-lex (restriction) (pcase (char-after) (?^ (and (memq 'superscript restriction) (org-element-superscript-parser))) - (?_ (or (and (memq 'subscript restriction) - (org-element-subscript-parser)) - (and (memq 'underline restriction) - (org-element-underline-parser)))) + (?_ (or (and (memq 'underline restriction) + (org-element-underline-parser)) + (and (memq 'subscript restriction) + (org-element-subscript-parser)))) (?* (and (memq 'bold restriction) (org-element-bold-parser))) (?/ (and (memq 'italic restriction) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index 338204eab..b58d71c8c 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -2661,7 +2661,16 @@ (ert-deftest test-org-element/underline-parser () (org-test-with-temp-text "_first line\nsecond line_" (org-element-map (org-element-parse-buffer) 'underline #'identity nil t))) - '("first line\nsecond line")))) + '("first line\nsecond line"))) + ;; Starting after non-blank + (should + (eq 'underline + (org-test-with-temp-text "(_underline_)" + (org-element-type (org-element-context))))) + (should-not + (eq 'underline + (org-test-with-temp-text "x_underline_)" + (org-element-type (org-element-context)))))) ;;;; Verbatim -- 2.32.0