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\\`".
This commit is contained in:
parent
c77d9ea0e7
commit
3ccbe1f43f
4 changed files with 22 additions and 22 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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:]_$]\\|$\\)"))
|
||||
|
|
Loading…
Add table
Reference in a new issue