Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 71050431FDA for ; Tue, 3 Sep 2013 14:45:59 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.7 X-Spam-Level: X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wLRjpUhV+miA for ; Tue, 3 Sep 2013 14:45:52 -0700 (PDT) Received: from dmz-mailsec-scanner-5.mit.edu (dmz-mailsec-scanner-5.mit.edu [18.7.68.34]) by olra.theworths.org (Postfix) with ESMTP id 4248B431FDE for ; Tue, 3 Sep 2013 14:45:34 -0700 (PDT) X-AuditID: 12074422-b7ef78e000000935-fa-5226587b0bc6 Received: from mailhub-auth-3.mit.edu ( [18.9.21.43]) by dmz-mailsec-scanner-5.mit.edu (Symantec Messaging Gateway) with SMTP id 8A.AC.02357.B7856225; Tue, 3 Sep 2013 17:45:31 -0400 (EDT) Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id r83LjUin023526; Tue, 3 Sep 2013 17:45:31 -0400 Received: from drake.dyndns.org (26-4-182.dynamic.csail.mit.edu [18.26.4.182]) (authenticated bits=0) (User authenticated as amdragon@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id r83LjRBx026854 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT); Tue, 3 Sep 2013 17:45:28 -0400 Received: from amthrax by drake.dyndns.org with local (Exim 4.77) (envelope-from ) id 1VGyPe-0004y1-Um; Tue, 03 Sep 2013 17:45:26 -0400 From: Austin Clements To: notmuch@notmuchmail.org Subject: [PATCH v2 6/9] emacs: Add unified refresh-this-buffer function Date: Tue, 3 Sep 2013 17:45:22 -0400 Message-Id: <1378244725-18846-7-git-send-email-amdragon@mit.edu> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1378244725-18846-1-git-send-email-amdragon@mit.edu> References: <1378244725-18846-1-git-send-email-amdragon@mit.edu> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGIsWRmVeSWpSXmKPExsUixCmqrVsdoRZk8H2fmUXTdGeL1XN5LK7f nMnswOyxc9Zddo9b91+zezxbdYs5gDmKyyYlNSezLLVI3y6BK6Op7zRjwSvjipvX3jI2MJ7X 7mLk5JAQMJH42tfKCmGLSVy4t56ti5GLQ0hgH6PE+x9fWCGcDYwSH/6thsocZpLY1HkJypnL KPG9+wkjSD+bgIbEtv3LwWwRAWmJnXdng81lFoiWOHJ5BhuILSzgLnH/bwcziM0ioCpxtmkx WJxXwEFi36237BB3KEp0P5sAFucUcJToXbAILC4EVNO08jL7BEb+BYwMqxhlU3KrdHMTM3OK U5N1i5MT8/JSi3RN9XIzS/RSU0o3MYKCi91FaQfjz4NKhxgFOBiVeHgZHqkGCbEmlhVX5h5i lORgUhLlPRKqFiTEl5SfUpmRWJwRX1Sak1p8iFGCg1lJhDfBByjHm5JYWZValA+TkuZgURLn ffb0bKCQQHpiSWp2ampBahFMVoaDQ0mCtzwcqFGwKDU9tSItM6cEIc3EwQkynAdo+M8wkOHF BYm5xZnpEPlTjIpS4rzzQZoFQBIZpXlwvbDof8UoDvSKMG8PSBUPMHHAdb8CGswENDjtsyrI 4JJEhJRUA+Ps2wGfr9QqST7vnLnN/xMLS4NwesK7v3Mtjz+3mMKfe0vjmOsUhm9FvAXl9zWS FLudSv7+OhUbrvahyCBpy2rH9u4so01TCv0vOYi+i+HrU/SpijjyI1N4a3pFJOPN5c+bfFx2 cu7OiLCeLvQ4ZoKZb+38LR9i7gutDki7923/vuaPIqoPbZRYijMSDbWYi4oTAYEpC6bZAgAA X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Sep 2013 21:45:59 -0000 This unifies the various refresh and poll-and-refresh functions we have for different modes. Now all modes bind "=" and "G" (except show, which doesn't bind "G" for some reason) to `notmuch-refresh-this-buffer' and `notmuch-poll-and-refresh-this-buffer', respectively. --- emacs/notmuch-hello.el | 12 +++--------- emacs/notmuch-lib.el | 20 +++++++++++++++++++- emacs/notmuch-show.el | 3 ++- emacs/notmuch.el | 12 +++--------- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el index 94cc4b5..6a7b884 100644 --- a/emacs/notmuch-hello.el +++ b/emacs/notmuch-hello.el @@ -481,15 +481,8 @@ Such a list can be computed with `notmuch-hello-query-counts'." (defun notmuch-hello-update (&optional no-display) "Update the current notmuch view." ;; Lazy - rebuild everything. - (interactive) (notmuch-hello no-display)) -(defun notmuch-hello-poll-and-update () - "Invoke `notmuch-poll' to import mail, then refresh the current view." - (interactive) - (notmuch-poll) - (notmuch-hello-update)) - (defun notmuch-hello-window-configuration-change () "Hook function to update the hello buffer when it is switched to." (let ((hello-buf (get-buffer "*notmuch-hello*")) @@ -528,8 +521,8 @@ Such a list can be computed with `notmuch-hello-query-counts'." (message "notmuch version %s" (notmuch-version)))) (define-key map "?" 'notmuch-help) (define-key map "q" 'notmuch-kill-this-buffer) - (define-key map "=" 'notmuch-hello-update) - (define-key map "G" 'notmuch-hello-poll-and-update) + (define-key map "=" 'notmuch-refresh-this-buffer) + (define-key map "G" 'notmuch-poll-and-refresh-this-buffer) (define-key map (kbd "") 'widget-backward) (define-key map "m" 'notmuch-mua-new-mail) (define-key map "s" 'notmuch-search) @@ -545,6 +538,7 @@ Complete list of currently available key bindings: \\{notmuch-hello-mode-map}" (interactive) (kill-all-local-variables) + (setq notmuch-buffer-refresh-function #'notmuch-hello-update) (use-local-map notmuch-hello-mode-map) (setq major-mode 'notmuch-hello-mode mode-name "notmuch-hello") diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el index 9754e16..782badb 100644 --- a/emacs/notmuch-lib.el +++ b/emacs/notmuch-lib.el @@ -204,6 +204,25 @@ depending on the value of `notmuch-poll-script'." (interactive) (kill-buffer (current-buffer))) +(defvar notmuch-buffer-refresh-function nil + "Function to call to refresh the current buffer.") +(make-variable-buffer-local 'notmuch-buffer-refresh-function) + +(defun notmuch-refresh-this-buffer () + "Refresh the current buffer." + (interactive) + (when notmuch-buffer-refresh-function + (if (commandp notmuch-buffer-refresh-function) + ;; Pass prefix argument, etc. + (call-interactively notmuch-buffer-refresh-function) + (funcall notmuch-buffer-refresh-function)))) + +(defun notmuch-poll-and-refresh-this-buffer () + "Invoke `notmuch-poll' to import mail, then refresh the current buffer." + (interactive) + (notmuch-poll) + (notmuch-refresh-this-buffer)) + (defun notmuch-prettify-subject (subject) ;; This function is used by `notmuch-search-process-filter' which ;; requires that we not disrupt its' matching state. @@ -596,7 +615,6 @@ status." (defvar notmuch-show-process-crypto nil) (make-variable-buffer-local 'notmuch-show-process-crypto) - (provide 'notmuch-lib) ;; Local Variables: diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 82b70ba..380df66 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1279,7 +1279,7 @@ reset based on the original query." (define-key map "w" 'notmuch-show-save-attachments) (define-key map "V" 'notmuch-show-view-raw-message) (define-key map "c" 'notmuch-show-stash-map) - (define-key map "=" 'notmuch-show-refresh-view) + (define-key map "=" 'notmuch-refresh-this-buffer) (define-key map "h" 'notmuch-show-toggle-visibility-headers) (define-key map "*" 'notmuch-show-tag-all) (define-key map "-" 'notmuch-show-remove-tag) @@ -1338,6 +1338,7 @@ All currently available key bindings: \\{notmuch-show-mode-map}" (interactive) (kill-all-local-variables) + (setq notmuch-buffer-refresh-function #'notmuch-show-refresh-view) (use-local-map notmuch-show-mode-map) (setq major-mode 'notmuch-show-mode mode-name "notmuch-show") diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 82cece8..80446be 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -228,8 +228,8 @@ For a mouse binding, return nil." (define-key map "s" 'notmuch-search) (define-key map "o" 'notmuch-search-toggle-order) (define-key map "c" 'notmuch-search-stash-map) - (define-key map "=" 'notmuch-search-refresh-view) - (define-key map "G" 'notmuch-search-poll-and-refresh-view) + (define-key map "=" 'notmuch-refresh-this-buffer) + (define-key map "G" 'notmuch-poll-and-refresh-this-buffer) (define-key map "t" 'notmuch-search-filter-by-tag) (define-key map "f" 'notmuch-search-filter) (define-key map [mouse-1] 'notmuch-search-show-thread) @@ -403,6 +403,7 @@ Complete list of currently available key bindings: (make-local-variable 'notmuch-search-oldest-first) (make-local-variable 'notmuch-search-target-thread) (make-local-variable 'notmuch-search-target-line) + (setq notmuch-buffer-refresh-function #'notmuch-search-refresh-view) (set (make-local-variable 'scroll-preserve-screen-position) t) (add-to-invisibility-spec (cons 'ellipsis t)) (use-local-map notmuch-search-mode-map) @@ -950,7 +951,6 @@ query string as the current search. If the current thread is in the new search results, then point will be placed on the same thread. Otherwise, point will be moved to attempt to be in the same relative position within the new buffer." - (interactive) (let ((target-line (line-number-at-pos)) (oldest-first notmuch-search-oldest-first) (target-thread (notmuch-search-find-thread-id 'bare)) @@ -959,12 +959,6 @@ same relative position within the new buffer." (notmuch-search query oldest-first target-thread target-line) (goto-char (point-min)))) -(defun notmuch-search-poll-and-refresh-view () - "Invoke `notmuch-poll' to import mail, then refresh the current view." - (interactive) - (notmuch-poll) - (notmuch-search-refresh-view)) - (defun notmuch-search-toggle-order () "Toggle the current search order. -- 1.7.10.4