X-Git-Url: https://git.cworth.org/git?p=notmuch;a=blobdiff_plain;f=doc%2Fconf.py;h=6afeac06e53d4da8d6123ecb7c3b1ac55d2ff891;hp=aa864b3c0eb635268b46d5a326c3a7ebca864a73;hb=306b7028d2288a3002cdbbcf8fd0973d8d969b84;hpb=65b17dab461ef847b418aff69bc53e697ec2d20b diff --git a/doc/conf.py b/doc/conf.py index aa864b3c..6afeac06 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -4,6 +4,8 @@ import sys import os +extensions = [ 'sphinx.ext.autodoc' ] + # The suffix of source filenames. source_suffix = '.rst' @@ -12,16 +14,26 @@ master_doc = 'index' # General information about the project. project = u'notmuch' -copyright = u'2009-2017, Carl Worth and many others' +copyright = u'2009-2022, Carl Worth and many others' location = os.path.dirname(__file__) for pathdir in ['.', '..']: - version_file = os.path.join(location,pathdir,'version') + version_file = os.path.join(location,pathdir,'version.txt') if os.path.exists(version_file): with open(version_file,'r') as infile: version=infile.read().replace('\n','') +# for autodoc +sys.path.insert(0, os.path.join(location, '..', 'bindings', 'python-cffi', 'build', 'stage')) + +# read generated config +for pathdir in ['.', '..']: + conf_file = os.path.join(location,pathdir,'sphinx.config') + if os.path.exists(conf_file): + with open(conf_file,'r') as infile: + exec(''.join(infile.readlines())) + # The full version, including alpha/beta/rc tags. release = version @@ -29,6 +41,23 @@ release = version # directories to ignore when looking for source files. exclude_patterns = ['_build'] +if tags.has('WITH_EMACS'): + # Hacky reimplementation of include to workaround limitations of + # sphinx-doc + lines = ['.. include:: /../emacs/rstdoc.rsti\n\n'] # in the source tree + for file in ('notmuch.rsti', 'notmuch-lib.rsti', 'notmuch-show.rsti', 'notmuch-tag.rsti', 'notmuch-tree.rsti'): + lines.extend(open(rsti_dir+'/'+file)) + rst_epilog = ''.join(lines) + del lines +else: + # If we don't have emacs (or the user configured --without-emacs), + # don't build the notmuch-emacs docs, as they need emacs to generate + # the docstring include files + exclude_patterns.append('notmuch-emacs.rst') + +if not tags.has('WITH_PYTHON'): + exclude_patterns.append('python-bindings.rst') + # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' @@ -47,6 +76,15 @@ html_static_path = [] # Output file base name for HTML help builder. htmlhelp_basename = 'notmuchdoc' +# Disable SmartyPants, as it mangles command lines. +# Despite the name, this actually affects manual pages as well. +html_use_smartypants = False + +# See: +# - https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-manpages_url +# - https://manpages.debian.org/ +manpages_url = 'https://manpages.debian.org/{page}.{section}.html' + # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples @@ -54,6 +92,8 @@ htmlhelp_basename = 'notmuchdoc' notmuch_authors = u'Carl Worth and many others' +man_make_section_directory = False + man_pages = [ ('man1/notmuch', 'notmuch', u'thread-based email index, search, and tagging', @@ -95,6 +135,10 @@ man_pages = [ u'incorporate new mail into the notmuch database', [notmuch_authors], 1), + ('man7/notmuch-properties', 'notmuch-properties', + u'notmuch message property conventions and documentation', + [notmuch_authors], 7), + ('man1/notmuch-reindex', 'notmuch-reindex', u're-index matching messages', [notmuch_authors], 1), @@ -115,6 +159,10 @@ man_pages = [ u'syntax for notmuch queries', [notmuch_authors], 7), + ('man7/notmuch-sexp-queries', 'notmuch-sexp-queries', + u's-expression syntax for notmuch queries', + [notmuch_authors], 7), + ('man1/notmuch-show', 'notmuch-show', u'show messages matching the given search terms', [notmuch_authors], 1), @@ -152,3 +200,10 @@ texinfo_documents += [ x[2], # description 'Miscellaneous' # category ) for x in man_pages] + +def setup(app): + import docutils.nodes + # define nmconfig role and directive for config items. + app.add_object_type('nmconfig','nmconfig', + indextemplate='pair: configuration item; %s', + ref_nodeclass=docutils.nodes.generated)