This is v4 of this WIP set; v3 is at id:1386273871-24214-1-git-send-email-markwalters1009@gmail.com This is still WIP: in particular lots of tests fail (for the obvious reason that unread is being removed differently). I don't think it's worth updating them until we have some consensus on how this should work. The main change from v3 is to make the added/deleted tag handling cleaner, and to do something sensible on terminals (where strike-through is not available). The cleaner handling means it is easy for a user to revert to the current behaviour (deleted tags immediately disappear). However, it is much more general and fits neatly into the existing tag formatting framework. This is all done in patch 1/3. (The patch is much smaller than it looks: a large chunk of it is just code-movement). This patch is independent of the later one; it does still break the tests as the deleted "unread" tags are no longer removed just shown with strike-through or inverse-video. Patches 2 and 3 are unchanged from before. They implement the new unread handling as described in the previous thread. As with the earlier versions *all* feedback is gratefully received including "I HATE IT" (though reasons are nice!) Best wishes Mark Mark Walters (3): emacs: show: mark tags changed since buffer loaded emacs: show: add an update seen function to post-command-hook emacs: show: make `seen' mean user viewed whole message emacs/notmuch-show.el | 123 +++++++++++++++++++++++++++++++++++++++++-------- emacs/notmuch-tag.el | 105 ++++++++++++++++++++++++++++++------------ 2 files changed, 178 insertions(+), 50 deletions(-) -- 1.7.9.1