emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 f77ea400db0 1/2: CC Mode: Allow lists of strings as safe values


From: Alan Mackenzie
Subject: emacs-29 f77ea400db0 1/2: CC Mode: Allow lists of strings as safe values for *-font-lock-extra-types
Date: Sat, 18 Mar 2023 06:29:48 -0400 (EDT)

branch: emacs-29
commit f77ea400db0a081830b98e08a6626abbad4d92c4
Author: Alan Mackenzie <acm@muc.de>
Commit: Alan Mackenzie <acm@muc.de>

    CC Mode: Allow lists of strings as safe values for *-font-lock-extra-types
    
    * lisp/progmodes/cc-vars.el (c-list-of-strings): New function.
    (c-font-lock-extra-types, c++-font-lock-extra-types)
    (objc-font-lock-extra-types, java-font-lock-extra-types)
    (idl-font-lock-extra-types, pike-font-lock-extra-types): Add a :safe entry
    into each of thes defcustoms for c-list-of-string.
    (Top level): Add an autoload entry for each of the above.
---
 lisp/progmodes/cc-vars.el | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index 60ed3521b8a..dbf24fbbb8b 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -1561,6 +1561,16 @@ also elsewhere in CC Mode to tell types from other 
identifiers."))
 ;; (as opposed to the *-font-lock-keywords-* variables) since the old
 ;; values work fairly well anyway.
 
+(defun c-list-of-strings (obj)
+  "Return non-nil when OBJ is a list of strings (including the empty list)."
+  (and
+   (listp obj)
+   (catch 'check
+     (dolist (elt obj)
+       (when (not (stringp elt))
+        (throw 'check nil)))
+     t)))
+
 (defcustom c-font-lock-extra-types
   '("\\sw+_t"
     ;; Defined in C99:
@@ -1576,8 +1586,11 @@ also elsewhere in CC Mode to tell types from other 
identifiers."))
 "For example, a value of (\"FILE\" \"\\\\sw+_t\") means the word \"FILE\"
 and words ending in \"_t\" are treated as type names.")
   :type 'c-extra-types-widget
+  :safe #'c-list-of-strings
   :group 'c)
 
+;;;###autoload (put 'c-font-lock-extra-types 'safe-local-variable 
#'c-list-of-strings)
+
 (defcustom c++-font-lock-extra-types
   '("\\sw+_t"
     ;; C library types (except those matched by the _t pattern):
@@ -1607,8 +1620,11 @@ and words ending in \"_t\" are treated as type names.")
 "For example, a value of (\"string\") means the word \"string\" is treated
 as a type name.")
   :type 'c-extra-types-widget
+  :safe #'c-list-of-strings
   :group 'c)
 
+;;;###autoload (put 'c++-font-lock-extra-types 'safe-local-variable 
#'c-list-of-strings)
+
 (defcustom objc-font-lock-extra-types nil
   (c-make-font-lock-extra-types-blurb "ObjC" "objc-mode" (concat
 "For example, a value of (\"[" c-upper "]\\\\sw*[" c-lower "]\\\\sw*\") means
@@ -1616,8 +1632,11 @@ capitalized words are treated as type names (the 
requirement for a
 lower case char is to avoid recognizing all-caps macro and constant
 names)."))
   :type 'c-extra-types-widget
+  :safe #'c-list-of-strings
   :group 'c)
 
+;;;###autoload (put 'objc-font-lock-extra-types 'safe-local-variable 
#'c-list-of-strings)
+
 (defcustom java-font-lock-extra-types
   (list (concat "[" c-upper "]\\sw*[" c-lower "]\\sw"))
   (c-make-font-lock-extra-types-blurb "Java" "java-mode" (concat
@@ -1625,13 +1644,19 @@ names)."))
 capitalized words are treated as type names (the requirement for a
 lower case char is to avoid recognizing all-caps constant names)."))
   :type 'c-extra-types-widget
+  :safe #'c-list-of-strings
   :group 'c)
 
+;;;###autoload (put 'java-font-lock-extra-types 'safe-local-variable 
#'c-list-of-strings)
+
 (defcustom idl-font-lock-extra-types nil
   (c-make-font-lock-extra-types-blurb "IDL" "idl-mode" "")
   :type 'c-extra-types-widget
+  :safe #'c-list-of-strings
   :group 'c)
 
+;;;###autoload (put 'idl-font-lock-extra-types 'safe-local-variable 
#'c-list-of-strings)
+
 (defcustom pike-font-lock-extra-types
   (list (concat "[" c-upper "]\\sw*[" c-lower "]\\sw*"))
   (c-make-font-lock-extra-types-blurb "Pike" "pike-mode" (concat
@@ -1640,8 +1665,11 @@ capitalized words are treated as type names (the 
requirement for a
 lower case char is to avoid recognizing all-caps macro and constant
 names)."))
   :type 'c-extra-types-widget
+  :safe #'c-list-of-strings
   :group 'c)
 
+;;;###autoload (put 'pike-font-lock-extra-types 'safe-local-variable 
#'c-list-of-strings)
+
 (defcustom c-asymmetry-fontification-flag t
   "Whether to fontify certain ambiguous constructs by white space asymmetry.
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]