From 6017ac46ce2e99e7b9fab7d0286b0dbf21013a1f Mon Sep 17 00:00:00 2001 From: Vladimir Sedach Date: Mon, 12 Jun 2017 18:55:51 -0700 Subject: [PATCH] mu4e: Update single-window mode Update mu4e~headers-quit-buffer and mu4e~main-menu. mu4e~headers-quit-buffer in single-window mode now kills current buffer instead of quitting mu4e. mu4e~main-menu is updated to redisplay the main menu on context switch or unknown keybinding, display errors in commands better, and to handle C-g and ESC keys. Thanks to Joost Kremers for the suggestions. --- mu4e/mu4e-headers.el | 2 +- mu4e/mu4e-main.el | 43 +++++++++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/mu4e/mu4e-headers.el b/mu4e/mu4e-headers.el index be04aae1..09a9f96a 100644 --- a/mu4e/mu4e-headers.el +++ b/mu4e/mu4e-headers.el @@ -1722,7 +1722,7 @@ other windows." (interactive) (if (eq mu4e-split-view 'single-window) (progn (mu4e-mark-handle-when-leaving) - (mu4e-quit)) + (kill-buffer)) (unless (eq major-mode 'mu4e-headers-mode) (mu4e-error "Must be in mu4e-headers-mode (%S)" major-mode)) (mu4e-mark-handle-when-leaving) diff --git a/mu4e/mu4e-main.el b/mu4e/mu4e-main.el index 03c507c4..07094ba3 100644 --- a/mu4e/mu4e-main.el +++ b/mu4e/mu4e-main.el @@ -226,24 +226,31 @@ clicked." (defun mu4e~main-menu () "mu4e main view in the minibuffer." (interactive) - (let ((mu4e-hide-index-messages t)) - (call-interactively - (lookup-key - mu4e-main-mode-map - (string - (read-key - (mu4e-format - "%s" - (concat - (mu4e~main-action-str "[j]ump " 'mu4e-jump-to-maildir) - (mu4e~main-action-str "[s]earch " 'mu4e-search) - (mu4e~main-action-str "[C]ompose " 'mu4e-compose-new) - (mu4e~main-action-str "[b]ookmarks " 'mu4e-headers-search-bookmark) - (mu4e~main-action-str "[;]Switch context " 'mu4e-context-switch) - (mu4e~main-action-str "[U]pdate " 'mu4e-update-mail-and-index) - (mu4e~main-action-str "[N]ews " 'mu4e-news) - (mu4e~main-action-str "[A]bout " 'mu4e-about) - (mu4e~main-action-str "[H]elp " 'mu4e-display-manual))))))))) + (let ((key + (read-key + (mu4e-format + "%s" + (concat + (mu4e~main-action-str "[j]ump " 'mu4e-jump-to-maildir) + (mu4e~main-action-str "[s]earch " 'mu4e-search) + (mu4e~main-action-str "[C]ompose " 'mu4e-compose-new) + (mu4e~main-action-str "[b]ookmarks " 'mu4e-headers-search-bookmark) + (mu4e~main-action-str "[;]Switch context " 'mu4e-context-switch) + (mu4e~main-action-str "[U]pdate " 'mu4e-update-mail-and-index) + (mu4e~main-action-str "[N]ews " 'mu4e-news) + (mu4e~main-action-str "[A]bout " 'mu4e-about) + (mu4e~main-action-str "[H]elp " 'mu4e-display-manual)))))) + (unless (member key '(?\C-g ?\C-\[)) + (let ((mu4e-command (lookup-key mu4e-main-mode-map (string key) t))) + (if mu4e-command + (condition-case err + (let ((mu4e-hide-index-messages t)) + (call-interactively mu4e-command)) + (error (when (cadr err) (message (cadr err))))) + (message (mu4e-format "key %s not bound to a command" (string key)))) + (when (or (not mu4e-command) (eq mu4e-command 'mu4e-context-switch)) + (sit-for 1) + (mu4e~main-menu)))))) ;; (progn ;; (define-key mu4e-compose-mode-map (kbd "C-c m") 'mu4e~main-toggle-mail-sending-mode)