> Here's an idea. Type & to do intersection with the following filter, > and type | to do union with the following filter. Both & and | are > undefined in Rmail mode, so they are available for this. They > will be easy to remember, too. FWIW, this is what you can do using Icicles - HTH. The idea is that (1) you can narrow to a subset of the current set of candidates, or (2) if you've narrowed, you can widen to the current set plus new matches against the last set from which you narrowed. IOW, you can widen if you've previously narrowed - otherwise, widening is a no-op, as there's no superset to match against. It works like this: 1. When you complete, the original domain of completion candidates is that used by (passed to) `completing-read' (or similar) - an alist or whatever. 2. During completion you can use a key to narrow or widen the set of candidates. 3. Each time you narrow, a recursive minibuffer is used, completing with the result of narrowing, i.e., completing against the set of matches in the parent minibuffer level. 4. `C-g' pops up one level of minibuffer, i.e., one level of recursion (out of the minibuffer altogether if already at the top-level minibuffer). 5. #4 means you can narrow, do something with some candidates, then `C-g' to remove the last narrowing filter, narrow again with a different filter, etc. 6. When you widen, the current set of candidates is matched against a regexp that's an alternation (\|) of the current match pattern and whatever widening pattern you provide. Instead of entering a recursive minibuffer, you stay at the same level, but with the match-pattern changed to the alternation. Narrowing matches patterns independently - IOW it's orderless. This is possible because it uses a fresh minibuffer with a different set of candidates (those that matched the previous pattern of the new AND). Widening just changes the current match-pattern to an alternation regexp (OR). It doesn't invoke a recursive minibuffer. It's not orderless. ____ `M-*' narrows without completing `S-SPC' narrows and completes `M-+' widens without completing `S-<backspace>' widens and completes `S-TAB' completes (`TAB' does also, but differently)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4