Mu4e: jump to manual to get help in writing queries
This is a mini blog. I use the amazing Mu4e to manage my emails from Emacs. Sometimes I struggle querying them though! Often I want to filter dates in between dates and I forget how to define that predicate in the Mu query language.
This has become boring now that I have shortened my feedback loop by using helm-mu: Helm updates the result of my query in real time, so if it is broken, I feel the pain of my error!
Naturally mu
has an explanation of the query language in the manual
(and there is also a nice blog about that). So I decided to change my
setup to add a shortcut to get to the manpage when I need to:
(defun my/mu4e-queries-help () (interactive) (split-window-vertically) (woman "mu-query") (search-forward "FIELDS "))
After binding this to a keybinding, I can access the Mu manual on the fly.
That does not work well with helm-mu though. To fix that I redefined the source in my configuration:
(let ((system-package (when (eq system-type 'darwin) '(wn . "brew install gnu-sed --with-default-names")))) (eval `(use-package helm-mu :ensure-system-package ,system-package :config (setq helm-source-mu (helm-build-async-source "Search email with mu" :candidates-process #'helm-mu-init :candidate-transformer '(helm-mu-candidate-parser helm-mu-candidates-formatter) :multimatch nil :nohighlight t :requires-pattern 3 :persistent-action #'helm-mu-persistent-action :help-message (concat "* Mu Manual\n\n" (let ((buf (current-buffer)) ; adding some help I can access with C-h m when in the Helm session (_ (woman "mu-query")) (contents (buffer-string))) (switch-to-buffer buf) contents)) :action '(("Display message in mu4e" . helm-mu-display-email)))))))
That lets me read the manual without losing my Helm session with the
keys C-h m
.
Happy querying!