]> git.eshelyaron.com Git - emacs.git/commitdiff
Replace faulty non-matching regexp "\\<\\>" with "a\\`"
authorAlan Mackenzie <acm@muc.de>
Wed, 28 Mar 2018 18:53:32 +0000 (18:53 +0000)
committerAlan Mackenzie <acm@muc.de>
Wed, 28 Mar 2018 18:53:32 +0000 (18:53 +0000)
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
lisp/progmodes/cc-engine.el
lisp/progmodes/cc-langs.el
lisp/progmodes/cc-vars.el

index 613e2b303d9630d46a974633db3e0cefc789efaa..ad9425a509cb8b06c2fee5612d530b8bc827907a 100644 (file)
@@ -81,7 +81,7 @@
   (progn
     (require 'font-lock)
     (let (font-lock-keywords)
-      (font-lock-compile-keywords '("\\<\\>"))
+      (font-lock-compile-keywords '("a\\`"))
       font-lock-keywords))))
 
 \f
@@ -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)
 
index 2290c9cbddf97432a770601efd8a1424bd7c43f8..05926c48b040423e7602196b6329b33f0c9e9342 100644 (file)
@@ -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
index 9913c6feb2b5ed108f37629a4dc1926b4abb3947..98cfd2073d160f2c199d99133bb89b025d4f0591 100644 (file)
@@ -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))
 
index ecf034846bdbc43f3ed538057f85a5f5c7fbfb49..fcb1cac0992bd26deccc4e50c095801612315f5d 100644 (file)
@@ -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:]_$]\\|$\\)"))