emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 3ccbe1f: Replace faulty non-matching regexp "\\<\\>


From: Alan Mackenzie
Subject: [Emacs-diffs] master 3ccbe1f: Replace faulty non-matching regexp "\\<\\>" with "a\\`"
Date: Wed, 28 Mar 2018 14:57:58 -0400 (EDT)

branch: master
commit 3ccbe1f43f8c73b5dbf7051b91cd850959f2a79f
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>

    Replace faulty non-matching regexp "\\<\\>" with "a\\`"
    
    The regexp "\\<\\>", which is supposed never to match, actually matches, for
    instance, where a Chinese character is directly followed by an ASCII letter.
    So, replace it with "a\\`".
    
    * lisp/progmodes/cc-defs.el (cc-fix, c-make-keywords-re)
    * lisp/progmodes/cc-engine.el (c-beginning-of-statement-1)
    (c-forward-<>-arglist-recur, c-forward-decl-or-cast-1)
    (c-looking-at-decl-block)
    * lisp/progmodes/cc-langs.el (c-assignment-op-regexp)
    (c-block-comment-ender-regexp, c-block-comment-start-regexp)
    (c-line-comment-start-regexp, c-doc-comment-start-regexp)
    (c-decl-start-colon-kwd-re, c-type-decl-prefix-key)
    (c-type-decl-operator-prefix-key, c-pre-id-bracelist-key)
    (c-enum-clause-introduction-re, c-nonlabel-token-2-key)
    * lisp/progmodes/cc-vars.el (c-noise-macro-with-parens-name-re)
    (c-make-noise-macro-regexps):
    Replace "\\<\\>" by "a\\`".
---
 lisp/progmodes/cc-defs.el   |  6 +++---
 lisp/progmodes/cc-engine.el |  8 ++++----
 lisp/progmodes/cc-langs.el  | 22 +++++++++++-----------
 lisp/progmodes/cc-vars.el   |  8 ++++----
 4 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 613e2b3..ad9425a 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -81,7 +81,7 @@
   (progn
     (require 'font-lock)
     (let (font-lock-keywords)
-      (font-lock-compile-keywords '("\\<\\>"))
+      (font-lock-compile-keywords '("a\\`"))
       font-lock-keywords))))
 
 
@@ -1777,8 +1777,8 @@ when it's needed.  The default is the current language 
taken from
 
     ;; Produce a regexp that matches nothing.
     (if adorn
-       "\\(\\<\\>\\)"
-      "\\<\\>")))
+       "\\(a\\`\\)"
+      "a\\`")))
 
 (put 'c-make-keywords-re 'lisp-indent-function 1)
 
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 2290c9c..05926c4 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -870,7 +870,7 @@ comment at the start of cc-engine.el for more info."
        stack
        ;; Regexp which matches "for", "if", etc.
        (cond-key (or c-opt-block-stmt-key
-                     "\\<\\>"))        ; Matches nothing.
+                     "a\\`"))  ; Matches nothing.
        ;; Return value.
        (ret 'same)
        ;; Positions of the last three sexps or bounds we've stopped at.
@@ -7147,7 +7147,7 @@ comment at the start of cc-engine.el for more info."
                (progn
                  (c-forward-syntactic-ws)
                  (when (or (and c-record-type-identifiers all-types)
-                           (not (equal c-inside-<>-type-key "\\(\\<\\>\\)")))
+                           (not (equal c-inside-<>-type-key "\\(a\\`\\)")))
                    (c-forward-syntactic-ws)
                    (cond
                     ((eq (char-after) ??)
@@ -8557,7 +8557,7 @@ comment at the start of cc-engine.el for more info."
       ;; Skip over type decl prefix operators.  (Note similar code in
       ;; `c-forward-declarator'.)
       (if (and c-recognize-typeless-decls
-              (equal c-type-decl-prefix-key "\\<\\>"))
+              (equal c-type-decl-prefix-key "a\\`"))
          (when (eq (char-after) ?\()
            (progn
              (setq paren-depth (1+ paren-depth))
@@ -10183,7 +10183,7 @@ comment at the start of cc-engine.el for more info."
              ;; legal because it's part of a "compound keyword" like
              ;; "enum class".  Of course, if c-after-brace-list-key
              ;; is nil, we can skip the test.
-             (or (equal c-after-brace-list-key "\\<\\>")
+             (or (equal c-after-brace-list-key "a\\`")
                  (save-match-data
                    (save-excursion
                      (not
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 9913c6f..98cfd20 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1280,7 +1280,7 @@ operators."
           (c--set-difference (c-lang-const c-assignment-operators)
                              '("=")
                              :test 'string-equal)))
-      "\\<\\>"))
+      "a\\`"))
 (c-lang-defvar c-assignment-op-regexp
   (c-lang-const c-assignment-op-regexp))
 
@@ -1503,7 +1503,7 @@ properly."
   ;; language)
   t (if (c-lang-const c-block-comment-ender)
        (regexp-quote (c-lang-const c-block-comment-ender))
-      "\\<\\>"))
+      "a\\`"))
 (c-lang-defvar c-block-comment-ender-regexp
               (c-lang-const c-block-comment-ender-regexp))
 
@@ -1522,7 +1522,7 @@ properly."
   ;; language)
   t (if (c-lang-const c-block-comment-starter)
        (regexp-quote (c-lang-const c-block-comment-starter))
-      "\\<\\>"))
+      "a\\`"))
 (c-lang-defvar c-block-comment-start-regexp
   (c-lang-const c-block-comment-start-regexp))
 
@@ -1531,7 +1531,7 @@ properly."
   ;; language; it does in all 7 CC Mode languages).
   t (if (c-lang-const c-line-comment-starter)
        (regexp-quote (c-lang-const c-line-comment-starter))
-      "\\<\\>"))
+      "a\\`"))
 (c-lang-defvar c-line-comment-start-regexp
               (c-lang-const c-line-comment-start-regexp))
 
@@ -1546,7 +1546,7 @@ properly."
 
 (c-lang-defconst c-doc-comment-start-regexp
   "Regexp to match the start of documentation comments."
-  t    "\\<\\>"
+  t    "a\\`"
   ;; From font-lock.el: `doxygen' uses /*! while others use /**.
   (c c++ objc) "/\\*[*!]"
   java "/\\*\\*"
@@ -2990,7 +2990,7 @@ Note that Java specific rules are currently applied to 
tell this from
   "Regexp matching a keyword that is followed by a colon, where
   the whole construct can precede a declaration.
   E.g. \"public:\" in C++."
-  t "\\<\\>"
+  t "a\\`"
   c++ (c-make-keywords-re t (c-lang-const c-protection-kwds)))
 (c-lang-defvar c-decl-start-colon-kwd-re
   (c-lang-const c-decl-start-colon-kwd-re))
@@ -3171,7 +3171,7 @@ Identifier syntax is in effect when this is matched \(see
   t (if (c-lang-const c-type-modifier-kwds)
        (concat (regexp-opt (c-lang-const c-type-modifier-kwds) t) "\\>")
       ;; Default to a regexp that never matches.
-      "\\<\\>")
+      "a\\`")
   ;; Check that there's no "=" afterwards to avoid matching tokens
   ;; like "*=".
   (c objc) (concat "\\("
@@ -3209,7 +3209,7 @@ that might precede the identifier in a declaration, e.g. 
the
 as the end of the operator.  Identifier syntax is in effect when
 this is matched \(see `c-identifier-syntax-table')."
   t ;; Default to a regexp that never matches.
-    "\\<\\>"
+    "a\\`"
   ;; Check that there's no "=" afterwards to avoid matching tokens
   ;; like "*=".
   (c objc) (concat "\\(\\*\\)"
@@ -3368,7 +3368,7 @@ list."
 (c-lang-defconst c-pre-id-bracelist-key
   "A regexp matching tokens which, preceding an identifier, signify a 
bracelist.
 "
-  t "\\<\\>"
+  t "a\\`"
   c++ "new\\([^[:alnum:]_$]\\|$\\)\\|&&?\\(\\S.\\|$\\)")
 (c-lang-defvar c-pre-id-bracelist-key (c-lang-const c-pre-id-bracelist-key))
 
@@ -3424,7 +3424,7 @@ the invalidity of the putative template construct."
         ;; before the '{' of the enum list, to avoid searching too far.
         "[^][{};/#=]*"
         "{")
-      "\\<\\>"))
+      "a\\`"))
 (c-lang-defvar c-enum-clause-introduction-re
               (c-lang-const c-enum-clause-introduction-re))
 
@@ -3540,7 +3540,7 @@ i.e. before \":\".  Only used if 
`c-recognize-colon-labels' is set."
   "Regexp matching things that can't occur two symbols before a colon in
 a label construct.  This catches C++'s inheritance construct \"class foo
 : bar\".  Only used if `c-recognize-colon-labels' is set."
-  t "\\<\\>"                           ; matches nothing
+  t "a\\`"                             ; matches nothing
   c++ (c-make-keywords-re t '("class")))
 (c-lang-defvar c-nonlabel-token-2-key (c-lang-const c-nonlabel-token-2-key))
 
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index ecf0348..fcb1cac 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -1647,8 +1647,8 @@ white space either before or after the operator, but not 
both."
   :type 'boolean
   :group 'c)
 
-(defvar c-noise-macro-with-parens-name-re "\\<\\>")
-(defvar c-noise-macro-name-re "\\<\\>")
+(defvar c-noise-macro-with-parens-name-re "a\\`")
+(defvar c-noise-macro-name-re "a\\`")
 
 (defcustom c-noise-macro-names nil
   "A list of names of macros which expand to nothing, or compiler extensions
@@ -1677,7 +1677,7 @@ These are recognized by CC Mode only in declarations."
   ;; Convert `c-noise-macro-names' and `c-noise-macro-with-parens-names' into
   ;; `c-noise-macro-name-re' and `c-noise-macro-with-parens-name-re'.
   (setq c-noise-macro-with-parens-name-re
-       (cond ((null c-noise-macro-with-parens-names) "\\<\\>")
+       (cond ((null c-noise-macro-with-parens-names) "a\\`")
              ((consp c-noise-macro-with-parens-names)
               (concat (regexp-opt c-noise-macro-with-parens-names t)
                       "\\([^[:alnum:]_$]\\|$\\)"))
@@ -1686,7 +1686,7 @@ These are recognized by CC Mode only in declarations."
              (t (error "c-make-noise-macro-regexps: \
 c-noise-macro-with-parens-names is invalid: %s" 
c-noise-macro-with-parens-names))))
   (setq c-noise-macro-name-re
-       (cond ((null c-noise-macro-names) "\\<\\>")
+       (cond ((null c-noise-macro-names) "a\\`")
              ((consp c-noise-macro-names)
               (concat (regexp-opt c-noise-macro-names t)
                       "\\([^[:alnum:]_$]\\|$\\)"))



reply via email to

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