[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/mh-e/mh-speed.el
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/mh-e/mh-speed.el |
Date: |
Fri, 04 Apr 2003 01:22:40 -0500 |
Index: emacs/lisp/mh-e/mh-speed.el
diff -c emacs/lisp/mh-e/mh-speed.el:1.1 emacs/lisp/mh-e/mh-speed.el:1.2
*** emacs/lisp/mh-e/mh-speed.el:1.1 Sat Jan 25 21:38:37 2003
--- emacs/lisp/mh-e/mh-speed.el Mon Feb 3 15:55:30 2003
***************
*** 31,37 ****
;;; Change Log:
! ;; $Id: mh-speed.el,v 1.1 2003/01/26 02:38:37 wohler Exp $
;;; Code:
--- 31,37 ----
;;; Change Log:
! ;; $Id: mh-speed.el,v 1.2 2003/02/03 20:55:30 wohler Exp $
;;; Code:
***************
*** 44,50 ****
(defvar mh-speed-refresh-flag nil)
(defvar mh-speed-last-selected-folder nil)
(defvar mh-speed-folder-map (make-hash-table :test #'equal))
- (defvar mh-speed-folders-cache (make-hash-table :test #'equal))
(defvar mh-speed-flists-cache (make-hash-table :test #'equal))
(defvar mh-speed-flists-process nil)
(defvar mh-speed-flists-timer nil)
--- 44,49 ----
***************
*** 256,262 ****
(defun mh-speed-add-buttons (folder level)
"Add speedbar button for FOLDER which is at indented by LEVEL amount."
! (let ((folder-list (mh-speed-folders folder)))
(mapc
(lambda (f)
(let* ((folder-name (format "%s%s%s" (or folder "+")
--- 255,261 ----
(defun mh-speed-add-buttons (folder level)
"Add speedbar button for FOLDER which is at indented by LEVEL amount."
! (let ((folder-list (mh-sub-folders folder)))
(mapc
(lambda (f)
(let* ((folder-name (format "%s%s%s" (or folder "+")
***************
*** 344,401 ****
(mh-visit-folder folder range)
(delete-other-windows)))))
! (defun mh-speed-folders (folder)
! "Find the subfolders of FOLDER.
! The function avoids running folders unnecessarily by caching the results of
! the actual folders call."
! (let ((match (gethash folder mh-speed-folders-cache 'no-result)))
! (cond ((eq match 'no-result)
! (setf (gethash folder mh-speed-folders-cache)
! (mh-speed-folders-actual folder)))
! (t match))))
!
! (defun mh-speed-folders-actual (folder)
! "Execute the command folders to return the sub-folders of FOLDER.
! Filters out the folder names that start with \".\" so that directories that
! aren't usually mail folders are hidden."
! (let* ((folder (cond ((and (stringp folder)
! (equal (substring folder 0 1) "+"))
! folder)
! (t nil)))
! (arg-list `(,(expand-file-name "folders" mh-progs)
! nil (t nil) nil "-noheader" "-norecurse"
! ,@(if (stringp folder) (list folder) ())))
! (results ()))
! (with-temp-buffer
! (apply #'call-process arg-list)
! (goto-char (point-min))
! (while (not (and (eolp) (bolp)))
! (goto-char (line-end-position))
! (let ((has-pos (search-backward " has " (line-beginning-position) t)))
! (when (integerp has-pos)
! (while (or (equal (char-after has-pos) ? )
! (equal (char-after has-pos) ?+))
! (decf has-pos))
! (incf has-pos)
! (let ((name (buffer-substring (line-beginning-position) has-pos)))
! (let ((first-char (substring name 0 1)))
! (unless (or (string-equal first-char ".")
! (string-equal first-char "#")
! (string-equal first-char ","))
! (push
! (cons name
! (search-forward "(others)" (line-end-position) t))
! results)))))
! (forward-line 1))))
! (setq results (nreverse results))
! (when (stringp folder)
! (setq results (cdr results))
! (let ((folder-name-len (length (format "%s/" (substring folder 1)))))
! (setq results (mapcar (lambda (f)
! (cons (substring (car f) folder-name-len)
! (cdr f)))
! results))))
! results))
;;;###mh-autoload
(defun mh-speed-flists (force)
--- 343,349 ----
(mh-visit-folder folder range)
(delete-other-windows)))))
! (defvar mh-speed-current-folder nil)
;;;###mh-autoload
(defun mh-speed-flists (force)
***************
*** 418,426 ****
(unless (and (processp mh-speed-flists-process)
(not (eq (process-status mh-speed-flists-process)
'exit)))
(setq mh-speed-flists-process
! (start-process (expand-file-name "flists" mh-progs) nil
! "flists" "-recurse"
"-sequence" (symbol-name mh-unseen-seq)))
(set-process-filter mh-speed-flists-process
'mh-speed-parse-flists-output)))))))
--- 366,382 ----
(unless (and (processp mh-speed-flists-process)
(not (eq (process-status mh-speed-flists-process)
'exit)))
+ (setq mh-speed-current-folder
+ (concat
+ (with-temp-buffer
+ (call-process (expand-file-name "folder" mh-progs)
+ nil '(t nil) nil "-fast")
+ (buffer-substring (point-min) (1- (point-max))))
+ "+"))
(setq mh-speed-flists-process
! (start-process "*flists*" nil
! (expand-file-name "flists" mh-progs)
! "-recurse"
"-sequence" (symbol-name mh-unseen-seq)))
(set-process-filter mh-speed-flists-process
'mh-speed-parse-flists-output)))))))
***************
*** 440,446 ****
(substring output position line-end))
mh-speed-partial-line "")
(multiple-value-setq (folder unseen total)
! (mh-parse-flist-output-line line))
(when (and folder unseen total)
(setf (gethash folder mh-speed-flists-cache) (cons unseen total))
(save-excursion
--- 396,402 ----
(substring output position line-end))
mh-speed-partial-line "")
(multiple-value-setq (folder unseen total)
! (mh-parse-flist-output-line line mh-speed-current-folder))
(when (and folder unseen total)
(setf (gethash folder mh-speed-flists-cache) (cons unseen total))
(save-excursion
***************
*** 489,498 ****
(parent (if last-slash (substring folder 0 last-slash) nil))
(parent-position (gethash parent mh-speed-folder-map))
(parent-change nil))
- (remhash parent mh-speed-folders-cache)
- (remhash folder mh-speed-folders-cache)
(when parent-position
! (let ((parent-kids (mh-speed-folders parent)))
(cond ((null parent-kids)
(setq parent-change ?+))
((and (null (cdr parent-kids))
--- 445,452 ----
(parent (if last-slash (substring folder 0 last-slash) nil))
(parent-position (gethash parent mh-speed-folder-map))
(parent-change nil))
(when parent-position
! (let ((parent-kids (mh-sub-folders parent)))
(cond ((null parent-kids)
(setq parent-change ?+))
((and (null (cdr parent-kids))
***************
*** 517,523 ****
(setq mh-speed-last-selected-folder nil)
(setq mh-speed-refresh-flag t)))
(when (equal folder "")
! (clrhash mh-speed-folders-cache)))))
;;;###mh-autoload
(defun mh-speed-add-folder (folder)
--- 471,477 ----
(setq mh-speed-last-selected-folder nil)
(setq mh-speed-refresh-flag t)))
(when (equal folder "")
! (clrhash mh-sub-folders-cache)))))
;;;###mh-autoload
(defun mh-speed-add-folder (folder)
***************
*** 545,551 ****
`(mh-children-p t)))
(when (get-text-property (line-beginning-position) 'mh-expanded)
(mh-speed-toggle))
- (remhash ancestor mh-speed-folders-cache)
(setq mh-speed-refresh-flag t))))
;; Make it slightly more general to allow for [ ] buttons to be changed to
--- 499,504 ----
- [Emacs-diffs] Changes to emacs/lisp/mh-e/mh-speed.el,
Miles Bader <=