# HG changeset patch # User Martin Stjernholm # Date 1049755237 0 # Node ID f0aee744e09c12b1add94be96d7477412ba8b226 # Parent 25b85b1e2260ccef86f3c4cbce5f514ba4c61444 (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. diff -r 25b85b1e2260 -r f0aee744e09c lisp/progmodes/cc-langs.el --- 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 '("`+" "`-" "`&" "`|" "`^" "`<<" "`>>" "`*" "`/" "`%" "`~"