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