]> git.eshelyaron.com Git - emacs.git/commitdiff
Expose lambdas in info-look.el to byte-compiler
authorStefan Kangas <stefankangas@gmail.com>
Fri, 4 Oct 2024 17:03:33 +0000 (19:03 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sun, 6 Oct 2024 06:47:49 +0000 (08:47 +0200)
* lisp/info-look.el (:mode): Expose lambdas to byte-compiler.

(cherry picked from commit 9ba20e8f39ca4784c6445b92603eca7a045954ac)

lisp/info-look.el

index 19ac6aabe16f11325f7363fbe03691d1a974291e..43d223d069aaceefdb10221d3f4699ac6c49ea2d 100644 (file)
@@ -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