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
 		 '("`+" "`-" "`&" "`|" "`^" "`<<" "`>>" "`*" "`/" "`%" "`~"