This is the first non-WIP version of this series. The previous WIP version is at id:1386665847-6439-1-git-send-email-markwalters1009@gmail.com The main changes are: all tests now pass, and tree mode is also done. In fact tree-mode is very easy: since only one message is viewed in the message pane at a time I think it makes sense to mark it read immediately. The test change is surprisingly small but relatively intrusive. Rather than wrapping the lisp to be executed in a progn in test_emacs I wrap it in a handler notmuch-test-progn. The syntax is not the same as progn so maybe the name is bad: it needs an actual lisp list of commands as its sole argument. test_emacs is updated to supply the commands as a lisp list. It executes each command in turn but runs the post-command-hook after each. Note a block of the form (progn (cmd1) (cmd2)) is viewed a single command and the post-command-hook would only run after the progn completes. This allows the caller to avoid running the post-command-hook when needed. Similarly a (let ....) form is only viewed as one command; in this case the calle may need to run the post-command-hook explicitly. It is surprising that all tests pass given the fairly substantial unread/read changes. This might suggest that we need some extra tests. Best wishes Mark Mark Walters (5): emacs: show: make `seen' mean user viewed whole message emacs: show: add an update seen function to post-command-hook emacs: show: mark tags changed since buffer loaded emacs: tree: make the tree code force the mark read update test: make test_emacs call post-command-hook emacs/notmuch-show.el | 123 +++++++++++++++++++++++++++++++++++++++++-------- emacs/notmuch-tag.el | 105 ++++++++++++++++++++++++++++++------------ emacs/notmuch-tree.el | 3 + test/test-lib.el | 16 ++++++ test/test-lib.sh | 2 +- 5 files changed, 198 insertions(+), 51 deletions(-) -- 1.7.9.1