Prompt cosmetics.
[mymail.git] / mymail-vm.el
index b3d4357..c2b96ae 100644 (file)
 ;; 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")
+
+(defcustom mymail/default-search-request ""
+  "Default request to add to any search"
+  :type 'string)
+
 (defun mymail/vm-visit-folder (param)
-  (interactive (list (read-string "mymail-vm search: " nil 'mymail-vm-history)))
+  "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
+concatenated to the provided request, except if the request is
+prefaced with \\."
+  (interactive
+   (list (read-string "mymail-vm: " nil 'mymail-vm-history)))
 
   (let ((n 1)
         (mbox-name nil)
-        (args (mapconcat
-               (lambda (searche-request) (concat "-s " "\"" searche-request "\""))
-               (split-string param ",")
-               " ")))
+
+        (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) ","))
+           )))
+
+        )
+
     (while (get-file-buffer (setq mbox-name (format "/tmp/mymail-vm-%d.mbox" n)))
       (setq n (+ n 1)))
 
-    (shell-command (concat "mymail " args " > " mbox-name))
-    (vm-visit-folder mbox-name t)
+    (if (= (apply 'call-process
+                  (nconc (list "mymail" nil nil nil
+                               "--output" mbox-name
+                               "--default-search" "p")
+                         search-args))
+           0)
+        (vm-visit-folder mbox-name t)
+      (message "mymail failed"))
   ))