+
+<pre>
+zstyle ':grml:chpwd:dirstack' enable false
+</pre>
+
+<p>
+It is possible to apply a filter to the names of directories that will be
+committed to the persistent dirstack file. There are two ways to configure this
+filter: A general function based filter and a pattern based filter. Both are
+setup via styles in the <strong>':grml:chpwd:dirstack'</strong> context.
+</p>
+<p>
+To use a function based filter set the <em>filter</em> style for that context to the
+name of a function to call every time a directory name is to be added to the
+persistent dirstack. If the function's return value signals success (ie. return
+value "0"), the directory name is filtered out and <strong>not</strong> added to the
+persistent stack. Example:
+\
+</p>
+
+<pre>
+function my_dirstack_filter() { [[ $1 == /tmp(|/*) ]] }
+zstyle ':grml:chpwd:dirstack' filter my_dirstack_filter
+</pre>
+
+<p>
+The pattern based filter uses a list of patterns passed to the <em>exclude</em>
+style in the aforementioned context. Each pattern is tested and the first that
+matches will keep the directory name from being added to the persistent stack.
+If none of the patterns matches, the name is added. example:
+\
+</p>
+
+<pre>
+zstyle ':grml:chpwd:dirstack' exclude "/tmp(|/*)" "$HOME/tmp(|/*)"
+</pre>
+
+<p>
+The function based filter is more general, the pattern based filter easier to
+set up. If both filter variants are used at the same time, the function based
+filter will be executed <em>before</em> the pattern based one.
+</p>
+<p>
+If you would like to apply your filters while <em>loading</em> the persistent
+dirstack file, set the <em>filter-on-load</em> boolean style (the default is
+<em>false</em>):
+\
+</p>
+
+<pre>
+zstyle ':grml:chpwd:dirstack' filter-on-load true
+</pre>
+
+<p>
+Setting the <em>filter-on-load</em> and <em>enable</em> styles needs to be done in
+".zshrc.pre" because the styles need to be set when the main setup is
+executing! The other styles do not have this limitation, but enabling the
+system as well as the initial filtering will obviously be done using settings
+and filters that are configured <strong>at</strong> <strong>that</strong> <strong>point</strong>.
+</p>
+<p>
+With respect to <em>filter-on-load</em>, the rule of thumb is: If you want to filter
+on load, setup everything in ".zshrc.pre" otherwise ".zshrc.local" works just
+as well.
+</p>
+
+</section>
+<section>