From 59adb2da193efef806b37e2c85981024a39ee2e3 Mon Sep 17 00:00:00 2001 From: Dmitry Kurochkin Date: Sun, 18 Dec 2011 04:21:21 +0400 Subject: [PATCH] emacs: do not call `notmuch-hello-mode' on update `notmuch-hello' should call `notmuch-hello-mode' function only when run for the first time. But before the change, `notmuch-hello' used `kill-all-local-variables' to remove editable widgets fields. This caused the major mode to be reset, and `notmuch-hello-mode' to be called every time. The patch manually deletes all editable widget fields and removes `kill-all-local-variables' call. --- emacs/notmuch-hello.el | 13 +++++++++---- test/emacs | 1 - 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el index ca3a3813..81b26059 100644 --- a/emacs/notmuch-hello.el +++ b/emacs/notmuch-hello.el @@ -403,11 +403,16 @@ Complete list of currently available key bindings: (progn (widget-forward 1) (widget-value (widget-at))) - (error nil))))) + (error nil)))) + (inhibit-read-only t)) - (kill-all-local-variables) - (let ((inhibit-read-only t)) - (erase-buffer)) + ;; Delete all editable widget fields. Editable widget fields are + ;; tracked in a buffer local variable `widget-field-list' (and + ;; others). If we do `erase-buffer' without properly deleting the + ;; widgets, some widget-related functions are confused later. + (mapc 'widget-delete widget-field-list) + + (erase-buffer) (unless (eq major-mode 'notmuch-hello-mode) (notmuch-hello-mode)) diff --git a/test/emacs b/test/emacs index b4c24448..dffad0fc 100755 --- a/test/emacs +++ b/test/emacs @@ -486,7 +486,6 @@ counter=$(test_emacs \ test_expect_equal "$counter" 1 test_begin_subtest "notmuch-hello-mode hook is not called on updates" -test_subtest_known_broken counter=$(test_emacs \ '(let ((notmuch-hello-mode-hook-counter 0)) (kill-buffer "*notmuch-hello*")