[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [RFC] Alternative to sub/superscript regexp
From: |
Nicolas Goaziou |
Subject: |
Re: [O] [RFC] Alternative to sub/superscript regexp |
Date: |
Wed, 18 Dec 2013 23:13:22 +0100 |
Completing myself,
> OTOH, while we're at it, I wonder if we should keep grouping with
> parenthesis. I guess that if you want to use parenthesis, you're going
> to need math mode anyway, so there's no real need to make it easy to
> type, e.g. :
>
> x^(2-i)
>
> which will become x$^\text{(2-i)}$ anyway.
I attach the suggested patch. I removed parenthesis-grouping for the
reasons I gave above. Carsten: if you'd rather keep this feature, let me
know, I'll provide another patch.
I also slightly changed the simplified regexp, as [:word:] includes
underscores in Org syntax. I used [:alnum:] instead.
Regards,
>From ffda7d038326aececd9337850d4384e4fd207459 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <address@hidden>
Date: Wed, 18 Dec 2013 22:32:13 +0100
Subject: [PATCH] Change no brace sub/superscript syntax
* lisp/org.el (org-match-substring-regexp): Simplify syntax when not
using braces. Also remove parenthesis as grouping characters and make
the variable a defconst.
(org-match-substring-with-braces-regexp): Make the variable a defconst
and remove a useless group in regexp.
(org-use-sub-superscripts): Update docstring.
* lisp/org-element.el (org-element-subscript-parser,
org-element-superscript-parser): Adapt to group changes.
---
lisp/org-element.el | 17 ++++++++---------
lisp/org.el | 19 +++++++------------
2 files changed, 15 insertions(+), 21 deletions(-)
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 31add7b..17062a9 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -3372,13 +3372,12 @@ Return a list whose CAR is `subscript' and CDR a plist
with
Assume point is at the underscore."
(save-excursion
(unless (bolp) (backward-char))
- (let ((bracketsp (if (looking-at org-match-substring-with-braces-regexp)
- t
- (not (looking-at org-match-substring-regexp))))
+ (looking-at org-match-substring-regexp)
+ (let ((bracketsp (match-beginning 4))
(begin (match-beginning 2))
- (contents-begin (or (match-beginning 5)
+ (contents-begin (or (match-beginning 4)
(match-beginning 3)))
- (contents-end (or (match-end 5) (match-end 3)))
+ (contents-end (or (match-end 4) (match-end 3)))
(post-blank (progn (goto-char (match-end 0))
(skip-chars-forward " \t")))
(end (point)))
@@ -3421,12 +3420,12 @@ Return a list whose CAR is `superscript' and CDR a
plist with
Assume point is at the caret."
(save-excursion
(unless (bolp) (backward-char))
- (let ((bracketsp (if (looking-at org-match-substring-with-braces-regexp) t
- (not (looking-at org-match-substring-regexp))))
+ (looking-at org-match-substring-regexp)
+ (let ((bracketsp (match-beginning 4))
(begin (match-beginning 2))
- (contents-begin (or (match-beginning 5)
+ (contents-begin (or (match-beginning 4)
(match-beginning 3)))
- (contents-end (or (match-end 5) (match-end 3)))
+ (contents-end (or (match-end 4) (match-end 3)))
(post-blank (progn (goto-char (match-end 0))
(skip-chars-forward " \t")))
(end (point)))
diff --git a/lisp/org.el b/lisp/org.el
index 59f55a8..4722714 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -882,7 +882,7 @@ will be parsed as single sub- or superscripts:
10^-12 or 10^-tau a leading sign with digits or a word
x^2-y^3 will be read as x^2 - y^3, because items are
terminated by almost any nonword/nondigit char.
- x_{i^2} or x^(2-i) braces or parenthesis do grouping.
+ x_{i^2} braces do grouping.
Still, ambiguity is possible. So when in doubt, use {} to enclose
the sub/superscript. If you set this variable to the symbol `{}',
@@ -5636,21 +5636,18 @@ stacked delimiters is N. Escaping delimiters is not
possible."
next (concat "\\(?:" nothing left next right "\\)+" nothing)))
(concat left "\\(" re "\\)" right)))
-(defvar org-match-substring-regexp
+(defconst org-match-substring-regexp
(concat
"\\(\\S-\\)\\([_^]\\)\\("
- "\\(" (org-create-multibrace-regexp "{" "}" org-match-sexp-depth) "\\)"
+ "\\(?:" (org-create-multibrace-regexp "{" "}" org-match-sexp-depth) "\\)"
"\\|"
- "\\(" (org-create-multibrace-regexp "(" ")" org-match-sexp-depth) "\\)"
- "\\|"
- "\\(\\(?:\\*\\|address@hidden \t\r\n,:\"?<>~;./{}=()]+\\)\\)\\)")
+ "\\(?:\\*\\|[+-]?[[:alnum:].,\\]*[[:alnum:]]\\)\\)")
"The regular expression matching a sub- or superscript.")
-(defvar org-match-substring-with-braces-regexp
+(defconst org-match-substring-with-braces-regexp
(concat
- "\\(\\S-\\)\\([_^]\\)\\("
- "\\(" (org-create-multibrace-regexp "{" "}" org-match-sexp-depth) "\\)"
- "\\)")
+ "\\(\\S-\\)\\([_^]\\)"
+ "\\(" (org-create-multibrace-regexp "{" "}" org-match-sexp-depth) "\\)")
"The regular expression matching a sub- or superscript, forcing braces.")
(defun org-make-link-regexps ()
@@ -6087,8 +6084,6 @@ by a #."
(defvar org-latex-and-related-regexp nil
"Regular expression for highlighting LaTeX, entities and sub/superscript.")
-(defvar org-match-substring-regexp)
-(defvar org-match-substring-with-braces-regexp)
(defun org-compute-latex-and-related-regexp ()
"Compute regular expression for LaTeX, entities and sub/superscript.
--
1.8.5.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [O] [RFC] Alternative to sub/superscript regexp,
Nicolas Goaziou <=