X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/83f86594323432ccf6cdcbe98e792d7461fbf337..16f45d1b8d556362a0668f192e4453f126946b1c:/lisp/help.el diff --git a/lisp/help.el b/lisp/help.el index a0e195b343..97887b1c81 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -91,22 +91,22 @@ (define-key help-map "q" 'help-quit) (defvar help-font-lock-keywords - (let ((name-char "[-+a-zA-Z0-9_*]") (sym-char "[-+a-zA-Z0-9_:*]")) - (list - ;; - ;; The symbol itself. - (list (concat "\\`\\(" name-char "+\\)\\(:\\)?") - '(1 (if (match-beginning 2) - font-lock-function-name-face - font-lock-variable-name-face) - nil t)) - ;; - ;; Words inside `' which tend to be symbol names. - (list (concat "`\\(" sym-char sym-char "+\\)'") - 1 'font-lock-reference-face t) - ;; - ;; CLisp `:' keywords as references. - (list (concat "\\<:" sym-char "+\\>") 0 'font-lock-reference-face t))) + (eval-when-compile + (let ((name-char "[-+a-zA-Z0-9_*]") (sym-char "[-+a-zA-Z0-9_:*]")) + (list + ;; + ;; The symbol itself. + (list (concat "\\`\\(" name-char "+\\)\\(\\(:\\)\\|\\('\\)\\)") + '(1 (if (match-beginning 3) + font-lock-function-name-face + font-lock-variable-name-face))) + ;; + ;; Words inside `' which tend to be symbol names. + (list (concat "`\\(" sym-char sym-char "+\\)'") + 1 'font-lock-reference-face t) + ;; + ;; CLisp `:' keywords as references. + (list (concat "\\<:" sym-char "+\\>") 0 'font-lock-reference-face t)))) "Default expressions to highlight in Help mode.") (defun help-mode () @@ -666,12 +666,15 @@ Argument is a command definition, usually a symbol with a function definition." (message "%s is not on any key" definition))) nil) -(defun locate-library (library &optional nosuffix) - "Show the full path name of Emacs library LIBRARY. +(defun locate-library (library &optional nosuffix path) + "Show the precise file name of Emacs library LIBRARY. This command searches the directories in `load-path' like `M-x load-library' to find the file that `M-x load-library RET LIBRARY RET' would load. Optional second arg NOSUFFIX non-nil means don't add suffixes `.elc' or `.el' -to the specified name LIBRARY (a la calling `load' instead of `load-library')." +to the specified name LIBRARY. + +If the optional third arg PATH is specified, that list of directories +is used instead of `load-path'." (interactive "sLocate library: ") (catch 'answer (mapcar @@ -684,8 +687,22 @@ to the specified name LIBRARY (a la calling `load' instead of `load-library')." (progn (message "Library is file %s" try) (throw 'answer try))))) - (if nosuffix '("") '(".elc" ".el" "")))) - load-path) + (if nosuffix + '("") + (let ((basic '(".elc" ".el" "")) + (compressed '(".Z" ".gz" ""))) + ;; If autocompression mode is on, + ;; consider all combinations of library suffixes + ;; and compression suffixes. + (if (rassq 'jka-compr-handler file-name-handler-alist) + (apply 'nconc + (mapcar '(lambda (compelt) + (mapcar '(lambda (baselt) + (concat baselt compelt)) + basic)) + compressed)) + basic))))) + (or path load-path)) (message "No library %s in search path" library) nil))