comparison lisp/mh-e/mh-speed.el @ 89966:d8411455de48

Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-32 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-486 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-487 Tweak permissions * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-488 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-489 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-490 Update from CVS: man/fixit.texi (Spelling): Fix typo. * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-491 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-494 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-495 Update from CVS: Add missing lisp/mh-e files * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-496 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-499 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-500 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-513 Update from CVS
author Miles Bader <miles@gnu.org>
date Fri, 27 Aug 2004 07:00:34 +0000
parents 97905c4f1a42 e9a6cbc8ca5e
children f042e7c0fe20
comparison
equal deleted inserted replaced
89965:5e9097d1ad99 89966:d8411455de48
32 ;;; Change Log: 32 ;;; Change Log:
33 33
34 ;;; Code: 34 ;;; Code:
35 35
36 ;; Requires 36 ;; Requires
37 (require 'mh-utils) 37 (eval-when-compile (require 'mh-acros))
38 (mh-require-cl) 38 (mh-require-cl)
39 (require 'mh-e) 39 (require 'mh-e)
40 (require 'speedbar) 40 (require 'speedbar)
41 (require 'timer)
41 42
42 ;; Global variables 43 ;; Global variables
43 (defvar mh-speed-refresh-flag nil) 44 (defvar mh-speed-refresh-flag nil)
44 (defvar mh-speed-last-selected-folder nil) 45 (defvar mh-speed-last-selected-folder nil)
45 (defvar mh-speed-folder-map (make-hash-table :test #'equal)) 46 (defvar mh-speed-folder-map (make-hash-table :test #'equal))
88 "Specialized speedbar keymap for MH-E buffers.") 89 "Specialized speedbar keymap for MH-E buffers.")
89 (gnus-define-keys mh-folder-speedbar-key-map 90 (gnus-define-keys mh-folder-speedbar-key-map
90 "+" mh-speed-expand-folder 91 "+" mh-speed-expand-folder
91 "-" mh-speed-contract-folder 92 "-" mh-speed-contract-folder
92 "\r" mh-speed-view 93 "\r" mh-speed-view
93 "f" mh-speed-flists 94 "r" mh-speed-refresh)
94 "i" mh-speed-invalidate-map)
95 95
96 (defvar mh-show-speedbar-key-map mh-folder-speedbar-key-map) 96 (defvar mh-show-speedbar-key-map mh-folder-speedbar-key-map)
97 (defvar mh-letter-speedbar-key-map mh-folder-speedbar-key-map) 97 (defvar mh-letter-speedbar-key-map mh-folder-speedbar-key-map)
98 98
99 ;; Menus for speedbar... 99 ;; Menus for speedbar...
100 (defvar mh-folder-speedbar-menu-items 100 (defvar mh-folder-speedbar-menu-items
101 '(["Visit Folder" mh-speed-view 101 '("--"
102 ["Visit Folder" mh-speed-view
102 (save-excursion 103 (save-excursion
103 (set-buffer speedbar-buffer) 104 (set-buffer speedbar-buffer)
104 (get-text-property (line-beginning-position) 'mh-folder))] 105 (get-text-property (line-beginning-position) 'mh-folder))]
105 ["Expand nested folders" mh-speed-expand-folder 106 ["Expand Nested Folders" mh-speed-expand-folder
106 (and (get-text-property (line-beginning-position) 'mh-children-p) 107 (and (get-text-property (line-beginning-position) 'mh-children-p)
107 (not (get-text-property (line-beginning-position) 'mh-expanded)))] 108 (not (get-text-property (line-beginning-position) 'mh-expanded)))]
108 ["Contract nested folders" mh-speed-contract-folder 109 ["Contract Nested Folders" mh-speed-contract-folder
109 (and (get-text-property (line-beginning-position) 'mh-children-p) 110 (and (get-text-property (line-beginning-position) 'mh-children-p)
110 (get-text-property (line-beginning-position) 'mh-expanded))] 111 (get-text-property (line-beginning-position) 'mh-expanded))]
111 ["Run Flists" mh-speed-flists t] 112 ["Refresh Speedbar" mh-speed-refresh t])
112 ["Invalidate cached folders" mh-speed-invalidate-map t])
113 "Extra menu items for speedbar.") 113 "Extra menu items for speedbar.")
114 114
115 (defvar mh-show-speedbar-menu-items mh-folder-speedbar-menu-items) 115 (defvar mh-show-speedbar-menu-items mh-folder-speedbar-menu-items)
116 (defvar mh-letter-speedbar-menu-items mh-folder-speedbar-menu-items) 116 (defvar mh-letter-speedbar-menu-items mh-folder-speedbar-menu-items)
117 117
349 (mh-visit-folder folder range) 349 (mh-visit-folder folder range)
350 (delete-other-windows))))) 350 (delete-other-windows)))))
351 351
352 (defvar mh-speed-current-folder nil) 352 (defvar mh-speed-current-folder nil)
353 (defvar mh-speed-flists-folder nil) 353 (defvar mh-speed-flists-folder nil)
354
355 (defmacro mh-process-kill-without-query (process)
356 "PROCESS can be killed without query on Emacs exit.
357 Avoid using `process-kill-without-query' if possible since it is now
358 obsolete."
359 (if (fboundp 'set-process-query-on-exit-flag)
360 `(set-process-query-on-exit-flag ,process nil)
361 `(process-kill-without-query ,process)))
354 362
355 ;;;###mh-autoload 363 ;;;###mh-autoload
356 (defun mh-speed-flists (force &rest folders) 364 (defun mh-speed-flists (force &rest folders)
357 "Execute flists -recurse and update message counts. 365 "Execute flists -recurse and update message counts.
358 If FORCE is non-nil the timer is reset. 366 If FORCE is non-nil the timer is reset.
394 (if mh-speed-flists-folder "-noall" "-all") 402 (if mh-speed-flists-folder "-noall" "-all")
395 "-sequence" (symbol-name mh-unseen-seq) 403 "-sequence" (symbol-name mh-unseen-seq)
396 (or mh-speed-flists-folder '("-recurse")))) 404 (or mh-speed-flists-folder '("-recurse"))))
397 ;; Run flists on all folders the next time around... 405 ;; Run flists on all folders the next time around...
398 (setq mh-speed-flists-folder nil) 406 (setq mh-speed-flists-folder nil)
407 (mh-process-kill-without-query mh-speed-flists-process)
399 (set-process-filter mh-speed-flists-process 408 (set-process-filter mh-speed-flists-process
400 'mh-speed-parse-flists-output))))))) 409 'mh-speed-parse-flists-output)))))))
401 410
402 ;; Copied from mh-make-folder-list-filter... 411 ;; Copied from mh-make-folder-list-filter...
403 (defun mh-speed-parse-flists-output (process output) 412 (defun mh-speed-parse-flists-output (process output)
492 (setq mh-speed-last-selected-folder nil) 501 (setq mh-speed-last-selected-folder nil)
493 (setq mh-speed-refresh-flag t))) 502 (setq mh-speed-refresh-flag t)))
494 (when (equal folder "") 503 (when (equal folder "")
495 (clrhash mh-sub-folders-cache))))) 504 (clrhash mh-sub-folders-cache)))))
496 505
506 (defun mh-speed-refresh ()
507 "Refresh the speedbar.
508 Use this function to refresh the speedbar if folders have been added or
509 deleted or message ranges have been updated outside of MH-E."
510 (interactive)
511 (mh-speed-flists t)
512 (mh-speed-invalidate-map ""))
513
497 ;;;###mh-autoload 514 ;;;###mh-autoload
498 (defun mh-speed-add-folder (folder) 515 (defun mh-speed-add-folder (folder)
499 "Add FOLDER since it is being created. 516 "Add FOLDER since it is being created.
500 The function invalidates the latest ancestor that is present." 517 The function invalidates the latest ancestor that is present."
501 (save-excursion 518 (save-excursion