Mercurial > emacs
changeset 50481:f0aee744e09c
(c-symbol-key): Use POSIX char classes to match symbols in Emacs 21.
This makes CC Mode cope with the full range of identifier characters
in e.g. Java.
author | Martin Stjernholm <mast@lysator.liu.se> |
---|---|
date | Mon, 07 Apr 2003 22:40:37 +0000 |
parents | 25b85b1e2260 |
children | ceac595b0881 |
files | lisp/progmodes/cc-langs.el |
diffstat | 1 files changed, 9 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/cc-langs.el Mon Apr 07 14:14:13 2003 +0000 +++ b/lisp/progmodes/cc-langs.el Mon Apr 07 22:40:37 2003 +0000 @@ -181,18 +181,16 @@ ) ;; Regexp describing a `symbol' in all languages, not excluding -;; keywords. We cannot use just `word' syntax class since `_' cannot -;; be in word class. Putting underscore in word class breaks forward -;; word movement behavior that users are familiar with. Besides, it -;; runs counter to Emacs convention. -;; -;; This definition isn't correct for the first character in the -;; languages that accept the full range of Unicode word constituents -;; in identifiers (e.g. Java and Pike). For that we'd need to make a -;; regexp that matches all characters in the word constituent class -;; except 0-9, and the regexp engine currently can't do that. +;; keywords. (c-lang-defconst c-symbol-key - (c c++ objc java idl) "[_a-zA-Z]\\(\\w\\|\\s_\\)*" + (c c++ objc java idl) + (if (string-match "[[:alpha:]]" "a") + "[[:alpha:]_][[:alnum:]_]*" ; Emacs 21. + ;; We cannot use just `word' syntax class since `_' cannot be + ;; in word class. Putting underscore in word class breaks + ;; forward word movement behavior that users are familiar + ;; with. Besides, it runs counter to Emacs convention. + "[a-zA-Z_]\\(\\w\\|_\\)*") pike (concat "\\(" (c-lang-var c-symbol-key c) "\\|" (c-make-keywords-re nil '("`+" "`-" "`&" "`|" "`^" "`<<" "`>>" "`*" "`/" "`%" "`~"