Subject: Re: bug#64204: C/C++ local variables not syntax highlighted if they start with $

From: Alan Mackenzie <[email-masked]>
Date: Wed, 21 Jun 2023 21:06:37 +0000

Hello, Po.

Apologies, the patch I sent earlier was defective, not applying cleanly
to the Emacs master branch.  I also should have sent the patch as an
attachment.

I'm now sending the patch as attachment.  It should apply cleanly to the
master branch or emacs-29.

On Wed, Jun 21, 2023 at 19:25:41 +0000, Alan Mackenzie wrote:
> On Wed, Jun 21, 2023 at 19:51:50 +0800, Po Lu wrote:
> > Joseph Garvin <[email-masked]> writes:

[ .... ]

> OK, I've amended C Mode, C++ Mode and Objective C Mode to fontify
> identifiers starting with a $.

> Please apply the patch below to .../lisp/progmodes/cc-langs.el, and
> (since Lisp macros have been changed) recompile the entire CC Mode files
> and reload them.  (Joseph, if you want any help with the patching or
> compiling, feel free to send me private email.)  Then please try out the
> new version on your real code, and confirm to me that the bug has been
> fixed, or tell me what's still wrong.

> Thanks!

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).

diff -r c45cc2208ed4 cc-langs.el
--- a/cc-langs.el	Wed Jun 21 14:58:04 2023 +0000
+++ b/cc-langs.el	Wed Jun 21 19:14:40 2023 +0000
@@ -819,8 +819,9 @@
 keyword.  It's unspecified how far it matches.  Does not contain a \\|
 operator at the top level."
   t    (concat "[" c-alpha "_]")
+  (c c++) (concat "[" c-alpha "_$]")
   java (concat "[" c-alpha "_@]")
-  objc (concat "[" c-alpha "_@]")
+  objc (concat "[" c-alpha "_@$]")
   pike (concat "[" c-alpha "_`]"))
 (c-lang-defvar c-symbol-start (c-lang-const c-symbol-start))
 
@@ -844,9 +845,10 @@
   t    (concat (c-lang-const c-symbol-start)
 	       "[" (c-lang-const c-symbol-chars) "]\\{,1000\\}")
   pike (concat
-	;; Use the value from C here since the operator backquote is
+	;; Use the value from AWK here since the operator backquote is
 	;; covered by the other alternative.
-	(c-lang-const c-symbol-key c)
+	(c-lang-const c-symbol-key awk
+		      )
 	"\\|"
 	(c-make-keywords-re nil
 	  (c-lang-const c-overloadable-operators))))