summaryrefslogtreecommitdiff
path: root/mu4e
diff options
context:
space:
mode:
authorDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2025-01-25 15:23:34 +0200
committerDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2025-01-26 18:56:38 +0200
commit7f76c69879f1f07a34e25946d56e340bb2a477d7 (patch)
tree0eb502ac8d70ca0e6a5a763d6f3d94b4452f2b27 /mu4e
parenta33530e9179743bea41d06b248cdb9be4f2e5e9f (diff)
mu4e: auto start mu4e when sending command
Start mu4e if not already; with the transient menus it's easier possible to try to do things with mu4e before it is started, so handle that automatically.
Diffstat (limited to 'mu4e')
-rw-r--r--mu4e/mu4e-server.el14
-rw-r--r--mu4e/mu4e.el8
2 files changed, 13 insertions, 9 deletions
diff --git a/mu4e/mu4e-server.el b/mu4e/mu4e-server.el
index 02942af..bdf32f4 100644
--- a/mu4e/mu4e-server.el
+++ b/mu4e/mu4e-server.el
@@ -211,11 +211,6 @@ It is the mu4e-version of \"mu find <query> --analyze\"."
mu4e--last-query-buffer-name
(mu4e-server-last-query)))
-;; temporary
-(defun mu4e--server-xapian-single-threaded-p()
- "Are we using Xapian in single-threaded mode?"
- (plist-get mu4e--server-props :xapian-single-threaded))
-
;;; Handling raw server data
(defvar mu4e--server-buf nil
@@ -300,7 +295,6 @@ This for the few sexps we get from the mu server that support
(read (current-buffer)))
val)))
-
(defun mu4e--server-filter (_proc str)
"Filter string STR from PROC.
This processes the \"mu server\" output. It accumulates the
@@ -565,12 +559,18 @@ You cannot run the repl when mu4e is running (or vice-versa)."
(t
(error "Something bad happened to the mu server process")))))
+(declare-function mu4e "mu4e")
+(defvar mu4e--initialized)
+
(defun mu4e--server-call-mu (form)
"Call the mu server with some command FORM."
+ (unless mu4e--initialized
+ (mu4e 'background))
+ ;; ensure the server is running as well
(unless (mu4e-running-p)
(mu4e--server-start))
;; in single-threaded mode, mu can't accept our command right now.
- (when (and (mu4e--server-xapian-single-threaded-p) mu4e--server-indexing)
+ (when mu4e--server-indexing
(mu4e-message "Cannot handle command while indexing, please retry later."))
(let* ((print-length nil) (print-level nil)
(cmd (format "%S" form)))
diff --git a/mu4e/mu4e.el b/mu4e/mu4e.el
index 0594759..a89ea4d 100644
--- a/mu4e/mu4e.el
+++ b/mu4e/mu4e.el
@@ -56,13 +56,16 @@
(with-eval-after-load 'desktop
(eval '(add-to-list 'desktop-modes-not-to-save 'mu4e-compose-mode)))
+(defvar mu4e--initialized nil
+ "Is mu4e initialized? Only needed once per session.")
+
;;;###autoload
(defun mu4e (&optional background)
"If mu4e is not running yet, start it.
Then, show the main window, unless BACKGROUND (prefix-argument)
is non-nil."
(interactive "P")
- (if (not (mu4e-running-p))
+ (if (not mu4e--initialized)
(progn
(mu4e--init-handlers)
(mu4e--start (unless background #'mu4e--main-view)))
@@ -148,12 +151,13 @@ Otherwise, check requirements, then start mu4e. When successful, invoke
(mu4e-modeline-mode (if mu4e-modeline-support 1 -1))
;; redraw main buffer if there is one.
(add-hook 'mu4e-query-items-updated-hook #'mu4e--main-redraw)
- (mu4e--query-items-refresh 'reset-baseline)
+ (setq mu4e--initialized t) ;; last before we call the server.
(mu4e--server-ping)
;; ask for the maildir-list
(mu4e--server-data 'maildirs)
;; maybe request the list of contacts, automatically refreshed after
;; re-indexing
+ (mu4e--query-items-refresh 'reset-baseline)
(unless mu4e--contacts-set
(mu4e--request-contacts-maybe)))