emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master b18cecf: Improve matching of key-val labels (bug#34


From: Tassilo Horn
Subject: [Emacs-diffs] master b18cecf: Improve matching of key-val labels (bug#34629)
Date: Wed, 27 Feb 2019 12:22:29 -0500 (EST)

branch: master
commit b18cecf89bbb9d2d057f86e8fa1a1f1417d887b6
Author: Arash Esbati <address@hidden>
Commit: Tassilo Horn <address@hidden>

    Improve matching of key-val labels (bug#34629)
    
    * lisp/textmodes/reftex-vars.el (reftex-label-regexps): Improve
    regexp for key-val labels in order to skip over content in braces.
---
 lisp/textmodes/reftex-vars.el | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 9147de6..eb1dfc5 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -891,11 +891,29 @@ DOWNCASE    t:   Downcase words before using them."
     ;; so this list mustn't get any more items.
     (defconst reftex-label-regexps '("\\\\label{\\([^}]*\\)}"))
   (defcustom reftex-label-regexps
-    '(;; Normal \\label{foo} labels
+    `(;; Normal \\label{foo} labels
       "\\\\label{\\(?1:[^}]*\\)}"
       ;; keyvals [..., label = {foo}, ...] forms used by ctable,
       ;; listings, minted, ...
-      
"\\[[^][]\\{0,2000\\}\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?")
+      ,(concat
+        ;; Make sure we search only for optional arguments of
+        ;; environments and don't match any other [
+        "\\\\begin[[:space:]]*{\\(?:[^}]+\\)}[[:space:]]*"
+        ;; Match the opening [ and the following chars
+        "\\[[^][]*"
+        ;; Allow nested levels of chars enclosed in braces
+        "\\(?:{[^}{]*"
+          "\\(?:{[^}{]*"
+            "\\(?:{[^}{]*}[^}{]*\\)*"
+          "}[^}{]*\\)*"
+        "}[^][]*\\)*"
+        ;; Match the label key
+        "\\<label[[:space:]]*=[[:space:]]*"
+        ;; Match the label value; braces around the value are
+        ;; optional.
+        "{?\\(?1:[^] ,}\r\n\t%]+\\)}?"
+        ;; We are done.  Such search until the next closing bracket
+        "[^]]*\\]"))
     "List of regexps matching \\label definitions.
 The default value matches usual \\label{...} definitions and
 keyval style [..., label = {...}, ...] label definitions.  It is
@@ -905,7 +923,7 @@ have to define it using \\(?1:...\\) when adding new 
regexps.
 When changed from Lisp, make sure to call
 `reftex-compile-variables' afterwards to make the change
 effective."
-    :version "25.1"
+    :version "27.1"
     :set (lambda (symbol value)
           (set symbol value)
           (when (fboundp 'reftex-compile-variables)



reply via email to

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