From: Stefan Kangas Date: Fri, 4 Oct 2024 17:03:33 +0000 (+0200) Subject: Expose lambdas in info-look.el to byte-compiler X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=def07c56fdb3d85b9e60224f08cbdb4e47da0c85;p=emacs.git Expose lambdas in info-look.el to byte-compiler * lisp/info-look.el (:mode): Expose lambdas to byte-compiler. (cherry picked from commit 9ba20e8f39ca4784c6445b92603eca7a045954ac) --- diff --git a/lisp/info-look.el b/lisp/info-look.el index 19ac6aabe16..43d223d069a 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -868,12 +868,12 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'texinfo-mode :regexp "@\\([a-zA-Z]+\\|[^a-zA-Z]\\)" - :doc-spec '(("(texinfo)Command and Variable Index" - ;; Ignore Emacs commands and prepend a `@'. - (lambda (item) - (if (string-match "^\\([a-zA-Z]+\\|[^a-zA-Z]\\)\\( .*\\)?$" item) - (concat "@" (match-string 1 item)))) - "['`‘]" "['’ ]"))) + :doc-spec `(("(texinfo)Command and Variable Index" + ;; Ignore Emacs commands and prepend a `@'. + ,(lambda (item) + (if (string-match "^\\([a-zA-Z]+\\|[^a-zA-Z]\\)\\( .*\\)?$" item) + (concat "@" (match-string 1 item)))) + "['`‘]" "['’ ]"))) (info-lookup-maybe-add-help :mode 'm4-mode @@ -884,31 +884,31 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'autoconf-mode :regexp "A[CM]_[_A-Z0-9]+" - :doc-spec '(;; Autoconf Macro Index entries are without an "AC_" prefix, - ;; but with "AH_" or "AU_" for those. So add "AC_" if there - ;; isn't already an "A._". + :doc-spec `(;; Autoconf Macro Index entries are without an "AC_" prefix, + ;; but with "AH_" or "AU_" for those. So add "AC_" if there + ;; isn't already an "A._". ("(autoconf)Autoconf Macro Index" - (lambda (item) - (if (string-match "^A._" item) item (concat "AC_" item))) - "^[ \t]+-+ \\(Macro\\|Variable\\): .*\\<" "\\>") + ,(lambda (item) + (if (string-match "^A._" item) item (concat "AC_" item))) + "^[ \t]+-+ \\(Macro\\|Variable\\): .*\\<" "\\>") ;; M4 Macro Index entries are without "AS_" prefixes, and ;; mostly without "m4_" prefixes. "dnl" is an exception, not ;; wanting any prefix. So AS_ is added back to upper-case ;; names (if needed), m4_ to others which don't already an m4_. ("(autoconf)M4 Macro Index" - (lambda (item) - (let ((case-fold-search nil)) - (cond ((or (string-equal item "dnl") - (string-match "^m4_" item) - ;; Autoconf 2.62 index includes some macros - ;; (e.g., AS_HELP_STRING), so avoid prefixing. - (string-match "^AS_" item)) - item) - ((string-match "^[A-Z0-9_]+$" item) - (concat "AS_" item)) - (t - (concat "m4_" item))))) - "^[ \t]+-+ Macro: .*\\<" "\\>") + ,(lambda (item) + (let ((case-fold-search nil)) + (cond ((or (string-equal item "dnl") + (string-match "^m4_" item) + ;; Autoconf 2.62 index includes some macros + ;; (e.g., AS_HELP_STRING), so avoid prefixing. + (string-match "^AS_" item)) + item) + ((string-match "^[A-Z0-9_]+$" item) + (concat "AS_" item)) + (t + (concat "m4_" item))))) + "^[ \t]+-+ Macro: .*\\<" "\\>") ;; Autotest Macro Index entries are without "AT_". ("(autoconf)Autotest Macro Index" "AT_" "^[ \t]+-+ Macro: .*\\<" "\\>") @@ -927,48 +927,48 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'awk-mode :regexp "[_a-zA-Z]+" - :doc-spec '(("(gawk)Index" - (lambda (item) - (let ((case-fold-search nil)) - (cond - ;; `BEGIN' and `END'. - ((string-match "^\\([A-Z]+\\) special pattern\\b" item) - (match-string 1 item)) - ;; `if', `while', `do', ... - ((string-match "^\\([a-z]+\\) statement\\b" item) - (if (not (string-equal (match-string 1 item) "control")) - (match-string 1 item))) - ;; `NR', `NF', ... - ((string-match "^[A-Z]+$" item) - item) - ;; Built-in functions (matches to many entries). - ((string-match "^[a-z]+$" item) - item)))) - "['`‘]" "\\([ \t]*([^)]*)\\)?['’]"))) + :doc-spec `(("(gawk)Index" + ,(lambda (item) + (let ((case-fold-search nil)) + (cond + ;; `BEGIN' and `END'. + ((string-match "^\\([A-Z]+\\) special pattern\\b" item) + (match-string 1 item)) + ;; `if', `while', `do', ... + ((string-match "^\\([a-z]+\\) statement\\b" item) + (if (not (string-equal (match-string 1 item) "control")) + (match-string 1 item))) + ;; `NR', `NF', ... + ((string-match "^[A-Z]+$" item) + item) + ;; Built-in functions (matches to many entries). + ((string-match "^[a-z]+$" item) + item)))) + "['`‘]" "\\([ \t]*([^)]*)\\)?['’]"))) (info-lookup-maybe-add-help :mode 'perl-mode :regexp "[$@%][^a-zA-Z]\\|\\$\\^[A-Z]\\|[$@%]?[a-zA-Z][_a-zA-Z0-9]*" - :doc-spec '(("(perl5)Function Index" - (lambda (item) - (if (string-match "^\\([a-zA-Z0-9]+\\)" item) - (match-string 1 item))) - "^" "\\b") - ("(perl5)Variable Index" - (lambda (item) - ;; Work around bad formatted array variables. - (let ((sym (cond ((or (string-match "^\\$\\(.\\|@@\\)$" item) - (string-match "^\\$\\^[A-Z]$" item)) - item) - ((string-match - "^\\([$%@]\\|@@\\)?[_a-zA-Z0-9]+" item) - (match-string 0 item)) - (t "")))) - (if (string-match "@@" sym) - (setq sym (concat (substring sym 0 (match-beginning 0)) - (substring sym (1- (match-end 0)))))) - (if (string-equal sym "") nil sym))) - "^" "\\b")) + :doc-spec `(("(perl5)Function Index" + ,(lambda (item) + (if (string-match "^\\([a-zA-Z0-9]+\\)" item) + (match-string 1 item))) + "^" "\\b") + ("(perl5)Variable Index" + ,(lambda (item) + ;; Work around bad formatted array variables. + (let ((sym (cond ((or (string-match "^\\$\\(.\\|@@\\)$" item) + (string-match "^\\$\\^[A-Z]$" item)) + item) + ((string-match + "^\\([$%@]\\|@@\\)?[_a-zA-Z0-9]+" item) + (match-string 0 item)) + (t "")))) + (if (string-match "@@" sym) + (setq sym (concat (substring sym 0 (match-beginning 0)) + (substring sym (1- (match-end 0)))))) + (if (string-equal sym "") nil sym))) + "^" "\\b")) :parse-rule "[$@%]?\\([_a-zA-Z0-9]+\\|[^a-zA-Z]\\)") (info-lookup-maybe-add-help @@ -1114,19 +1114,19 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'octave-mode :regexp "[_a-zA-Z0-9]+\\|\\s.+\\|[-!=^|*/.\\,><~&+]\\{1,3\\}\\|[][();,\"']" - :doc-spec '(("(octave)Function Index" nil - "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil) - ("(octave)Variable Index" nil "^ -+ [^:]+:[ ]+" nil) + :doc-spec `(("(octave)Function Index" nil + "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil) + ("(octave)Variable Index" nil "^ -+ [^:]+:[ ]+" nil) ("(octave)Operator Index" nil nil nil) - ;; Catch lines of the form "xyz statement" - ("(octave)Concept Index" - (lambda (item) - (cond - ((string-match "^\\([A-Z]+\\) statement\\b" item) - (match-string 1 item)) - (t nil))) - nil; "^ -+ [^:]+:[ ]+" don't think this prefix is useful here. - nil))) + ;; Catch lines of the form "xyz statement" + ("(octave)Concept Index" + ,(lambda (item) + (cond + ((string-match "^\\([A-Z]+\\) statement\\b" item) + (match-string 1 item)) + (t nil))) + nil; "^ -+ [^:]+:[ ]+" don't think this prefix is useful here. + nil))) (info-lookup-maybe-add-help :mode 'maxima-mode @@ -1157,7 +1157,7 @@ Return nil if there is nothing appropriate in the buffer near point." ;; bash has "." and ":" in its index, but those chars will probably never ;; work in info, so don't bother matching them in the regexp. :regexp "\\([a-zA-Z0-9_-]+\\|[!{}@*#?$]\\|\\[\\[?\\|]]?\\)" - :doc-spec '(("(bash)Builtin Index" nil "^['`‘]" "[ .'’]") + :doc-spec `(("(bash)Builtin Index" nil "^['`‘]" "[ .'’]") ("(bash)Reserved Word Index" nil "^['`‘]" "[ .'’]") ("(bash)Variable Index" nil "^['`‘]" "[ .'’]") @@ -1168,30 +1168,30 @@ Return nil if there is nothing appropriate in the buffer near point." ;; versions have node "Index", look for both, whichever is ;; absent is quietly ignored ("(coreutils)Index" - (lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) + ,(lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) ("(coreutils)Concept Index" - (lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) + ,(lambda (item) (if (string-match "\\`[a-z]+\\'" item) item))) ;; diff (version 2.8.1) has only a few programs, index entries ;; are things like "foo invocation". ("(diff)Index" - (lambda (item) - (if (string-match "\\`\\([a-z]+\\) invocation\\'" item) - (match-string 1 item)))) + ,(lambda (item) + (if (string-match "\\`\\([a-z]+\\) invocation\\'" item) + (match-string 1 item)))) ;; there's no plain "sed" index entry as such, mung another ;; hopefully unique one to get to the invocation section ("(sed)Concept Index" - (lambda (item) - (if (string-equal item "Standard input, processing as input") - "sed"))) + ,(lambda (item) + (if (string-equal item "Standard input, processing as input") + "sed"))) ;; there's no plain "awk" or "gawk" index entries, mung other ;; hopefully unique ones to get to the command line options ("(gawk)Index" - (lambda (item) - (cond ((string-equal item "gawk, extensions, disabling") - "awk") - ((string-equal item "gawk, versions of, information about, printing") - "gawk")))))) + ,(lambda (item) + (cond ((string-equal item "gawk, extensions, disabling") + "awk") + ((string-equal item "gawk, versions of, information about, printing") + "gawk")))))) ;; This misses some things which occur as node names but not in the ;; index. Unfortunately it also picks up the wrong one of multiple @@ -1199,15 +1199,15 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'cfengine-mode :regexp "[[:alnum:]_]+\\(?:()\\)?" - :doc-spec '(("(cfengine-Reference)Variable Index" - (lambda (item) - ;; Index entries may be like `IsPlain()' - (if (string-match "\\([[:alnum:]_]+\\)()" item) - (match-string 1 item) - item)) - ;; This gets functions in evaluated classes. Other - ;; possible patterns don't seem to work too well. - "['`‘]" "("))) + :doc-spec `(("(cfengine-Reference)Variable Index" + ,(lambda (item) + ;; Index entries may be like `IsPlain()' + (if (string-match "\\([[:alnum:]_]+\\)()" item) + (match-string 1 item) + item)) + ;; This gets functions in evaluated classes. Other + ;; possible patterns don't seem to work too well. + "['`‘]" "("))) (info-lookup-maybe-add-help :mode 'Custom-mode