X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-localdir.el;h=664204eef2eddda13c887d05f7b8f5468afe7f49;hb=2402d112a3adc660c75f747ec88d9b71b7cdaff9;hp=1b351aa469d080d192a731e4a523a385cf2e0050;hpb=36e07b6bdc534c37d61e2c27c5e34f2b9cb15f48;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-localdir.el b/elmo/elmo-localdir.el index 1b351aa..664204e 100644 --- a/elmo/elmo-localdir.el +++ b/elmo/elmo-localdir.el @@ -1,4 +1,4 @@ -;;; elmo-localdir.el -- Localdir Interface for ELMO. +;;; elmo-localdir.el --- Localdir Interface for ELMO. ;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi ;; Copyright (C) 1998,1999,2000 Masahiro MURATA @@ -91,12 +91,13 @@ 'identity (mapcar 'elmo-replace-string-as-filename - (split-string (elmo-localdir-folder-dir-name-internal folder) - "/")) + (split-string + (expand-file-name (elmo-localdir-folder-dir-name-internal folder)) + "/")) "/") (expand-file-name ;;"localdir" (symbol-name (elmo-folder-type-internal folder)) - elmo-msgdb-dir))) + elmo-msgdb-directory))) (luna-define-method elmo-message-file-name ((folder elmo-localdir-folder) @@ -121,10 +122,10 @@ numbers &optional start-number) - (let ((temp-dir (elmo-folder-make-temp-dir folder)) + (let ((temp-dir (elmo-folder-make-temporary-directory folder)) (cur-number (or start-number 0))) (dolist (number numbers) - (elmo-add-name-to-file + (elmo-copy-file (expand-file-name (int-to-string number) (elmo-localdir-folder-directory-internal folder)) @@ -220,15 +221,14 @@ folder (or number (1+ (car (elmo-folder-status folder))))))) - (if (file-writable-p filename) - (write-region-as-binary - (point-min) (point-max) filename nil 'no-msg)) - t)) - -(luna-define-method elmo-folder-append-messages :around ((folder elmo-localdir-folder) - src-folder numbers - unread-marks - &optional same-number) + (when (file-writable-p filename) + (write-region-as-binary + (point-min) (point-max) filename nil 'no-msg) + t))) + +(luna-define-method elmo-folder-append-messages :around + ((folder elmo-localdir-folder) + src-folder numbers unread-marks &optional same-number) (if (elmo-folder-message-file-p src-folder) (let ((dir (elmo-localdir-folder-directory-internal folder)) (succeeds numbers) @@ -240,6 +240,7 @@ (int-to-string (if same-number (car numbers) next-num)) dir)) + (elmo-progress-notify 'elmo-folder-move-messages) (if (and (setq numbers (cdr numbers)) (not same-number)) (setq next-num @@ -295,11 +296,11 @@ (elmo-make-directory dir)) t))) -(luna-define-method elmo-folder-delete ((folder elmo-localdir-folder)) +(luna-define-method elmo-folder-delete :before ((folder elmo-localdir-folder)) (let ((dir (elmo-localdir-folder-directory-internal folder))) (if (not (file-directory-p dir)) (error "No such directory: %s" dir) - (elmo-delete-directory dir t) + (elmo-delete-match-files dir "[0-9]+" t) t))) (luna-define-method elmo-folder-rename-internal ((folder elmo-localdir-folder) @@ -311,7 +312,7 @@ (error "No such directory: %s" old) (if (file-exists-p new) (error "Already exists directory: %s" new) - (if (not (file-exists-p new-dir)) + (if (not (file-directory-p new-dir)) (elmo-make-directory new-dir)) (rename-file old new) t)))) @@ -323,44 +324,6 @@ (elmo-localdir-folder-directory-internal folder)) condition number number-list)) -(luna-define-method elmo-folder-search ((folder elmo-localdir-folder) - condition &optional numbers) - (let* ((msgs (or numbers (elmo-folder-list-messages folder))) - (num (length msgs)) - (i 0) - last cur number-list case-fold-search ret-val) - (cond - ;; short cut. - ((and (vectorp condition) - (string= (elmo-filter-key condition) "last")) - (nthcdr (max (- (length msgs) - (string-to-int (elmo-filter-value condition))) - 0) - msgs)) - ((and (vectorp condition) - (string= (elmo-filter-key condition) "first")) - (let ((rest (nthcdr (string-to-int (elmo-filter-value condition) ) - msgs))) - (mapcar '(lambda (x) - (delete x msgs)) rest)) - msgs) - (t - (setq number-list msgs) - (while msgs - (if (elmo-localdir-field-condition-match folder condition - (car msgs) number-list) - (setq ret-val (cons (car msgs) ret-val))) - (when (> num elmo-display-progress-threshold) - (setq i (1+ i)) - (setq cur (/ (* i 100) num)) - (unless (eq cur last) - (elmo-display-progress - 'elmo-localdir-search "Searching..." - cur) - (setq last cur))) - (setq msgs (cdr msgs))) - (nreverse ret-val))))) - (luna-define-method elmo-folder-pack-numbers ((folder elmo-localdir-folder)) (let* ((dir (elmo-localdir-folder-directory-internal folder)) (msgdb (elmo-folder-msgdb folder)) @@ -401,12 +364,10 @@ (message "Packing...done") (elmo-folder-set-msgdb-internal folder - (list (elmo-msgdb-get-overview msgdb) - onum-alist - new-mark-alist - ;; remake hash table - (elmo-msgdb-make-overview-hashtb - (elmo-msgdb-get-overview msgdb)))))) + (elmo-make-msgdb + (elmo-msgdb-get-overview msgdb) + onum-alist + new-mark-alist)))) (luna-define-method elmo-folder-message-file-p ((folder elmo-localdir-folder)) t)