X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/412f24b9ddf1e07022f8c5fe05f0717f130c4c02..59cddd59e27cabe03f39366912c474c99789e7ed:/lisp/info-look.el diff --git a/lisp/info-look.el b/lisp/info-look.el index 13edc0269d..5bbaa37d0d 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -1,7 +1,7 @@ ;;; info-look.el --- major-mode-sensitive Info index lookup facility -*- lexical-binding: t -*- ;; An older version of this was known as libc.el. -;; Copyright (C) 1995-1999, 2001-2011 Free Software Foundation, Inc. +;; Copyright (C) 1995-1999, 2001-2014 Free Software Foundation, Inc. ;; Author: Ralph Schleicher ;; (did not show signs of life (Nov 2001) -stef) @@ -27,6 +27,14 @@ ;; Really cool code to lookup info indexes. ;; Try especially info-lookup-symbol (aka C-h S). +;; Some additional sources of (Tex)info files for non-GNU packages: +;; +;; Scheme: +;; LaTeX: +;; +;; (or CTAN mirrors) +;; Perl: (or CPAN mirrors) + ;;; Code: (require 'info) @@ -252,7 +260,7 @@ minibuffer. In the minibuffer, use M-n to yank the default argument value into the minibuffer so you can edit it. The default symbol is the one found at point. -With prefix arg a query for the symbol help mode is offered." +With prefix arg MODE a query for the symbol help mode is offered." (interactive (info-lookup-interactive-arguments 'symbol current-prefix-arg)) (info-lookup 'symbol symbol mode)) @@ -266,7 +274,7 @@ In the minibuffer, use M-n to yank the default file name into the minibuffer so you can edit it. The default file name is the one found at point. -With prefix arg a query for the file help mode is offered." +With prefix arg MODE a query for the file help mode is offered." (interactive (info-lookup-interactive-arguments 'file current-prefix-arg)) (info-lookup 'file file mode)) @@ -298,6 +306,21 @@ If optional argument QUERY is non-nil, query for the help mode." (when (string-match (caar file-name-alist) file-name) (setq info-lookup-mode (cdar file-name-alist))) (setq file-name-alist (cdr file-name-alist))))) + + ;; If major-mode has no setups in info-lookup-alist, under any topic, then + ;; search up through derived-mode-parent to find a parent mode which does + ;; have some setups. This means that a `define-derived-mode' with no + ;; setups of its own will select its parent mode for lookups, if one of + ;; its parents has some setups. Good for example on `makefile-gmake-mode' + ;; and similar derivatives of `makefile-mode'. + ;; + (let ((mode major-mode)) ;; Look for `mode' with some setups. + (while (and mode (not info-lookup-mode)) + (dolist (topic-cell info-lookup-alist) ;; Usually only two topics here. + (if (info-lookup->mode-value (car topic-cell) mode) + (setq info-lookup-mode mode))) + (setq mode (get mode 'derived-mode-parent)))) + (or info-lookup-mode (setq info-lookup-mode major-mode))) (defun info-lookup-change-mode (topic) @@ -732,7 +755,7 @@ Return nil if there is nothing appropriate in the buffer near point." :parse-rule "\\$[^({]\\|\\.[_A-Z]*\\|[_a-zA-Z0-9-]+\\|##\\|\\+=" :doc-spec '( ;; "(automake)Macro Index" is autoconf macros used in - ;; configure.in, not Makefile.am, so don't have that here. + ;; configure.ac, not Makefile.am, so don't have that here. ("(automake)Variable Index" nil "^[ \t]*`" "'") ;; In automake 1.4 macros and variables were a combined node. ("(automake)Macro and Variable Index" nil "^[ \t]*`" "'") @@ -858,8 +881,11 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'latex-mode :regexp "\\\\\\([a-zA-Z]+\\|[^a-zA-Z]\\)" - :doc-spec '(("(latex)Command Index" nil - "`" "\\({[^}]*}\\)?'"))) + :doc-spec `((,(if (Info-find-file "latex2e" t) + ;; From http://home.gna.org/latexrefman + "(latex2e)Command Index" + "(latex)Command Index") + nil "`" "\\({[^}]*}\\)?'"))) (info-lookup-maybe-add-help :mode 'emacs-lisp-mode