[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org e34d7781f0 01/17: org-element-entity-parser: Refact
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org e34d7781f0 01/17: org-element-entity-parser: Refactor entity regexp using `rx' |
Date: |
Thu, 19 Oct 2023 06:58:51 -0400 (EDT) |
branch: externals/org
commit e34d7781f038493112a15980f5b606006ebe26ff
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>
org-element-entity-parser: Refactor entity regexp using `rx'
* lisp/org-element.el (org-element-entity-parser): Rewrite entity
regexp using more readable `rx' form.
* testing/lisp/test-org-element.el (test-org-element/entity-parser):
Add new test cases for whitespace entities.
---
lisp/org-element.el | 12 +++++++++++-
testing/lisp/test-org-element.el | 15 +++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 5fd5b5d271..ca5a00e2dd 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -3466,7 +3466,17 @@ properties. Otherwise, return nil.
Assume point is at the beginning of the entity."
(catch 'no-object
- (when (looking-at "\\\\\\(?:\\(?1:_
+\\)\\|\\(?1:there4\\|sup[123]\\|frac[13][24]\\|[a-zA-Z]+\\)\\(?2:$\\|{}\\|[^[:alpha:]]\\)\\)")
+ (when (looking-at
+ (rx "\\"
+ (or
+ (group-n 1 (seq "_" (1+ " ")))
+ (seq
+ (group-n 1
+ (or "there4"
+ (seq "sup" (in "123"))
+ (seq "frac" (in "13") (in "24"))
+ (1+ (in "a-zA-Z"))))
+ (group-n 2 (or eol "{}" (not letter)))))))
(save-excursion
(let* ((value (or (org-entity-get (match-string 1))
(throw 'no-object nil)))
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index bcc2efbdb0..ade255ea09 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -1318,6 +1318,21 @@ CLOCK: [2023-10-13 Fri 14:40]--[2023-10-13 Fri 14:51] =>
0:11"
(should
(org-test-with-temp-text "\\sin"
(org-element-map (org-element-parse-buffer) 'entity 'identity)))
+ ;; Special case: space-based entities.
+ (should
+ (equal
+ "_ "
+ ;; Space after entity must be a part of its name.
+ (org-test-with-temp-text "\\_ Foo"
+ (org-element-property
+ :name
+ (car (org-element-map (org-element-parse-buffer) 'entity 'identity))))))
+ (should-not
+ ;; {} is not a part of whitespace entity name.
+ (org-test-with-temp-text "\\_ {}Foo"
+ (org-element-property
+ :bracketsp
+ (car (org-element-map (org-element-parse-buffer) 'entity 'identity)))))
;; With brackets.
(should
(org-element-property
- [elpa] externals/org updated (627097c7d3 -> 46a52a5708), ELPA Syncer, 2023/10/19
- [elpa] externals/org 3bffa96448 06/17: * lisp/ob-dot.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 936290fe18 07/17: * lisp/ob-emacs-lisp.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 312deaa13a 03/17: * lisp/ob-C.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org f0a2531bb4 10/17: * lisp/ob-latex.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 6887851401 11/17: * lisp/ob-lilypond.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org ab4ec726e5 13/17: * lisp/ob-org.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 13353f1fa3 16/17: org-fold-hide-drawer-all: Make interactive, ELPA Syncer, 2023/10/19
- [elpa] externals/org 733cb9614c 14/17: * lisp/ob-sqlite.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org b3c8a7c360 02/17: * lisp/org-element.el (org-element-entity-parser): Add comment, ELPA Syncer, 2023/10/19
- [elpa] externals/org e34d7781f0 01/17: org-element-entity-parser: Refactor entity regexp using `rx',
ELPA Syncer <=
- [elpa] externals/org be59f11435 05/17: * lisp/ob-calc.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 67bd4b0a36 08/17: * lisp/ob-fortran.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 1f0eaefa52 04/17: * lisp/ob-awk.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 92b69d4331 09/17: * lisp/ob-java.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org 320b0e5b1f 12/17: * lisp/ob-lisp.el: Add support for :prologue/:epilogue parameters, ELPA Syncer, 2023/10/19
- [elpa] externals/org c77e7f9c8a 15/17: * etc/ORG-NEWS (=UNNUMBERED= property ...): Add reference to the manual, ELPA Syncer, 2023/10/19
- [elpa] externals/org 46a52a5708 17/17: * lisp/ob-sqlite.el: Document all the function arguments, ELPA Syncer, 2023/10/19