34 |
;;; Code: |
;;; Code: |
35 |
|
|
36 |
;; Requires |
;; Requires |
37 |
(require 'mh-utils) |
(eval-when-compile (require 'mh-acros)) |
38 |
(mh-require-cl) |
(mh-require-cl) |
39 |
(require 'mh-e) |
(require 'mh-e) |
40 |
(require 'speedbar) |
(require 'speedbar) |
41 |
|
(require 'timer) |
42 |
|
|
43 |
;; Global variables |
;; Global variables |
44 |
(defvar mh-speed-refresh-flag nil) |
(defvar mh-speed-refresh-flag nil) |
91 |
"+" mh-speed-expand-folder |
"+" mh-speed-expand-folder |
92 |
"-" mh-speed-contract-folder |
"-" mh-speed-contract-folder |
93 |
"\r" mh-speed-view |
"\r" mh-speed-view |
94 |
"f" mh-speed-flists |
"r" mh-speed-refresh) |
|
"i" mh-speed-invalidate-map) |
|
95 |
|
|
96 |
(defvar mh-show-speedbar-key-map mh-folder-speedbar-key-map) |
(defvar mh-show-speedbar-key-map mh-folder-speedbar-key-map) |
97 |
(defvar mh-letter-speedbar-key-map mh-folder-speedbar-key-map) |
(defvar mh-letter-speedbar-key-map mh-folder-speedbar-key-map) |
98 |
|
|
99 |
;; Menus for speedbar... |
;; Menus for speedbar... |
100 |
(defvar mh-folder-speedbar-menu-items |
(defvar mh-folder-speedbar-menu-items |
101 |
'(["Visit Folder" mh-speed-view |
'("--" |
102 |
|
["Visit Folder" mh-speed-view |
103 |
(save-excursion |
(save-excursion |
104 |
(set-buffer speedbar-buffer) |
(set-buffer speedbar-buffer) |
105 |
(get-text-property (line-beginning-position) 'mh-folder))] |
(get-text-property (line-beginning-position) 'mh-folder))] |
106 |
["Expand nested folders" mh-speed-expand-folder |
["Expand Nested Folders" mh-speed-expand-folder |
107 |
(and (get-text-property (line-beginning-position) 'mh-children-p) |
(and (get-text-property (line-beginning-position) 'mh-children-p) |
108 |
(not (get-text-property (line-beginning-position) 'mh-expanded)))] |
(not (get-text-property (line-beginning-position) 'mh-expanded)))] |
109 |
["Contract nested folders" mh-speed-contract-folder |
["Contract Nested Folders" mh-speed-contract-folder |
110 |
(and (get-text-property (line-beginning-position) 'mh-children-p) |
(and (get-text-property (line-beginning-position) 'mh-children-p) |
111 |
(get-text-property (line-beginning-position) 'mh-expanded))] |
(get-text-property (line-beginning-position) 'mh-expanded))] |
112 |
["Run Flists" mh-speed-flists t] |
["Refresh Speedbar" mh-speed-refresh t]) |
|
["Invalidate cached folders" mh-speed-invalidate-map t]) |
|
113 |
"Extra menu items for speedbar.") |
"Extra menu items for speedbar.") |
114 |
|
|
115 |
(defvar mh-show-speedbar-menu-items mh-folder-speedbar-menu-items) |
(defvar mh-show-speedbar-menu-items mh-folder-speedbar-menu-items) |
352 |
(defvar mh-speed-current-folder nil) |
(defvar mh-speed-current-folder nil) |
353 |
(defvar mh-speed-flists-folder nil) |
(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))) |
362 |
|
|
363 |
;;;###mh-autoload |
;;;###mh-autoload |
364 |
(defun mh-speed-flists (force &rest folders) |
(defun mh-speed-flists (force &rest folders) |
365 |
"Execute flists -recurse and update message counts. |
"Execute flists -recurse and update message counts. |
404 |
(or mh-speed-flists-folder '("-recurse")))) |
(or mh-speed-flists-folder '("-recurse")))) |
405 |
;; Run flists on all folders the next time around... |
;; Run flists on all folders the next time around... |
406 |
(setq mh-speed-flists-folder nil) |
(setq mh-speed-flists-folder nil) |
407 |
|
(mh-process-kill-without-query mh-speed-flists-process) |
408 |
(set-process-filter mh-speed-flists-process |
(set-process-filter mh-speed-flists-process |
409 |
'mh-speed-parse-flists-output))))))) |
'mh-speed-parse-flists-output))))))) |
410 |
|
|
503 |
(when (equal folder "") |
(when (equal folder "") |
504 |
(clrhash mh-sub-folders-cache))))) |
(clrhash mh-sub-folders-cache))))) |
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 |
|
|
514 |
;;;###mh-autoload |
;;;###mh-autoload |
515 |
(defun mh-speed-add-folder (folder) |
(defun mh-speed-add-folder (folder) |
516 |
"Add FOLDER since it is being created. |
"Add FOLDER since it is being created. |