corgi-emacs / corgi

Unbundled Emacs configuration aimed at Clojure developers
180 stars 18 forks source link

Cleaner buffer list - only project files #3

Closed oxalorg closed 2 years ago

oxalorg commented 3 years ago

SPC b b at the moment shows a buffer list which is populated by all kinds of buffer like:

image

Most of these aren't very useful. When moving around in the project I typically only want to see buffers related to the project to switch quickly.

I think Doom emacs differentiates them as "Real" and "Unreal" buffers.

A real buffer is a useful buffer; a first class citizen in Doom. Real ones should get special treatment, because we will be spending most of our time in them. Unreal ones should be low-profile and easy to cast aside, so we can focus on real ones.

https://github.com/hlissner/doom-emacs/blob/9cab6a6fd9e43b6e95dbfa31a65b7119b7b11b0f/core/autoload/buffers.el

Any thoughts about this?

plexus commented 3 years ago

Yes, turn it into a package. Then we can consider to include it by default, or let users decide to add an extra use-package line to their config. What I don't want is to have large amounts of custom behavior coded inside corgi.

That said let's not conflate different operations. SPC bb is a generic buffer switcher, it should not hide buffers. If you want a buffer switcher that is project specific then that is a different operation and should have a different binding. Not sure if SPC pb is taken in corgi or spacemacs but that would be an obvious candidate. It's also worth checking if there's a command in projectile that we can bind to that.

Of course for project navigation we also have SPC pf, and there's SPC fr (recent files).

Regarding hiding system buffers, how would I switch to messages or error? I actually regularly want to switch to those. The list in SPC bb is sorted by most recent usage and has fuzzy searching, so the ones you don't care about shouldn't get in your way too much.

oxalorg commented 3 years ago

That said let's not conflate different operations. SPC bb is a generic buffer switcher, it should not hide buffers

I agree, was not suggesting this behaviour to override the default behaviour for SPC b b. Instead, I too had something like SPC b B or SPC p b in mind.

Doom has SPC b b for workspace buffers, and SPC b B for all buffers.

Of course for project navigation we also have SPC pf, and there's SPC fr (recent files).

My workflow usually involves heavy use of buffers, I keep my buffer list cleanly organised and at any given time only have the most important buffers open, it kind of acts like my working memory. Thinking about the "filename" every time I want to switch slows me down a lot, so it's important for me that the buffer list be as minimal as possible.

Yes, turn it into a package. Then we can consider to include it by default, or let users decide to add an extra use-package line to their config. What I don't want is to have large amounts of custom behavior coded inside corgi.

Sounds good I'll give it a shot during my free time!

plexus commented 2 years ago

I'm going to bind SPC p b to projectile-switch-buffer, I think that makes a lot of sense, and should get 90% of the intent here. The real vs imaginary buffers is not a concept in Emacs, so if people want that it should become a standalone package first.