One thing I love about #emacs is that even though the documentation is generally pretty good, in the cases where it's inadequate, it's still really easy to find and step through the relevant source for a feature to find the answer I need.
Over the weekend I was messing around with ibuffer, integrating my custom ibuffer groups with @sanityinc's ibuffer-vc (recommended).
I was surprised to discover that documentation for ibuffer (in since 22.1?) is ... sparsely documented. But it was fun to get it working because the code (and Steve's add-on) is
PERFECTLY LIMPID
(the real story here is that I have been waiting a lifetime to drop the phrase "perfectly limpid" for internet points and here is my opportunity)
@jameshowell @sanityinc I also use Ibuffer but I am slightly annoyed that point changes on auto update (in contrast to Buffer-menu-mode). I would like to fix this sometimes.
@jameshowell @sanityinc Even for few buffers you will see the effect with ibuffer-auto-mode, since point always jumps back to the beginning. Extremely annoying or I am doing something wrong...
The filter groups are defined as a list (of lists), which (per the definition of list) has an order.
That order determines the logic of which buffers get assigned to which groups. That order also determines the order in which those groups get displayed.
Sometimes I want those orderings to be different. Which would require two lists.
Each element already has a name string, so a display-order list could reference elements in the filter-order list. But that gets complicated when some of the elements are generated dynamically, like from ibuffer-vc.
This annoyance is probably not worthy of the effort to rewrite the package with a different abstraction. Especially not the effort to do so without introducing breaking changes.
@bmp @jameshowell @sanityinc Yes, bufler looks nice! Alphapapa has many great packages. But I have slightly different preferences regarding dependencies and library usage. In addition to bufler I would have to install these libraries: burly, dash, f, hydra, lv, pretty-hydra and s. This is pretty large footprint. I care about this for multiple reasons - supply chain issues and consistency on the Elisp level. To be clear, this should not matter much for most users.
@bmp @jameshowell @sanityinc @pkal I am by no means a package minimalist - I have many packages installed and I suggest that people take advantage of our large ecosystem. However I differentiate between packages on the user level and the library level. On the library level my preference is to rely on Emacs builtins for basic functionality (instead of dash, f or s). If crucial library functionality is missing it can be added to subr.el and then ported back via Compat.
@bmp @jameshowell @sanityinc @pkal Unfortunately it turns out that adding new functionality to subr.el sometimes leads to long emacs-devel discussions with little progress. Not all additions are not welcome, like the recently discussed file-to-string function. These are the gaps which are then filled by libraries like dash, f or s.
Agreed. I think the point to stress here is that users can decide. Hydra, for example, always struck me as relatively bloated, buggy, and a little too idiosyncratic with respect to (at least my mental models of) Emacs internal and UI conventions. But obviously it was very popular! Let a thousand flowers bloom. Cherish the Four Freedoms ๐
@jameshowell Actually I found Hydra pretty good and simple. It is a smaller variant of Transient. But given that Transient is now the standard why not rely on it? I agree with you that users should decide and I want to emphasize that on the user level the underlying libraries do not matter. @bmp @me @sanityinc @pkal
@minad I mean I would never dream of using evil-mode. But I am glad that evil-mode people can depend on evil-mode. Follow your nose to the Emacs that is your Emacs.
@minad @jameshowell @sanityinc @pkal I havenโt gotten to the point of discerning between packages based on such criteria:-), Iโve been relying on packages that help provide the functionality I need. Maybe, sometime in the future Iโll start a screening process before I use them!
James Endres Howell
in reply to Jonathan Lamothe • • •Over the weekend I was messing around with ibuffer, integrating my custom ibuffer groups with @sanityinc's ibuffer-vc (recommended).
I was surprised to discover that documentation for ibuffer (in since 22.1?) is ... sparsely documented. But it was fun to get it working because the code (and Steve's add-on) is
PERFECTLY LIMPID
(the real story here is that I have been waiting a lifetime to drop the phrase "perfectly limpid" for internet points and here is my opportunity)
github.com/purcell/ibuffer-vc
#emacs #ibuffer
GitHub - purcell/ibuffer-vc: Let Emacs' ibuffer-mode group files by git project etc., and show file state
GitHubJames Endres Howell reshared this.
Steve Purcell
in reply to James Endres Howell • • •รฉric ๐ฒ ๐ช๐บ
in reply to James Endres Howell • • •Daniel Mendler
in reply to James Endres Howell • • •@jameshowell @sanityinc I also use Ibuffer but I am slightly annoyed that point changes on auto update (in contrast to Buffer-menu-mode). I would like to fix this sometimes.
debbugs.gnu.org/cgi/bugreport.โฆ
#77210 - 30.1.50; ibuffer - preserve window position when updating - GNU bug report logs
debbugs.gnu.orgJames Endres Howell
in reply to Daniel Mendler • • •Never had enough buffers to notice...!
@me @sanityinc
Daniel Mendler
in reply to James Endres Howell • • •James Endres Howell
in reply to Daniel Mendler • • •@minad My annoyance with ibuffer:
The filter groups are defined as a list (of lists), which (per the definition of list) has an order.
That order determines the logic of which buffers get assigned to which groups. That order also determines the order in which those groups get displayed.
Sometimes I want those orderings to be different. Which would require two lists.
Each element already has a name string, so a display-order list could reference elements in the filter-order list. But that gets complicated when some of the elements are generated dynamically, like from ibuffer-vc.
This annoyance is probably not worthy of the effort to rewrite the package with a different abstraction. Especially not the effort to do so without introducing breaking changes.
@me @sanityinc
Bharath M. Palavalli
in reply to James Endres Howell • • •GitHub - alphapapa/bufler.el: A butler for your buffers. Group buffers into workspaces with programmable rules, and easily switch to and manipulate them.
GitHubJames Endres Howell
in reply to Bharath M. Palavalli • • •@bmp oooooh well lookit this now
@minad @me @sanityinc
Daniel Mendler
in reply to Bharath M. Palavalli • • •Daniel Mendler
in reply to Daniel Mendler • • •Daniel Mendler
in reply to Daniel Mendler • • •James Endres Howell
in reply to Daniel Mendler • • •Agreed. I think the point to stress here is that users can decide. Hydra, for example, always struck me as relatively bloated, buggy, and a little too idiosyncratic with respect to (at least my mental models of) Emacs internal and UI conventions. But obviously it was very popular! Let a thousand flowers bloom. Cherish the Four Freedoms ๐
@bmp @me @sanityinc @pkal
Daniel Mendler
in reply to James Endres Howell • • •@bmp @me @sanityinc @pkal
James Endres Howell
in reply to Daniel Mendler • • •@minad I mean I would never dream of using evil-mode. But I am glad that evil-mode people can depend on evil-mode. Follow your nose to the Emacs that is your Emacs.
@bmp @me @sanityinc @pkal
Jonathan Lamothe likes this.
Randy Ridenour
in reply to James Endres Howell • • •Jonathan Lamothe
in reply to James Endres Howell • •@James Endres Howell @Steve Purcell @Bharath M. Palavalli @Philip @Daniel Mendler That's the beauty of Emacs: if you don't like it, it's infinitely customizable, and you can massage it into something you do like (assuming you're willing to do some digging).
There's also something to be said for an out-of-the-box solution that's close enough. I just prefer the former.
Bharath M. Palavalli
in reply to Daniel Mendler • • •James Endres Howell
in reply to Bharath M. Palavalli • • •@bmp @minad @sanityinc @pkal
#emacs
James Endres Howell reshared this.
Daniel Mendler
in reply to James Endres Howell • • •David C. Norris ๐บ๐ฆ ๐ฝ
in reply to Daniel Mendler • • •M-x such-and-such
James Endres Howell
in reply to David C. Norris ๐บ๐ฆ ๐ฝ • • •