I'd like to submit some mild changes in Ibuffer (ibuffer.el, ibuf-ext.el,
and ibuffer-tests.el) which are available in this branch
https://github.com/genovese/emacs/tree/ibuffer-and-filters
which is up to date relative to the HEAD as of this morning. All these
changes have been tested successfully in a new and a pre-existing build
of emacs. (And my copyright paperwork has already been processed.)
A brief description is below, with more detail in the committ message.
I've also attached a patch file in case anyone prefers that.
Brief Description: As a heavy Ibuffer user, I make steady use of
filters and filter groups, with some quite specific rules. While
the filter lists offer an implicit logical 'and', it would be
much more convenient if one could use an 'and' *within* these rules.
(Although DeMorgan's laws will work with 'or' and 'not' and
saved filters can help to simulate this, neither is particularly
convenient, readable, nor aestheticcally pleasing.) The proposed
changes, summarize below, were motivated by adding this simple
and negligble-cost feature to the filtering.
The proposed changes are as follows:
+ Compound filters
Add support for 'and' and normalize handling of 'not' to allow the
original "spliced" format as well as a more lispy "sexp" format.
Original documentation for the structure of compound filters was
almost completely lacking. The updated code documents compound
filter structure and clarifies the language used throughout,
providing a single authoritative source for documentation on each
concept.
Fixed bug in 'saved' filter handling. There was an inconsistency in
how the data was accessed at different points that would cause
failure. (I do wonder if anyone ever uses saved filters based on
this.) There are two choices in how to fix this; I made one but am
open to both.
+ New pre-defined filters and an interactive filtering command
Several new filters are defined by default to handle some very
common filtering tasks (e.g., matching filename components since
the 'filename' filter matches on the absolute pathname). A new
command is offered to select a filter by completion on the
descriptions, which is very easy to use without remembering key
bindings.
+ Documentation fixes throughout ibuf-ext.el
+ Many new tests and fixed bug in original test.
All the tests pass in emacs -Q in both new and
old builds of emacs 25 (on Mac OS X).
I look forward to any questions or comments. Thanks for your
consideration.
-- Chris