1 |
;;; mh-speed.el --- Speedbar interface for MH-E. |
;;; mh-speed.el --- Speedbar interface for MH-E. |
2 |
|
|
3 |
;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. |
;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. |
4 |
|
|
5 |
;; Author: Satyaki Das <satyaki@theforce.stanford.edu> |
;; Author: Satyaki Das <satyaki@theforce.stanford.edu> |
6 |
;; Maintainer: Bill Wohler <wohler@newt.com> |
;; Maintainer: Bill Wohler <wohler@newt.com> |
34 |
;;; Code: |
;;; Code: |
35 |
|
|
36 |
;; Requires |
;; Requires |
37 |
(require 'cl) |
(require 'mh-utils) |
38 |
|
(mh-require-cl) |
39 |
(require 'mh-e) |
(require 'mh-e) |
40 |
(require 'speedbar) |
(require 'speedbar) |
41 |
|
|
341 |
(interactive) |
(interactive) |
342 |
(declare (ignore args)) |
(declare (ignore args)) |
343 |
(let* ((folder (get-text-property (line-beginning-position) 'mh-folder)) |
(let* ((folder (get-text-property (line-beginning-position) 'mh-folder)) |
344 |
(range (and (stringp folder) (mh-read-msg-range folder)))) |
(range (and (stringp folder) |
345 |
|
(mh-read-range "Scan" folder t nil nil |
346 |
|
mh-interpret-number-as-range-flag)))) |
347 |
(when (stringp folder) |
(when (stringp folder) |
348 |
(speedbar-with-attached-buffer |
(speedbar-with-attached-buffer |
349 |
(mh-visit-folder folder range) |
(mh-visit-folder folder range) |
353 |
(defvar mh-speed-flists-folder nil) |
(defvar mh-speed-flists-folder nil) |
354 |
|
|
355 |
;;;###mh-autoload |
;;;###mh-autoload |
356 |
(defun mh-speed-flists (force &optional folder) |
(defun mh-speed-flists (force &rest folders) |
357 |
"Execute flists -recurse and update message counts. |
"Execute flists -recurse and update message counts. |
358 |
If FORCE is non-nil the timer is reset. If FOLDER is non-nil then flists is run |
If FORCE is non-nil the timer is reset. |
359 |
|
|
360 |
|
Any number of optional FOLDERS can be specified. If specified, flists is run |
361 |
only for that one folder." |
only for that one folder." |
362 |
(interactive (list t)) |
(interactive (list t)) |
363 |
(when force |
(when force |
370 |
(kill-process mh-speed-flists-process) |
(kill-process mh-speed-flists-process) |
371 |
(setq mh-speed-partial-line "") |
(setq mh-speed-partial-line "") |
372 |
(setq mh-speed-flists-process nil))) |
(setq mh-speed-flists-process nil))) |
373 |
(setq mh-speed-flists-folder folder) |
(setq mh-speed-flists-folder folders) |
374 |
(unless mh-speed-flists-timer |
(unless mh-speed-flists-timer |
375 |
(setq mh-speed-flists-timer |
(setq mh-speed-flists-timer |
376 |
(run-at-time |
(run-at-time |
381 |
'exit))) |
'exit))) |
382 |
(setq mh-speed-current-folder |
(setq mh-speed-current-folder |
383 |
(concat |
(concat |
384 |
(with-temp-buffer |
(if mh-speed-flists-folder |
385 |
(call-process (expand-file-name "folder" mh-progs) |
(substring (car (reverse mh-speed-flists-folder)) 1) |
386 |
nil '(t nil) nil "-fast") |
(with-temp-buffer |
387 |
(buffer-substring (point-min) (1- (point-max)))) |
(call-process (expand-file-name "folder" mh-progs) |
388 |
|
nil '(t nil) nil "-fast") |
389 |
|
(buffer-substring (point-min) (1- (point-max))))) |
390 |
"+")) |
"+")) |
391 |
(setq mh-speed-flists-process |
(setq mh-speed-flists-process |
392 |
(start-process "*flists*" nil |
(apply #'start-process "*flists*" nil |
393 |
(expand-file-name "flists" mh-progs) |
(expand-file-name "flists" mh-progs) |
394 |
(or mh-speed-flists-folder "-recurse") |
(if mh-speed-flists-folder "-noall" "-all") |
395 |
(if mh-speed-flists-folder "-noall" "-all") |
"-sequence" (symbol-name mh-unseen-seq) |
396 |
"-sequence" (symbol-name mh-unseen-seq))) |
(or mh-speed-flists-folder '("-recurse")))) |
397 |
;; Run flists on all folders the next time around... |
;; Run flists on all folders the next time around... |
398 |
(setq mh-speed-flists-folder nil) |
(setq mh-speed-flists-folder nil) |
399 |
(set-process-filter mh-speed-flists-process |
(set-process-filter mh-speed-flists-process |