paul-issartel / nnreddit

Reddit backend for Gnus
GNU General Public License v3.0
0 stars 0 forks source link

gnus-summary-next-page support? #1

Closed alphapapa closed 8 years ago

alphapapa commented 8 years ago

Hi,

I just rediscovered your package (saw you mention it on /r/emacs recently but hadn't tried it yet). I'm really liking it so far!

One of the things I like about gnus is being able to press SPC to quickly go through unread articles in a thread, which calls gnus-summary-next-page. I noticed that using SPC in the nnreddit summary buffer doesn't go to the next unread message in a Reddit story's comments, but goes to the next unread story.

Would it be possible to make this work more like in Gnus, so it would go to the next unread, expanded Reddit comment instead of to the next story?

Thanks!

paul-issartel commented 8 years ago

Currently there is no proper handling of read/unread articles in nnreddit. For stories it may appear to work at first glance but actually does not, because the mapping between article IDs (which are dynamically generated) and Reddit IDs is not saved across sessions. For comments, they seem to be marked as "read" by default, probably because they fall outside the "active" range advertised by the virtual newsgroup (due to lazy loading).

If you manually mark some comments as unread then gnus-summary-next-page works as you expect.

So until read/unread is implemented, a solution is to use the following setting to ignore the unread status: (setq gnus-summary-goto-unread 'never)

alphapapa commented 8 years ago

I see, thanks! Do you plan to implement read/unread someday? If not, I might look into it...someday...but I still know very little about Gnus, so it's probably over my head for now.

paul-issartel commented 8 years ago

I'd like to implement it, but this is not a small feature and I'm currently too busy for that... Feel free to look into it in the meantime :)

alphapapa commented 8 years ago

Ok, thanks, I'll keep it in mind. Do you have any tips for someone who hasn't messed with Gnus before and barely even knows how to use it? Anything you wish you had known when you started to work on this? :)

paul-issartel commented 8 years ago

If you mean any tips for implementing the read/unread status (and in fact the whole mapping between article and Reddit IDs), this is going to be tough, heavy hacking into Gnus internals. I'm not exactly sure where to start myself, except maybe by writing the mapping function itself. But I have no idea how to hook it with the rest of Gnus.

Anyway, Gnus is like Emacs, you never stop discover new things and the self-documenting capabilities are incredibly helpful to navigate all those functions and data structures. The Gnus manual is great too, written in a fun, light-hearted tone.

One thing to keep in mind with Gnus (like Emacs) is that is that you are supposed to "build your own newsreader" (just as with Emacs you are supposed to "build your own editor"). So don't hesitate to mess with it (or with nnreddit!). Quoting the Gnus manual:

What’s the point of Gnus? [...] Gnus offers no real solutions to these questions, but I would very much like to see Gnus being used as a testing ground for new methods of reading and fetching news. [...] I have added hooks for customizations everywhere I could imagine it being useful. By doing so, I’m inviting every one of you to explore and invent. [...] May Gnus never be complete.

alphapapa commented 8 years ago

LOL, yeah, I often feel like Gnus comes with literally no configuration by default (except for way too many default bindings, often duplicated across 3 or 4 keys...). The manual is absolutely comprehensive, yet seems to lack a basic "how-to" for new users that walks them through the basic steps of add server, list groups, subscribe to group, fetch messages, read messages, reply to messages, etc. Sometimes it feels like you have to read the whole manual before you can do anything...

Anyway, thanks for your work on this, can't wait to see where it ends up!

paul-issartel commented 8 years ago

I updated the documentation, so I close this ticket and open a new one about the correct handling of read/unread status.