diff options
author | Juri Linkov <juri@jurta.org> | 2010-05-06 00:56:15 +0300 |
---|---|---|
committer | Juri Linkov <juri@jurta.org> | 2010-05-06 00:56:15 +0300 |
commit | 221a0647a281f614d5dd9253e318f41a6a573ab8 (patch) | |
tree | e298fb2706da665698f4a7317c42f7dc8189e2db /lisp/info.el | |
parent | 774b9a602e825a67746ab90cc42ac015e4a26da5 (diff) | |
download | emacs-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.el | 37 |
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)) |