Emacs: how to remove "unread" tag while reading emails

Mark Walters markwalters1009 at gmail.com
Sat Oct 5 09:56:30 PDT 2013


On Sat, 05 Oct 2013, Austin Clements <amdragon at MIT.EDU> wrote:
> Great list.
>
> One of the problems with the current approach, which most of these
> options share, is that there's no feedback.  For example, when I enter
> a thread, I have no idea if the first message was unread or not.  I'd
> like a solution that either naturally doesn't have this problem, that
> visually indicates that a message *was* unread, or that delays all
> unread marking until you leave the thread (possibly combined with a
> visual indication of what will be marked unread).  Bonus points if
> it's easy to adjust what happens, such as saying "keep everything
> unread" or "keep everything unread except this one".

I like the idea of not doing the update until you actually leave the
buffer.

> To this end, here are my two proposals:
>
> A1) Mark whole thread read when you leave it (via q, X, A or friends)
> and provide a binding to leave a thread without marking it read (C-x k
> would do, but we should provide an explicit one; perhaps C-u prefixing
> other "leave" bindings?  For once, C-u is easy to remember because u
> is the first letter of unread).
>
> A2) Like A1, but mark only messages up to and containing point when
> you leave a thread.

I like A2 but would like to check exactly what you meant: would this
only mark open messages (ie not collapsed messages) up to point?

I also like the prefix argument for q etc idea but I have a plausible
variation: ctrl-u q (etc) could say "mark 4 messages unread y/N?" so you
could easily see what it would do (but default to not doing it). I am
imagining not updating read/unread as the less common case. I guess if
we provide functions for each case it is easy for a user to configure.

(Actually is it easy for a user to configure how prefix arguments work?)

The only time in my use this would do the wrong thing is if I open all
messages with M-Ret

I think this also simplifies the mark-read code quite substantially
which is nice.

Best wishes

Mark





> In either case, I'd like an echo message when I leave the thread
> telling me what happened ("Thread marked as read", "First 3 messages
> marked as read; thread archived", etc.).  These would blend especially
> well with undo, because they would bundle together all read marking
> into a single action that would make sense to undo ("Thread marked as
> read [C-/ to undo]").

>
> Both options are highly predictable and easy to understand.  They
> don't lose information about which messages were unread when you
> entered a thread.  And they're easy to adjust (you can always -unread
> a message manually and then C-u q or whatever to leave without
> touching anything else).
>
> Quoth Mark Walters on Oct 05 at 10:19 am:
>> 
>> Hello
>> 
>> I agree that the unread tag does not work well. There are some instances
>> which I would class as plain bugs (notmuch-show-next-message which is
>> bound to N marks the new message read even if it is collapsed) and
>> other instances where it is not clear what the correct behaviour should
>> be.
>> 
>> I have messed around a bit and there seem to be a lot of possible
>> variants and I don't know whether any would have any consensus.
>> 
>> One clear divide is whether we should only mark "visited messages" (ie
>> ones reached using space, n,N,p,P etc in the current bindings) or we
>> should also make messages seen by scrolling past (eg with page down).
>> 
>> Anyway here is a list of some possibilities. In all cases I assume we do
>> not mark any collapsed message read.
>> 
>> 1) Mark a message read when we visit it.
>> 2) Mark a message read when we visit it and the leave it with a "visit
>> move" (eg n for next message)
>> 
>> 3) Mark a message read if we see the start of the message in the buffer. 
>> 4) Mark a message read if we have seen the start and end of the message
>> in the buffer.
>> 5) Mark a message read if we see the end of the message after seeing the
>> start (rationale moving to the top of the buffer is likely "movement"
>> rather than "reading")
>> 
>> 6) Something based on how we leave the message: eg page down could mark
>> all messages which were fully visible read, n (next-open message) could
>> mark the message being left read. 
>> 7) Similar to 6) but something where read necessarily includes have seen
>> the start of the message.
>> 
>> I think all of these are reasonably easy to implement, and I think I
>> know which I would like (something like 5 or 7) but it would be
>> interesting to know if there is any general view or any view on how
>> customisable this should be.
>> 
>> Does anyone have any thoughts?
>> 
>> Best wishes
>> 
>> Mark
>> 
>> 
>> 
>> On Wed, 18 Sep 2013, Gregor Zattler <telegraph at gmx.net> wrote:
>> > Dear notmuchers,
>> >
>> > I had difficulties to reliably remove the "unread" tag from
>> > messages.  Mostly I page through threads with the space bar and
>> > all is well.  But when the beginning of the thread is already
>> > collapsed and I "jump" in the middle of a message pressing space
>> > bar does not remove the unread tag.  It's only removed when
>> > *entering* the message via space bar from the previous message.
>> > So the last press on space bar in the previous message jumps to
>> > the next message and at the same time removes its unread tag.
>> >
>> > This seems strange to me.  I would say the unread tag should be
>> > removed when leaving the message with the last press on space
>> > bar, indicating that one really paged trough the whole message
>> > instead of only seeing the very beginning of it.
>> >
>> > What’s the rationale to this behaviour?  Am I missing something?  
>> >
>> > Thanks for your attention, gregor


More information about the notmuch mailing list