X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Felmo-util.el;h=5147fa853c9212f008dbfbbb4b2c2f5b9e513188;hb=221c9217efb7a56f122c2389864b7b3958afec1a;hp=e8eb757abe1ed77706588455bd9feb103debcbe8;hpb=b60c5eae46fd1a1886883999b808d3f35f977443;p=elisp%2Fwanderlust.git diff --git a/elmo/elmo-util.el b/elmo/elmo-util.el index e8eb757..5147fa8 100644 --- a/elmo/elmo-util.el +++ b/elmo/elmo-util.el @@ -29,7 +29,9 @@ ;;; Code: ;; -(eval-when-compile (require 'cl)) +(eval-when-compile + (require 'cl) + (require 'static)) (require 'elmo-vars) (require 'elmo-date) (require 'mcharset) @@ -60,27 +62,28 @@ (fset 'elmo-base64-decode-string (mel-find-function 'mime-decode-string "base64")) -(if elmo-use-hardlink - (defalias 'elmo-add-name-to-file 'add-name-to-file) - (defun elmo-add-name-to-file - (filename newname &optional ok-if-already-exists) - (copy-file filename newname ok-if-already-exists t))) +(eval-and-compile + (if elmo-use-hardlink + (defalias 'elmo-add-name-to-file 'add-name-to-file) + (defun elmo-add-name-to-file + (filename newname &optional ok-if-already-exists) + (copy-file filename newname ok-if-already-exists t)))) (defmacro elmo-set-work-buf (&rest body) "Execute BODY on work buffer. Work buffer remains." - (` (save-excursion - (set-buffer (get-buffer-create elmo-work-buf-name)) + `(save-excursion + (with-current-buffer (get-buffer-create elmo-work-buf-name) (set-buffer-multibyte default-enable-multibyte-characters) (erase-buffer) - (,@ body)))) + ,@body))) (put 'elmo-set-work-buf 'lisp-indent-function 0) (def-edebug-spec elmo-set-work-buf t) (defmacro elmo-bind-directory (dir &rest body) "Set current directory DIR and execute BODY." - (` (let ((default-directory (file-name-as-directory (, dir)))) - (,@ body)))) + `(let ((default-directory (file-name-as-directory ,dir))) + ,@body)) (put 'elmo-bind-directory 'lisp-indent-function 1) (def-edebug-spec elmo-bind-directory @@ -168,7 +171,7 @@ with FILENAME which defaults to `buffer-file-name'." (goto-char (point-min)) (setq case-fold-search nil) (re-search-forward "^;;;coding system: " - ;;(+ (point-min) 3000) t)) +;;; (+ (point-min) 3000) t)) nil t)) (looking-at "[^\t\n\r ]+") (find-coding-system @@ -482,6 +485,10 @@ Return value is a cons cell of (STRUCTURE . REST)" (setq list (cdr list)))) list) +(defun elmo-union (l1 l2) + "Make a union of two lists" + (elmo-uniq-sorted-list (sort (append l1 l2) #'<))) + (defun elmo-list-insert (list element after) (let* ((match (memq after list)) (rest (and match (cdr (memq after list))))) @@ -565,7 +572,7 @@ Return value is a cons cell of (STRUCTURE . REST)" print-length print-level) (prin1 elmo-passwd-alist (current-buffer)) (princ "\n" (current-buffer)) -;;; (if (and (file-exists-p filename) +;;; (if (and (file-exists-p filename) ;;; (not (equal 384 (file-modes filename)))) ;;; (error "%s is not safe.chmod 600 %s!" filename filename)) (if (file-writable-p filename) @@ -591,7 +598,7 @@ Return value is a cons cell of (STRUCTURE . REST)" (elmo-base64-encode-string pass))))) (if elmo-passwd-life-time (run-with-timer elmo-passwd-life-time nil - (` (lambda () (elmo-remove-passwd (, key)))))) + `(lambda () (elmo-remove-passwd ,key)))) pass))) (defun elmo-remove-passwd (key) @@ -819,7 +826,7 @@ Return value is a cons cell of (STRUCTURE . REST)" (directory-files path t "^[^\\.]") (error nil))) (result 0.0)) - ;; (result (nth 7 file-attr))) ... directory size +;;; (result (nth 7 file-attr))) ; ... directory size (while files (setq result (+ result (or (elmo-disk-usage (car files)) 0))) (setq files (cdr files))) @@ -1276,9 +1283,10 @@ MESSAGE is a doing part of progress message." (and (eq (car diff) 0) (< diff-time (nth 1 diff))))) -(if (fboundp 'std11-fetch-field) - (defalias 'elmo-field-body 'std11-fetch-field) ;;no narrow-to-region - (defalias 'elmo-field-body 'std11-field-body)) +(eval-and-compile + (if (fboundp 'std11-fetch-field) + (defalias 'elmo-field-body 'std11-fetch-field) ;;no narrow-to-region + (defalias 'elmo-field-body 'std11-field-body))) (defun elmo-unfold-field-body (name) (let ((value (elmo-field-body name))) @@ -1303,9 +1311,9 @@ MESSAGE is a doing part of progress message." (defmacro elmo-string (string) "STRING without text property." - (` (let ((obj (copy-sequence (, string)))) - (and obj (set-text-properties 0 (length obj) nil obj)) - obj))) + `(let ((obj (copy-sequence ,string))) + (and obj (set-text-properties 0 (length obj) nil obj)) + obj)) (defun elmo-flatten (list-of-list) "Flatten LIST-OF-LIST." @@ -1706,12 +1714,12 @@ NUMBER-SET is altered." prev (nconc (list - ;; (beg . (1- number)) +;;; (beg . (1- number)) (let ((new (cons (car elem) (1- number)))) (if (eq (car new) (cdr new)) (car new) new)) - ;; ((1+ number) . end) +;;; ((1+ number) . end) (let ((new (cons (1+ number) (cdr elem)))) (if (eq (car new) (cdr new)) (car new) @@ -1859,15 +1867,15 @@ STATUS is one of 'section, 'entire or nil. 'section means partial section cache exists. 'entire means entire cache exists. If the cache is partial file-cache, TYPE is 'partial." - (` (cons (, path) (, status)))) + `(cons ,path ,status)) (defmacro elmo-file-cache-path (file-cache) "Returns the file path of the FILE-CACHE." - (` (car (, file-cache)))) + `(car ,file-cache)) (defmacro elmo-file-cache-status (file-cache) "Returns the status of the FILE-CACHE." - (` (cdr (, file-cache)))) + `(cdr ,file-cache)) (defsubst elmo-cache-to-msgid (filename) (concat "<" (elmo-recover-string-from-filename filename) ">")) @@ -1904,7 +1912,7 @@ If optional argument SECTION is specified, partial cache path is returned." "Return file name for the file-cache corresponds to the section. PATH is the file-cache path. SECTION is the section string." - (` (expand-file-name (or (, section) "") (, path)))) + `(expand-file-name (or ,section "") ,path)) (defun elmo-file-cache-delete (path) "Delete a cache on PATH." @@ -2066,7 +2074,7 @@ If KBYTES is kilo bytes (This value must be float)." (cons (car (car cfl)) (car flist))))) (setq cfl (cdr cfl))) -;;; (prin1 firsts) +;;; (prin1 firsts) (while firsts (if (and (not oldest-entity) (cdr (cdr (car firsts)))) @@ -2104,12 +2112,12 @@ If KBYTES is kilo bytes (This value must be float)." "Expire cache file by age. Optional argument DAYS specifies the days to expire caches." (interactive) - (let ((age (or (and days (int-to-string days)) + (let ((age (or (and days (number-to-string days)) (and (interactive-p) (read-from-minibuffer (format "Enter days (%s): " elmo-cache-expire-default-age))) - (int-to-string elmo-cache-expire-default-age))) + (number-to-string elmo-cache-expire-default-age))) (dirs (directory-files elmo-cache-directory t "^[^\\.]")) @@ -2117,7 +2125,7 @@ Optional argument DAYS specifies the days to expire caches." curtime) (if (string= age "") (setq age elmo-cache-expire-default-age) - (setq age (string-to-int age))) + (setq age (string-to-number age))) (setq curtime (current-time)) (setq curtime (+ (* (nth 0 curtime) (float 65536)) (nth 1 curtime)))