;; You should have received a copy of the GNU General Public License
;; along with mymail. If not, see <http://www.gnu.org/licenses/>.
-(add-to-list 'recentf-exclude "/tmp/mymail-vm-.*\.mbox")
+;; You may want to add
+;;
+;; (add-to-list 'recentf-exclude "/tmp/mymail-vm-.*\.mbox")
+;;
+;; to your .emacs
+;;
+;; I also use
+;;
+;; (define-key vm-summary-mode-map "\\" 'mymail/vm-visit-folder)
+;;
+;; So that pressing "\" in the summary start a search with mymail
+
+(defgroup mymail ()
+ "Command to visit a folder built on-the-fly with mymail"
+ :version "0.9.10")
+
+(defcustom mymail/default-additional-search-requests ""
+ "Comma-separated list of search requests to add to any search"
+ :type 'string
+ :group 'mymail)
-(defcustom mymail/default-search-request ""
- "Default request to add to any search"
- :type 'string)
+(defcustom mymail/default-search-request nil
+ "Default request to use in place of the empty search"
+ :type 'string
+ :group 'mymail)
(defun mymail/vm-visit-folder (param)
"Read a comma-separated list of search requests for mymail,
create a temporary mbox with the resulting mails, and open it in
vm with `vm-visit-folder'.
-The string `mymail/default-search-request' is automatically
+If the request string is empty, use
+`mymail/default-search-request' instead.
+
+The string `mymail/default-additional-search-requests' is automatically
concatenated to the provided request, except if the request is
prefaced with \\."
(interactive
(list (read-string "mymail-vm: " nil 'mymail-vm-history)))
+ (if (string= param "")
+ (if mymail/default-search-request
+ (setq param mymail/default-search-request)
+ (error "mymail error: empty search")))
+
(let ((n 1)
(mbox-name nil)
(search-args
-
(apply 'nconc
- (mapcar
- (lambda (searche-request)
- (if (not (string= searche-request ""))
- (list "-s" searche-request)))
- (if (string= (substring param 0 1) "\\")
- (split-string (substring param 1 nil) ",")
- (split-string (concat param "," mymail/default-search-request) ","))
- )))
-
+ (mapcar
+ (lambda (searche-request)
+ (if (not (string= searche-request ""))
+ (list "--search" searche-request)))
+ (if (string= (substring param 0 1) "\\")
+ (split-string (substring param 1 nil) ",")
+ (split-string (concat param ","
+ mymail/default-additional-search-requests) ","))
+ )))
)
(while (get-file-buffer (setq mbox-name (format "/tmp/mymail-vm-%d.mbox" n)))
(setq n (+ n 1)))
+ ;; (message (prin1-to-string
+ ;; (nconc (list "mymail"
+ ;; "--output" mbox-name
+ ;; "--default-search" "p"
+ ;; "--nb-mails-max" "500")
+ ;; search-args))
+ ;; )
+
(if (= (apply 'call-process
- (nconc (list "mymail" nil nil nil
+ (nconc (list "mymail" nil '(nil "/tmp/mymail.err") nil
"--output" mbox-name
- "--default-search" "p")
+ "--default-search" "p"
+ "--nb-mails-max" "500")
search-args))
0)
(vm-visit-folder mbox-name t)
- (message "mymail failed"))
- ))
+
+ ;; (message "mymail failed. See /tmp/mymail.err"))
+
+ (message (with-temp-buffer
+ (insert-file-contents "/tmp/mymail.err")
+ (replace-string "\n" " ")
+ (buffer-string)))
+ )
+ ))