summaryrefslogtreecommitdiff
path: root/lisp/info.el
diff options
context:
space:
mode:
authorJuri Linkov <juri@jurta.org>2010-05-06 00:56:15 +0300
committerJuri Linkov <juri@jurta.org>2010-05-06 00:56:15 +0300
commit221a0647a281f614d5dd9253e318f41a6a573ab8 (patch)
treee298fb2706da665698f4a7317c42f7dc8189e2db /lisp/info.el
parent774b9a602e825a67746ab90cc42ac015e4a26da5 (diff)
downloademacs-221a0647a281f614d5dd9253e318f41a6a573ab8.tar.gz
Add `slow' and `history' tags to the desktop data.
* info.el (Info-virtual-nodes) [*Index*]: Add `slow' tag. (Info-virtual-files) [*Apropos*]: Add `slow' tag. (Info-finder-find-node): Require `finder.el' to be able to restore node from the desktop. (Info-desktop-buffer-misc-data): Save all nodes. Save additional data `Info-history' and `slow' tag in the assoc list. (Info-restore-desktop-buffer): Don't restore nodes with the `slow' tag. Restore `Info-history'.
Diffstat (limited to 'lisp/info.el')
-rw-r--r--lisp/info.el37
1 files changed, 27 insertions, 10 deletions
diff --git a/lisp/info.el b/lisp/info.el
index b8eb1339d17..505bf859aba 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3104,6 +3104,7 @@ Give an empty topic name to go to the Index node itself."
(add-to-list 'Info-virtual-nodes
'("\\`\\*Index.*\\*\\'"
(find-node . Info-virtual-index-find-node)
+ (slow . t)
))
(defvar Info-virtual-index-nodes nil
@@ -3193,6 +3194,7 @@ search results."
(toc-nodes . Info-apropos-toc-nodes)
(find-file . Info-apropos-find-file)
(find-node . Info-apropos-find-node)
+ (slow . t)
))
(defvar Info-apropos-file "*Apropos*"
@@ -3348,6 +3350,7 @@ Build a menu of the possible matches."
(defun Info-finder-find-node (filename nodename &optional no-going-back)
"Finder-specific implementation of Info-find-node-2."
+ (require 'finder)
(cond
((equal nodename "Top")
;; Display Top menu with descriptions of the keywords
@@ -4836,21 +4839,35 @@ BUFFER is the buffer speedbar is requesting buttons for."
(defun Info-desktop-buffer-misc-data (desktop-dirname)
"Auxiliary information to be saved in desktop file."
- (unless (Info-virtual-file-p Info-current-file)
- (list Info-current-file Info-current-node)))
+ (list Info-current-file
+ Info-current-node
+ ;; Additional data as an association list.
+ (delq nil (list
+ (and Info-history
+ (cons 'history Info-history))
+ (and (Info-virtual-fun
+ 'slow Info-current-file Info-current-node)
+ (cons 'slow t))))))
(defun Info-restore-desktop-buffer (desktop-buffer-file-name
desktop-buffer-name
desktop-buffer-misc)
"Restore an Info buffer specified in a desktop file."
- (let ((first (nth 0 desktop-buffer-misc))
- (second (nth 1 desktop-buffer-misc)))
- (when (and first second)
- (when desktop-buffer-name
- (set-buffer (get-buffer-create desktop-buffer-name))
- (Info-mode))
- (Info-find-node first second)
- (current-buffer))))
+ (let* ((file (nth 0 desktop-buffer-misc))
+ (node (nth 1 desktop-buffer-misc))
+ (data (nth 2 desktop-buffer-misc))
+ (hist (assq 'history data))
+ (slow (assq 'slow data)))
+ ;; Don't restore nodes slow to regenerate.
+ (unless slow
+ (when (and file node)
+ (when desktop-buffer-name
+ (set-buffer (get-buffer-create desktop-buffer-name))
+ (Info-mode))
+ (Info-find-node file node)
+ (when hist
+ (setq Info-history (cdr hist)))
+ (current-buffer)))))
(add-to-list 'desktop-buffer-mode-handlers
'(Info-mode . Info-restore-desktop-buffer))