diff --git a/mu4e/mu4e-server.el b/mu4e/mu4e-server.el index 02942af3..bdf32f4f 100644 --- a/mu4e/mu4e-server.el +++ b/mu4e/mu4e-server.el @@ -211,11 +211,6 @@ It is the mu4e-version of \"mu find --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 05947590..a89ea4d8 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)))