From 3c0ab532f858631318633f9c790c3e65280f4925 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 10 Jul 2006 13:19:14 +0000 Subject: [PATCH] * progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el, cc-mode.el: Changes to eradicate eval-after-load. --- lisp/ChangeLog | 5 ++ lisp/progmodes/cc-awk.el | 92 +++++++++++++++++++++++++++++- lisp/progmodes/cc-defs.el | 72 +++++++++++------------ lisp/progmodes/cc-fonts.el | 114 ++++--------------------------------- lisp/progmodes/cc-langs.el | 7 ++- lisp/progmodes/cc-mode.el | 5 +- 6 files changed, 150 insertions(+), 145 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0760219e14..22737a0467 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-07-10 Alan Mackenzie + + * progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el, + cc-mode.el: Changes to eradicate eval-after-load. + 2006-07-09 Chong Yidong * emacs-lisp/helper.el (Helper-help-scroller): Don't signal error diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el index 284a2edbe9..4a47578410 100644 --- a/lisp/progmodes/cc-awk.el +++ b/lisp/progmodes/cc-awk.el @@ -32,7 +32,7 @@ ;; 1. The AWK Mode syntax table. ;; 2. Regular expressions for analysing AWK code. ;; 3. Indentation calculation stuff ("c-awk-NL-prop text-property"). -;; 4. Syntax-table property/font-locking stuff, but not including the +;; 4. Syntax-table property/font-locking stuff, including the ;; font-lock-keywords setting. ;; 5. The AWK Mode before/after-change-functions. ;; 6. AWK Mode specific versions of commands like beginning-of-defun. @@ -852,6 +852,96 @@ (c-awk-advise-fl-for-awk-region lazy-lock-defer-rest-after-change) (c-awk-advise-fl-for-awk-region lazy-lock-defer-line-after-change) +;; Awk regexps written with help from Peter Galbraith +;; . +;; Take GNU Emacs's 'words out of the following regexp-opts. They dont work +;; in Xemacs 21.4.4. acm 2002/9/19. +(defconst awk-font-lock-keywords + (eval-when-compile + (list + ;; Function names. + '("^\\s *\\(func\\(tion\\)?\\)\\>\\s *\\(\\sw+\\)?" + (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t)) + ;; + ;; Variable names. + (cons + (concat "\\<" + (regexp-opt + '("ARGC" "ARGIND" "ARGV" "BINMODE" "CONVFMT" "ENVIRON" + "ERRNO" "FIELDWIDTHS" "FILENAME" "FNR" "FS" "IGNORECASE" + "LINT" "NF" "NR" "OFMT" "OFS" "ORS" "PROCINFO" "RLENGTH" + "RS" "RSTART" "RT" "SUBSEP" "TEXTDOMAIN") t) "\\>") + 'font-lock-variable-name-face) + + ;; Special file names. (acm, 2002/7/22) + ;; The following regexp was created by first evaluating this in GNU Emacs 21.1: + ;; (regexp-opt '("/dev/stdin" "/dev/stdout" "/dev/stderr" "/dev/fd/n" "/dev/pid" + ;; "/dev/ppid" "/dev/pgrpid" "/dev/user") 'words) + ;; , removing the "?:" from each "\\(?:" (for backward compatibility with older Emacsen) + ;; , replacing the "n" in "dev/fd/n" with "[0-9]+" + ;; , removing the unwanted \\< at the beginning, and finally filling out the + ;; regexp so that a " must come before, and either a " or heuristic stuff after. + ;; The surrounding quotes are fontified along with the filename, since, semantically, + ;; they are an indivisible unit. + '("\\(\"/dev/\\(fd/[0-9]+\\|p\\(\\(\\(gr\\)?p\\)?id\\)\\|\ +std\\(err\\|in\\|out\\)\\|user\\)\\)\\>\ +\\(\\(\"\\)\\|\\([^\"/\n\r][^\"\n\r]*\\)?$\\)" + (1 font-lock-variable-name-face t) + (8 font-lock-variable-name-face t t)) + ;; Do the same (almost) with + ;; (regexp-opt '("/inet/tcp/lport/rhost/rport" "/inet/udp/lport/rhost/rport" + ;; "/inet/raw/lport/rhost/rport") 'words) + ;; This cannot be combined with the above pattern, because the match number + ;; for the (optional) closing \" would then exceed 9. + '("\\(\"/inet/\\(\\(raw\\|\\(tc\\|ud\\)p\\)/lport/rhost/rport\\)\\)\\>\ +\\(\\(\"\\)\\|\\([^\"/\n\r][^\"\n\r]*\\)?$\\)" + (1 font-lock-variable-name-face t) + (6 font-lock-variable-name-face t t)) + + ;; Keywords. + (concat "\\<" + (regexp-opt + '("BEGIN" "END" "break" "continue" "delete" "do" "else" + "exit" "for" "getline" "if" "in" "next" "nextfile" + "return" "while") + t) "\\>") + + ;; Builtins. + `(eval . (list + ,(concat + "\\<" + (regexp-opt + '("adump" "and" "asort" "atan2" "bindtextdomain" "close" + "compl" "cos" "dcgettext" "exp" "extension" "fflush" + "gensub" "gsub" "index" "int" "length" "log" "lshift" + "match" "mktime" "or" "print" "printf" "rand" "rshift" + "sin" "split" "sprintf" "sqrt" "srand" "stopme" + "strftime" "strtonum" "sub" "substr" "system" + "systime" "tolower" "toupper" "xor") t) + "\\>") + 0 c-preprocessor-face-name)) + + ;; gawk debugging keywords. (acm, 2002/7/21) + ;; (Removed, 2003/6/6. These functions are now fontified as built-ins) + ;; (list (concat "\\<" (regexp-opt '("adump" "stopme") t) "\\>") + ;; 0 'font-lock-warning-face) + + ;; User defined functions with an apparent spurious space before the + ;; opening parenthesis. acm, 2002/5/30. + `(,(concat "\\(\\w\\|_\\)" c-awk-escaped-nls* "\\s " + c-awk-escaped-nls*-with-space* "(") + (0 'font-lock-warning-face)) + + ;; Space after \ in what looks like an escaped newline. 2002/5/31 + '("\\\\\\s +$" 0 font-lock-warning-face t) + + ;; Unbalanced string (") or regexp (/) delimiters. 2002/02/16. + '("\\s|" 0 font-lock-warning-face t nil) + ;; gawk 3.1 localizable strings ( _"translate me!"). 2002/5/21 + '("\\(_\\)\\s|" 1 font-lock-warning-face) + '("\\(_\\)\\s\"" 1 font-lock-string-face) ; FIXME! not for XEmacs. 2002/10/6 + )) + "Default expressions to highlight in AWK mode.") ;; ACM 2002/9/29. Movement functions, e.g. for C-M-a and C-M-e diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index d39c4880dc..ecad9174e5 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el @@ -69,14 +69,15 @@ (not (fboundp 'push))) (cc-load "cc-fix"))) -(eval-after-load "font-lock" - '(if (and (not (featurep 'cc-fix)) ; only load the file once. +; (eval-after-load "font-lock" ; 2006-07-09. font-lock is now preloaded +; ' +(if (and (not (featurep 'cc-fix)) ; only load the file once. (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS ; to make the call to f-l-c-k throw an error. (let (font-lock-keywords) (font-lock-compile-keywords '("\\<\\>")) font-lock-keywords)) ; did the previous call foul this up? - (load "cc-fix"))) + (load "cc-fix")) ;) ;; The above takes care of the delayed loading, but this is necessary ;; to ensure correct byte compilation. @@ -1034,35 +1035,35 @@ MODE is either a mode symbol or a list of mode symbols." ;; Make edebug understand the macros. -(eval-after-load "edebug" - '(progn - (def-edebug-spec cc-eval-when-compile t) - (def-edebug-spec c-point t) - (def-edebug-spec c-set-region-active t) - (def-edebug-spec c-safe t) - (def-edebug-spec c-save-buffer-state let*) - (def-edebug-spec c-tentative-buffer-changes t) - (def-edebug-spec c-forward-syntactic-ws t) - (def-edebug-spec c-backward-syntactic-ws t) - (def-edebug-spec c-forward-sexp t) - (def-edebug-spec c-backward-sexp t) - (def-edebug-spec c-up-list-forward t) - (def-edebug-spec c-up-list-backward t) - (def-edebug-spec c-down-list-forward t) - (def-edebug-spec c-down-list-backward t) - (def-edebug-spec c-add-syntax t) - (def-edebug-spec c-add-class-syntax t) - (def-edebug-spec c-benign-error t) - (def-edebug-spec c-with-syntax-table t) - (def-edebug-spec c-skip-ws-forward t) - (def-edebug-spec c-skip-ws-backward t) - (def-edebug-spec c-major-mode-is t) - (def-edebug-spec c-put-char-property t) - (def-edebug-spec c-get-char-property t) - (def-edebug-spec c-clear-char-property t) - (def-edebug-spec c-clear-char-properties t) - (def-edebug-spec c-put-overlay t) - (def-edebug-spec c-delete-overlay t))) +;(eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. +; '(progn +(def-edebug-spec cc-eval-when-compile t) +(def-edebug-spec c-point t) +(def-edebug-spec c-set-region-active t) +(def-edebug-spec c-safe t) +(def-edebug-spec c-save-buffer-state let*) +(def-edebug-spec c-tentative-buffer-changes t) +(def-edebug-spec c-forward-syntactic-ws t) +(def-edebug-spec c-backward-syntactic-ws t) +(def-edebug-spec c-forward-sexp t) +(def-edebug-spec c-backward-sexp t) +(def-edebug-spec c-up-list-forward t) +(def-edebug-spec c-up-list-backward t) +(def-edebug-spec c-down-list-forward t) +(def-edebug-spec c-down-list-backward t) +(def-edebug-spec c-add-syntax t) +(def-edebug-spec c-add-class-syntax t) +(def-edebug-spec c-benign-error t) +(def-edebug-spec c-with-syntax-table t) +(def-edebug-spec c-skip-ws-forward t) +(def-edebug-spec c-skip-ws-backward t) +(def-edebug-spec c-major-mode-is t) +(def-edebug-spec c-put-char-property t) +(def-edebug-spec c-get-char-property t) +(def-edebug-spec c-clear-char-property t) +(def-edebug-spec c-clear-char-properties t) +(def-edebug-spec c-put-overlay t) +(def-edebug-spec c-delete-overlay t) ;)) ;;; Functions. @@ -1738,9 +1739,10 @@ constant. A file is identified by its base name." ,@(and pre-files `(',pre-files)))))) (put 'c-lang-defconst 'lisp-indent-function 1) -(eval-after-load "edebug" - '(def-edebug-spec c-lang-defconst - (&define name [&optional stringp] [&rest sexp def-form]))) +;(eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. +; ' +(def-edebug-spec c-lang-defconst + (&define name [&optional stringp] [&rest sexp def-form])) (defun c-define-lang-constant (name bindings &optional pre-files) ;; Used by `c-lang-defconst'. diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 75d631ac39..9c05150688 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -348,15 +348,15 @@ highlights)))) nil))) - (eval-after-load "edebug" - '(progn - (def-edebug-spec c-fontify-types-and-refs let*) - (def-edebug-spec c-make-syntactic-matcher t) - ;; If there are literal quoted or backquoted highlight specs in - ;; the call to `c-make-font-lock-search-function' then let's - ;; instrument the forms in them. - (def-edebug-spec c-make-font-lock-search-function - (form &rest &or ("quote" (&rest form)) ("`" (&rest form)) form))))) +; (eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. +; '(progn + (def-edebug-spec c-fontify-types-and-refs let*) + (def-edebug-spec c-make-syntactic-matcher t) + ;; If there are literal quoted or backquoted highlight specs in + ;; the call to `c-make-font-lock-search-function' then let's + ;; instrument the forms in them. + (def-edebug-spec c-make-font-lock-search-function + (form &rest &or ("quote" (&rest form)) ("`" (&rest form)) form)));)) (defun c-fontify-recorded-types-and-refs () ;; Convert the ranges recorded on `c-record-type-identifiers' and @@ -2268,101 +2268,7 @@ need for `pike-font-lock-extra-types'.") autodoc-font-lock-doc-comments))))) -;; AWK. - -;; Awk regexps written with help from Peter Galbraith -;; . -;; Take GNU Emacs's 'words out of the following regexp-opts. They dont work -;; in Xemacs 21.4.4. acm 2002/9/19. -(eval-after-load "cc-awk" ; Evaluate while loading cc-fonts - `(defconst awk-font-lock-keywords ; Evaluate after loading cc-awk - ',(eval-when-compile ; Evaluate while compiling cc-fonts - (list - ;; Function names. - '("^\\s *\\(func\\(tion\\)?\\)\\>\\s *\\(\\sw+\\)?" - (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t)) - ;; - ;; Variable names. - (cons - (concat "\\<" - (regexp-opt - '("ARGC" "ARGIND" "ARGV" "BINMODE" "CONVFMT" "ENVIRON" - "ERRNO" "FIELDWIDTHS" "FILENAME" "FNR" "FS" "IGNORECASE" - "LINT" "NF" "NR" "OFMT" "OFS" "ORS" "PROCINFO" "RLENGTH" - "RS" "RSTART" "RT" "SUBSEP" "TEXTDOMAIN") t) "\\>") - 'font-lock-variable-name-face) - - ;; Special file names. (acm, 2002/7/22) - ;; The following regexp was created by first evaluating this in GNU Emacs 21.1: - ;; (regexp-opt '("/dev/stdin" "/dev/stdout" "/dev/stderr" "/dev/fd/n" "/dev/pid" - ;; "/dev/ppid" "/dev/pgrpid" "/dev/user") 'words) - ;; , removing the "?:" from each "\\(?:" (for backward compatibility with older Emacsen) - ;; , replacing the "n" in "dev/fd/n" with "[0-9]+" - ;; , removing the unwanted \\< at the beginning, and finally filling out the - ;; regexp so that a " must come before, and either a " or heuristic stuff after. - ;; The surrounding quotes are fontified along with the filename, since, semantically, - ;; they are an indivisible unit. - '("\\(\"/dev/\\(fd/[0-9]+\\|p\\(\\(\\(gr\\)?p\\)?id\\)\\|\ -std\\(err\\|in\\|out\\)\\|user\\)\\)\\>\ -\\(\\(\"\\)\\|\\([^\"/\n\r][^\"\n\r]*\\)?$\\)" - (1 font-lock-variable-name-face t) - (8 font-lock-variable-name-face t t)) - ;; Do the same (almost) with - ;; (regexp-opt '("/inet/tcp/lport/rhost/rport" "/inet/udp/lport/rhost/rport" - ;; "/inet/raw/lport/rhost/rport") 'words) - ;; This cannot be combined with the above pattern, because the match number - ;; for the (optional) closing \" would then exceed 9. - '("\\(\"/inet/\\(\\(raw\\|\\(tc\\|ud\\)p\\)/lport/rhost/rport\\)\\)\\>\ -\\(\\(\"\\)\\|\\([^\"/\n\r][^\"\n\r]*\\)?$\\)" - (1 font-lock-variable-name-face t) - (6 font-lock-variable-name-face t t)) - - ;; Keywords. - (concat "\\<" - (regexp-opt - '("BEGIN" "END" "break" "continue" "delete" "do" "else" - "exit" "for" "getline" "if" "in" "next" "nextfile" - "return" "while") - t) "\\>") - - ;; Builtins. - `(eval . (list - ,(concat - "\\<" - (regexp-opt - '("adump" "and" "asort" "atan2" "bindtextdomain" "close" - "compl" "cos" "dcgettext" "exp" "extension" "fflush" - "gensub" "gsub" "index" "int" "length" "log" "lshift" - "match" "mktime" "or" "print" "printf" "rand" "rshift" - "sin" "split" "sprintf" "sqrt" "srand" "stopme" - "strftime" "strtonum" "sub" "substr" "system" - "systime" "tolower" "toupper" "xor") t) - "\\>") - 0 c-preprocessor-face-name)) - - ;; gawk debugging keywords. (acm, 2002/7/21) - ;; (Removed, 2003/6/6. These functions are now fontified as built-ins) -;; (list (concat "\\<" (regexp-opt '("adump" "stopme") t) "\\>") -;; 0 'font-lock-warning-face) - - ;; User defined functions with an apparent spurious space before the - ;; opening parenthesis. acm, 2002/5/30. - `(,(concat "\\(\\w\\|_\\)" c-awk-escaped-nls* "\\s " - c-awk-escaped-nls*-with-space* "(") - (0 'font-lock-warning-face)) - - ;; Space after \ in what looks like an escaped newline. 2002/5/31 - '("\\\\\\s +$" 0 font-lock-warning-face t) - - ;; Unbalanced string (") or regexp (/) delimiters. 2002/02/16. - '("\\s|" 0 font-lock-warning-face t nil) - ;; gawk 3.1 localizable strings ( _"translate me!"). 2002/5/21 - '("\\(_\\)\\s|" 1 font-lock-warning-face) - '("\\(_\\)\\s\"" 1 font-lock-string-face) ; FIXME! not for XEmacs. 2002/10/6 - )) - "Default expressions to highlight in AWK mode.")) - - +;; 2006-07-10: awk-font-lock-keywords has been moved back to cc-awk.el. (cc-provide 'cc-fonts) ;;; arch-tag: 2f65f405-735f-4da5-8d4b-b957844c5203 diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 8120094f60..e7a0d03cc5 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -173,9 +173,10 @@ the evaluated constant value at compile time." `',var) (put 'c-lang-defvar 'lisp-indent-function 'defun) -(eval-after-load "edebug" - '(def-edebug-spec c-lang-defvar - (&define name def-form &optional stringp))) +; (eval-after-load "edebug" ; 2006-07-09: def-edebug-spec is now in subr.el. +; ' +(def-edebug-spec c-lang-defvar + (&define name def-form &optional stringp)) ;) (eval-and-compile ;; Some helper functions used when building the language constants. diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 9eebdb2bb7..7343ec735e 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -114,8 +114,9 @@ ;; Load cc-fonts first after font-lock is loaded, since it isn't ;; necessary until font locking is requested. -(eval-after-load "font-lock" - '(require 'cc-fonts)) +; (eval-after-load "font-lock" ; 2006-07-09: font-lock is now preloaded. +; ' +(require 'cc-fonts) ;) ;; cc-langs isn't loaded when we're byte compiled, so add autoload ;; directives for the interface functions. -- 2.20.1