changeset 108247:ea9732b429b6

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'.
author Juri Linkov <juri@jurta.org>
date Thu, 06 May 2010 00:56:15 +0300
parents ea6ba19c6edd
children b597fe1cdc14
files lisp/ChangeLog lisp/info.el
diffstat 2 files changed, 40 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed May 05 13:51:40 2010 -0400
+++ b/lisp/ChangeLog	Thu May 06 00:56:15 2010 +0300
@@ -1,3 +1,16 @@
+2010-05-05  Juri Linkov  <juri@jurta.org>
+
+	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'.
+
 2010-05-05  Michael Albinus  <michael.albinus@gmx.de>
 
 	Add FORCE argument to `delete-file'.
--- a/lisp/info.el	Wed May 05 13:51:40 2010 -0400
+++ b/lisp/info.el	Thu May 06 00:56:15 2010 +0300
@@ -3104,6 +3104,7 @@
 (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 @@
 	       (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 @@
 
 (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 @@
 
 (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))