aboutsummaryrefslogtreecommitdiff
path: root/doc
AgeCommit message (Collapse)Author
2021-09-04lib/parse-sexp: add term prefix backed fieldsDavid Bremner
We use "boolean" to describe fields that should generate terms literally without stemming or phrase splitting. This terminology might not be ideal but it is already enshrined in notmuch-search-terms(7).
2021-09-04lib/parse-sexp: support phrase queries.David Bremner
Anything that is quoted or not purely word characters is considered a phrase. Phrases are not stemmed, because the stems do not have positional information in the database. It is less efficient to scan the term twice, but it avoids a second pass to add prefixes, so maybe it balances out. In any case, it seems unlikely query parsing is very often a bottleneck.
2021-09-04lib/parse-sexp: support subject fieldDavid Bremner
The broken tests are because we do not yet handle phrase searches.
2021-09-04lib/parse-sexp: support and, not, and or.David Bremner
All operations and (Xapian) fields will eventually have an entry in the prefixes table. The flags field is just a placeholder for now, but will eventually distinguish between various kinds of prefixes.
2021-09-04lib/parse-sexp: stem unquoted atomsDavid Bremner
This is somewhat less DWIM than the Xapian query parser, but it has the advantage of simplicity.
2021-09-04lib/parse-sexp: parse single terms and the empty list.David Bremner
There is not much of a parser here yet, but it already does some useful error reporting. Most functionality sketched in the documentation is not implemented yet; detailed documentation will follow with the implementation.
2021-08-22doc/emacs: use :code: for some missing referencesDavid Bremner
It's not obvious how to reference (non-notmuch) emacs variables and functions in a sphinx document.
2021-08-22doc: read notmuch-tree.rsti for rst_epilogDavid Bremner
This is needed so that docstrings from notmuch-tree.el (in particular notmuch-tree-toggle-order) can be used in the emacs documentation.
2021-08-21emacs: new command notmuch-tree-filter-by-tagjao
This new command for notmuch-tree-mode is analogous to notmuch-search-filter-by-tag, bound to "t" in notmuch-search-mode; it gets therefore the same "t" keybinding in notmuch-tree-mode (replacing the current assignment to notmuch-search-by-tag).
2021-08-21emacs: new command notmuch-tree-filterjao
This command is analogous to notmuch-filter, but is defined on tree mode buffers.
2021-08-21doc: document database search algorithm.David Bremner
Essentially a translation of the function _choose_database_path for human consumption. As a bonus, document environment variable NOTMUCH_DATABASE
2021-07-06replace references to freenode with references to liberaDavid Bremner
I left the reference to freenode in the test suite data, since it is historical.
2021-07-03doc: new notmuch show --sort and related emacs commandsjao
New --sort CLI option documented in notmuch-show's man page, and notmuch-search-toggle-order mentioned in doc/notmuch-emacs.rst and devel/emacs-keybindings.org (in the latter, there's also some whitespace changes in a table introduced by org-mode).
2021-06-27doc: document database.autocommit variableDavid Bremner
This exposes some database internals that most users will probably not understand.
2021-06-25Merge branch 'release'David Bremner
2021-06-23doc: tweak hook configuration documentation.David Bremner
Add a historical note, and hint to look below for more about hooks. Capitalized the heading for consistency, removed blank line.
2021-06-04emacs: drop setting mail-user-agent, and document how to set itDavid Bremner
After some discussion [1], I decided it is better to make notmuch users who rely on this behaviour customize mail-user-agent. This is consistent with the behaviour of other emacs mail packages. [1]: id:87k0nuhfrk.fsf@toryanderson.com
2021-05-22doc: example command-line option referenceJani Nikula
Example reference to a command-line option using the option role reference. This creates a hyperlink in html, and the usual boldface style in man page. This could be used throughout the man pages.
2021-05-22doc: use program and option directives to document optionsJani Nikula
Use the program and option directives to document the subcommand options. This unifies a lot of option documentation throughout. This also makes it possible to reference options with :option:`--foo` (within .. program::) or :option:`subcommand --foo` (globally). This is left for later work. See https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#directive-program Note: There is a lot of indentation change, but intentionally there is no reflow. Using 'git diff -w' or 'git show -w' to ignore white space changes makes this a very easy change to review.
2021-05-22doc: use envvar directive and role for environment variablesJani Nikula
Make man1/notmuch.rst the single point of truth for describing notmuch environment variables. Use the envvar directive for that, and reference them with the envvar role. Drive-by cleanup configuration file and hook directory search order documentation.
2021-05-22doc: cross-reference notmuch man pages with actual linksJani Nikula
Add internal hyperlink targets for man pages and cross-reference them using the any role reference. There are a number of alternatives to accomplish this, but this seems like the combination that retains the man page section number and the same boldface style in the man pages. As a bonus, we get sanity checking on the links; for example notmuch-search-terms.rst had a reference to notmuch-properties(1) i.e. the wrong section. The obvious semantic follow-up change would be to only have meaningful "see also" references instead of having them all everywhere.
2021-05-22doc: use manpage role references to external man pagesJani Nikula
Using manpage role references generates helpful links in html documentation, while retaining the same boldface style in the man pages. The external man page site is configurable. The Debian manpage site seems like a good fit for Notmuch.
2021-05-19doc: fix variable name in documentationLuis Henriques
Variable 'notmuch-saved-searches-sort-function' does not exist; 'notmuch-saved-search-sort-function' is the correct name. Signed-off-by: Luis Henriques <henrix@camandro.org>
2021-05-19doc: fix man page build for Sphinx 4.xJani Nikula
Sphinx 4.0 changed the default value of man_make_section_directory from False to True. We create the section directories and move the files manually, so fix the immediate man build failure by disabling the feature. The Sphinx documentation on this [1] is confusing, and has the change backwards. Git history says the default changed from False to True. [1] https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-man_make_section_directory
2021-05-19doc: fix variable name in documentationLuis Henriques
Variable 'notmuch-saved-searches-sort-function' does not exist; 'notmuch-saved-search-sort-function' is the correct name. Signed-off-by: Luis Henriques <henrix@camandro.org>
2021-05-19doc: fix man page build for Sphinx 4.xJani Nikula
Sphinx 4.0 changed the default value of man_make_section_directory from False to True. We create the section directories and move the files manually, so fix the immediate man build failure by disabling the feature. The Sphinx documentation on this [1] is confusing, and has the change backwards. Git history says the default changed from False to True. [1] https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-man_make_section_directory
2021-05-10doc: document database.backup_dirDavid Bremner
Most users will not need to change this, but documenting it helps preserve the interface.
2021-05-10doc: document (tersely) the intended behaviour of relative paths.David Bremner
2021-03-27CLI/config: default to storing all config in external filesDavid Bremner
Previously the fact that some configuration options were only stored in the database (and thus editing the config file had no effect) was a source of user confusion. This was fixed with the series ending at d9af0af1646. On the other hand, the underlying partition of config options into those stored by default in the database and those stored in the config file remained. This is also confusing, since now some invocations of "notmuch config set" modify the config file, and others silently modify the database instead. With this commit, it is up to the user to decide which configuration to modify. A new "--database" option is provided for notmuch config to enable modifying the configuration information in the database; otherwise the default is to update an external config file.
2021-03-20lib: support splitting mail from database location.David Bremner
Introduce a new configuration value for the mail root, and use it to locate mail messages in preference to the database.path (which previously implied the mail messages were also in this location. Initially only a subset of the CLI is tested in a split configuration. Further changes will be needed for the remainder of the CLI to work in split configurations.
2021-02-18Merge tag '0.31.4'David Bremner
notmuch 0.31.4 release
2021-02-18doc: bump copyright yearDavid Bremner
2021-02-06doc: describe new config frameworkDavid Bremner
Remove STORED IN DATABASE discussion, describe search rules. Currently profiles seem a bit pointless. They will make more sense when they apply to databases as well.
2021-01-09docs: drop deprecated doxygen TCL_SUBST flagDaniel Kahn Gillmor
notmuch has no tcl code, and doxygen upstream is deprecating/removing tcl support anyway: https://github.com/doxygen/doxygen/commit/48a7afc0caf69857a42b0fe1963db3440cb4000f
2020-12-09build/docs: move docstring prereq to file targetsDavid Bremner
Under a sufficiently high level of parallelism [1] there seems to be a a race condition that allows sphinx-build to start running before the docstrings are extracted. This change moves the docstring stamp from the phony targets sphinx-html and sphinx-info to the file targets that they depend on. I'm not sure why this makes things better, but I am fairly confident it does not make things worse, and experimentally it seems to eliminate the race condition. [1]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=976934
2020-10-30Rename version to version.txtRalph Seichter
Building Notmuch on macOS is known to cause problems because the Notmuch distribution archive contains two files named "version". These names clash with the <version> header as defined in C++20. Therefore, the existing naming will likely become a problem on other platforms as well, once compilers adopt the new standard. Signed-off-by: Ralph Seichter <github@seichter.de> Amended-by: db s/keyword/header/ in commit message.
2020-08-09emacs: Use makefile-gmake-mode in Makefile*sJonas Bernoulli
Use `makefile-gmake-mode' instead of `makefile-mode' because the former also highlights ifdef et al. while the latter does not. "./Makefile.global" and one "Makefile.local" failed to specify any major mode at all but doing so is necessary because Emacs does not automatically figure out that these are Makefiles (of any flavor).
2020-07-15doc: add new python bindings to main documentation tree.David Bremner
A separate conf.py and doc directory (or will be needed if someone wants to build the bindings docs separately from notmuch.
2020-07-15doc: replace use of environment variables with a generated configDavid Bremner
It is getting unwieldy to pass configuration options on the sphinx-build command line, and I anticipate further use of conditionals. As far as I could tell, execing a string is the idiomatic way to emulate include in Python.
2020-07-11doc: make gzipped man pages reproducibleJonas Witschel
gzip includes the name of the uncompressed file and its modification timestamp into the compressed archive. The latter makes it hard to reproduce the generated files bit for bit at a later time, so omit this information from the archive using the "--no-name" option. This is a reproducibility best practice, see https://wiki.debian.org/ReproducibleBuilds/TimestampsInGzipHeaders
2020-06-06doc: field processor support now always included, adjust manual pagesTomi Ollila
The features that require field processor support, are now just documented w/o mentioning **Xapian Field Processors**' is needed for those. Replaced "compact" and "field_processor" with "retry_lock" in build_with config option, as it is currently the only one that is optionally excluded. The former 2 are now documented as features always included. Dropped one 'we' "passive" in notmuch-search-terms.rst. It was the only one, and inconsistent with rest of the documentation in that file. Dropped message about conditional open-ended ranges support, as those are now always supported.
2020-06-01bump date in documentationDavid Bremner
2020-06-01doc: fix for out-of-tree builds of notmuch-emacs docsDavid Bremner
The sphinx-doc include directive does not have the ability to include files from the build tree, so we replace the include with reading the files in conf.py. The non-trivial downside of this is that the emacs docstrings are now defined for every rst source file. They are namespaced with docstring::, so hopefully there will not be any surprises. One thing that is noticable is a small (absolute) time penalty in running sphinx-doc.
2020-05-08notmuch(1): clarify documentation about --option/value separatorsDaniel Kahn Gillmor
id:CA+Tk8fzRiqxWpd=r8=DRvEewNZXUZgD7MKyRLB1A=R-LxxGEZw@mail.gmail.com started a thread of discussion that showed that the cli's current idiosyncrasies around dealing with boolean options were not understandable. This attempts to improve the documentation at least (actual changes to the API might be better, but have not reached consensus). Note that no one in the discussion thread identified any other (non-boolean) command-line options that cannot use space as a separator. If such an option is identified (or introduced in the future), it should be added explicitly to this part of the manual. Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2020-04-01doc: Drop obsolete MSCGEN_PATH, PERL_PATH from doxygen configurationDaniel Kahn Gillmor
Since doxygen 1.8.16, MSCGEN_PATH and PERL_PATH are obsolete: MSCGEN_PATH: https://github.com/doxygen/doxygen/commit/873e0ccfbe43ef98d4858beb08eef37631ae3cf6 PERL_PATH: https://github.com/doxygen/doxygen/commit/6d1535c38fe6bdaa2a00fff0e7e43774a740a4ce I don't think that the notmuch builds ever depended on them in the first place, and including them in the default config yields the following two warnings: ``` doxygen ./doc/doxygen.cfg warning: Tag 'PERL_PATH' at line 267 of file './doc/doxygen.cfg' has become obsolete. To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u" warning: Tag 'MSCGEN_PATH' at line 272 of file './doc/doxygen.cfg' has become obsolete. To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u" ``` Remove them to avoid the warnings. Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2020-02-19Drop deprecated/unused crypto.gpg_pathDaniel Kahn Gillmor
crypto.gpg_path was only used when we built against gmime versions before 3.0. Since we now depend on gmime 3.0.3 or later, it is meaningless. The removal of the field from the _notmuch_config struct would be an ABI change if that struct were externally exposed, but it is not, so it's safe to unilaterally remove it. Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2020-01-16doc: clean up manpage description of "notmuch-config list" outputDaniel Kahn Gillmor
The escaping in the description of the output of "notmuch-config list" appears to have been inherited from some previous attempts at documentation. It leaked out in the actual generated manpage documentation, where it looks like this: list Every configuration item is printed to stdout, each on a separate line of the form: *section*.\ *item*\ =\ *value* This simplification cleans up the overescaping. Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2019-09-15index: repair "Mixed Up" messages before indexing.Daniel Kahn Gillmor
When encountering a message that has been mangled in the "mixed up" way by an intermediate MTA, notmuch should instead repair it and index the repaired form. When it does this, it also associates the index.repaired=mixedup property with the message. If a problem is found with this repair process, or an improved repair process is proposed later, this should make it easy for people to reindex the relevant message. The property will also hopefully make it easier to diagnose this particular problem in the future. Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2019-09-01index: avoid indexing legacy-display partsDaniel Kahn Gillmor
When we notice a legacy-display part during indexing, it makes more sense to avoid indexing it as part of the message body. Given that the protected subject will already be indexed, there is no need to index this part at all, so we skip over it. If this happens during indexing, we set a property on the message: index.repaired=skip-protected-headers-legacy-display Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2019-09-01repair: set up codebase for repair functionalityDaniel Kahn Gillmor
This adds no functionality directly, but is a useful starting point for adding new repair functionality. Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>