From 0f0c1f27a974ee41d96f19a5930e54f14e41ba89 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 1 Apr 2011 13:10:47 +0300 Subject: [PATCH] Add a new command `info-display-manual'. lisp/info.el (info-display-manual): New function. --- etc/NEWS | 8 ++++++++ lisp/ChangeLog | 4 ++++ lisp/info.el | 21 +++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 14d788ec554..999d278dc2e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -676,6 +676,14 @@ binding `log-view-expanded-log-entry-function' to a suitable function. *** New command `nato-region' converts text to NATO phonetic alphabet. +*** The new command `info-display-manual' will display an Info manual +specified by its name. If that manual is already visited in some Info +buffer within the current session, the command will display that +buffer. Otherwise, it will load the manual and display it. This is +handy if you have many manuals in many Info buffers, and don't +remember the name of the buffer visiting the manual you want to +consult. + * New Modes and Packages in Emacs 24.1 diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 32e9c92a255..5c6e7365491 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2011-04-01 Eli Zaretskii + + * info.el (info-display-manual): New function. + 2011-03-31 Stefan Monnier * loadup.el: Load minibuffer after loaddefs, to use define-minor-mode. diff --git a/lisp/info.el b/lisp/info.el index fb753659737..34c486d3754 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -4930,6 +4930,27 @@ type returned by `Info-bookmark-make-record', which see." (bookmark-default-handler `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bmk))))) + +;;;###autoload +(defun info-display-manual (manual) + "Go to Info buffer that displays MANUAL, creating it if none already exists." + (interactive "sManual name: ") + (let ((blist (buffer-list)) + (manual-re (concat "\\(/\\|\\`\\)" manual "\\(\\.\\|\\'\\)")) + (case-fold-search t) + found) + (dolist (buffer blist) + (with-current-buffer buffer + (when (and (eq major-mode 'Info-mode) + (stringp Info-current-file) + (string-match manual-re Info-current-file)) + (setq found buffer + blist nil)))) + (if found + (pop-to-buffer found) + (info-initialize) + (info (Info-find-file manual))))) + (provide 'info) ;;; info.el ends here -- 2.39.2