Browser-like Info-history button menu (bug#37184)
* doc/misc/info.texi (Help-Int): Using tool-bar to navigate history. * lisp/info.el (Info-history-menu): New function. (Info-history-back-menu, Info-history-forward-menu): New commands. (Info-mode-map): Bind Info-history-back-menu and Info-history-forward-menu to tool-bar on C-key.
This commit is contained in:
parent
ba1f7797fb
commit
ba5d9795f8
3 changed files with 45 additions and 0 deletions
|
@ -886,6 +886,14 @@ which the header says is the @samp{Previous} node (from this node, the
|
|||
to revisit nodes in the history list in the forward direction, so that
|
||||
@kbd{r} will return you to the node you came from by typing @kbd{l}.
|
||||
|
||||
@cindex using tool-bar to navigate history
|
||||
Clicking the mouse on the left arrow icon in the tool-bar while
|
||||
holding down the @key{CTRL} key in Emacs opens a menu of previously
|
||||
visited nodes: the same nodes that you can revisit by
|
||||
@code{Info-history-back}. Selecting a node after clicking on the
|
||||
right arrow icon revisits the same nodes as available by
|
||||
@code{Info-history-forward}.
|
||||
|
||||
@kindex L @r{(Info mode)}
|
||||
@findex Info-history
|
||||
@cindex history list of visited nodes
|
||||
|
|
5
etc/NEWS
5
etc/NEWS
|
@ -953,6 +953,11 @@ early init file.
|
|||
|
||||
** Info
|
||||
|
||||
+++
|
||||
*** Clicking on the left/right arrow icon in the Info tool-bar while
|
||||
holding down the Ctrl key pops up a menu of previously visited Info nodes
|
||||
where you can select a node to go back (like in browsers).
|
||||
|
||||
---
|
||||
*** Info can now follow 'file://' protocol URLs.
|
||||
The 'file://' URLs in Info documents can now be followed by passing
|
||||
|
|
32
lisp/info.el
32
lisp/info.el
|
@ -4059,6 +4059,8 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
|
|||
(define-key map [follow-link] 'mouse-face)
|
||||
(define-key map [XF86Back] 'Info-history-back)
|
||||
(define-key map [XF86Forward] 'Info-history-forward)
|
||||
(define-key map [tool-bar C-Back\ in\ history] 'Info-history-back-menu)
|
||||
(define-key map [tool-bar C-Forward\ in\ history] 'Info-history-forward-menu)
|
||||
map)
|
||||
"Keymap containing Info commands.")
|
||||
|
||||
|
@ -4151,6 +4153,36 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
|
|||
:vert-only t)
|
||||
map))
|
||||
|
||||
(defun Info-history-menu (e name history command)
|
||||
(let* ((i (length history))
|
||||
(map (make-sparse-keymap name)))
|
||||
(mapc (lambda (history)
|
||||
(let ((file (nth 0 history))
|
||||
(node (nth 1 history)))
|
||||
(when (stringp file)
|
||||
(setq file (file-name-sans-extension
|
||||
(file-name-nondirectory file))))
|
||||
(define-key map (vector (intern (format "history-%i" i)))
|
||||
`(menu-item ,(format "(%s) %s" file node)
|
||||
(lambda ()
|
||||
(interactive)
|
||||
(dotimes (_ ,i) (call-interactively ',command))))))
|
||||
(setq i (1- i)))
|
||||
(reverse history))
|
||||
(let* ((selection (x-popup-menu e map))
|
||||
(binding (and selection (lookup-key map (vector (car selection))))))
|
||||
(if binding (call-interactively binding)))))
|
||||
|
||||
(defun Info-history-back-menu (e)
|
||||
"Pop up the menu with a list of previously visited Info nodes."
|
||||
(interactive "e")
|
||||
(Info-history-menu e "Back in history" Info-history 'Info-history-back))
|
||||
|
||||
(defun Info-history-forward-menu (e)
|
||||
"Pop up the menu with a list of Info nodes visited with ‘Info-history-back’."
|
||||
(interactive "e")
|
||||
(Info-history-menu e "Forward in history" Info-history-forward 'Info-history-forward))
|
||||
|
||||
(defvar Info-menu-last-node nil)
|
||||
;; Last node the menu was created for.
|
||||
;; Value is a list, (FILE-NAME NODE-NAME).
|
||||
|
|
Loading…
Add table
Reference in a new issue