The Islander
I agree this should be better documented. To stimulate the discussion;
As the person who submitted that issue on github subfilter and subsequently closed it, the filter operator, and the subsequent :filter run prefix have changed this quite a bit. My concern then was "not having a filter to be sub of when used:, however as the first example show I have effectively gotten what I asked for
The subfilter was first on the scene, and made imbedding a full filter inside another much easier, otherwise you would have to reconstruct the filter from filter fragments.
From the doco note it still uses the word subfilter but they look the same.
Filter operator
Apply a subfilter to each input title and return the titles that return a non-empty result from the subfilter
The filter operator runs a subfilter
for each input title, and returns those input titles for which the
subfilter returns a non-empty result (in other words the result is not
an empty list). The results of the subfilter are thrown away.
subfilter operator
Compare with the similar filter
operator which runs a subfilter against each title, returning those
titles that return a non-empty list (and discards the results of the
subfilter) In the following example there is no apparent difference, remember there is an implied [all[].. at the beginning of reach run.
\define active-filter() [!tag[done]!tag[reference]]
{{{ [tag[todo]count[]] }}}
{{{ [tag[todo]subfilter<active-filter>count[]] }}}
{{{ [tag[todo]!subfilter<active-filter>count[]] }}}
<hr>
{{{ [tag[todo]filter<active-filter>count[]] }}}
{{{ [tag[todo]!filter<active-filter>count[]] }}}
Regards
Tones