From: Paul Eggert Date: Tue, 10 May 2016 14:44:28 +0000 (-0700) Subject: Merge from origin/emacs-25 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/6d0703a01df1ece3fd9ba2a927913d1bcf10d549 Merge from origin/emacs-25 d0d9f55 Allow newlines inside cl function arglists 963541a Publicize cl--generic-all-functions 3c581d5 ; Fix typo e58f900 Add some "safe-local-variable" declarations for compatibility... --- 6d0703a01df1ece3fd9ba2a927913d1bcf10d549 diff --cc lisp/progmodes/cc-vars.el index 8cad27fd86,b46b9b8270..216f0cc143 --- a/lisp/progmodes/cc-vars.el +++ b/lisp/progmodes/cc-vars.el @@@ -1632,53 -1632,12 +1632,57 @@@ names).") :type 'c-extra-types-widget :group 'c) +(defvar c-noise-macro-with-parens-name-re "\\<\\>") +(defvar c-noise-macro-name-re "\\<\\>") + +(defcustom c-noise-macro-names nil + "A list of names of macros which expand to nothing, or compiler extensions +like \"????\" which are syntactic noise. Such a macro/extension is complete in +itself, never having parentheses. All these names must be syntactically valid +identifiers. + +If you change this variable's value, call the function +`c-make-noise-macro-regexps' to set the necessary internal variables (or do +this implicitly by reinitializing C/C++/Objc Mode on any buffer)." + :type '(repeat :tag "List of names" string) + :group 'c) +(put 'c-noise-macro-names 'safe-local-variable #'c-string-list-p) + +(defcustom c-noise-macro-with-parens-names nil + "A list of names of macros \(or compiler extensions like \"__attribute__\") +which optionally have arguments in parentheses, and which expand to nothing. +These are recognized by CC Mode only in declarations." + :type '(regexp :tag "List of names (possibly empty)" string) + :group 'c) +(put 'c-noise-macro-with-parens-names 'safe-local-variable #'c-string-list-p) + +(defun c-make-noise-macro-regexps () + ;; Convert `c-noise-macro-names' and `c-noise-macro-with-parens-names' into + ;; `c-noise-macro-name-re' and `c-noise-macro-with-parens-name-re'. + (setq c-noise-macro-with-parens-name-re + (cond ((null c-noise-macro-with-parens-names) "\\<\\>") + ((consp c-noise-macro-with-parens-names) + (concat (regexp-opt c-noise-macro-with-parens-names t) + "\\([^[:alnum:]_$]\\|$\\)")) + ((stringp c-noise-macro-with-parens-names) + (copy-sequence c-noise-macro-with-parens-names)) + (t (error "c-make-noise-macro-regexps: \ +c-noise-macro-with-parens-names is invalid: %s" c-noise-macro-with-parens-names)))) + (setq c-noise-macro-name-re + (cond ((null c-noise-macro-names) "\\<\\>") + ((consp c-noise-macro-names) + (concat (regexp-opt c-noise-macro-names t) + "\\([^[:alnum:]_$]\\|$\\)")) + ((stringp c-noise-macro-names) + (copy-sequence c-noise-macro-names)) + (t (error "c-make-noise-macro-regexps: \ +c-noise-macro-names is invalid: %s" c-noise-macro-names))))) ;; Non-customizable variables, still part of the interface to CC Mode + ;; The following two are preparations for Emacs 25.2 (2016-05-09): + (put 'c-noise-macro-names 'safe-local-variable #'c-string-list-p) + (put 'c-noise-macro-with-parens-names 'safe-local-variable #'c-string-list-p) + (defvar c-macro-with-semi-re nil ;; Regular expression which matches a (#define'd) symbol whose expansion ;; ends with a semicolon.