From 221a0647a281f614d5dd9253e318f41a6a573ab8 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Thu, 6 May 2010 00:56:15 +0300 Subject: [PATCH] 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'. --- lisp/ChangeLog | 13 +++++++++++++ lisp/info.el | 37 +++++++++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 23e81510cb1..d35340beb10 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,16 @@ +2010-05-05 Juri Linkov + + 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 Add FORCE argument to `delete-file'. 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)) -- 2.39.2