1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
|
# -*- coding: utf-8 -*-
import sys
import os
from pathlib import Path
sys.path.append(str(Path(__file__).parent))
extensions = [ 'sphinx.ext.autodoc', 'elisp' ]
# The suffix of source filenames.
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'notmuch'
copyright = u'2009-2026, Carl Worth and many others'
location = os.path.dirname(__file__)
for pathdir in ['.', '..']:
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
# List of patterns, relative to source directory, that match files and
# 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-hello.rsti', 'notmuch-show.rsti', 'notmuch-tag.rsti', 'notmuch-tree.rsti', 'notmuch-maildir-fcc.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'
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# prevent generation of python module index
html_domain_indices=[]
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
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
# (source start file, name, description, authors, manual section).
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',
[notmuch_authors], 1),
('man1/notmuch-address', 'notmuch-address',
u'output addresses from matching messages',
[notmuch_authors], 1),
('man1/notmuch-compact', 'notmuch-compact',
u'compact the notmuch database',
[notmuch_authors], 1),
('man1/notmuch-config', 'notmuch-config',
u'access notmuch configuration file',
[notmuch_authors], 1),
('man1/notmuch-count', 'notmuch-count',
u'count messages matching the given search terms',
[notmuch_authors], 1),
('man1/notmuch-dump', 'notmuch-dump',
u'creates a plain-text dump of the tags of each message',
[notmuch_authors], 1),
('man1/notmuch-emacs-mua', 'notmuch-emacs-mua',
u'send mail with notmuch and emacs',
[notmuch_authors], 1),
('man1/notmuch-git', 'notmuch-git',
u'manage notmuch tags with git',
[notmuch_authors], 1),
('man1/notmuch-git', 'nmbug',
u'manage notmuch bugs with git',
[notmuch_authors], 1),
('man5/notmuch-hooks', 'notmuch-hooks',
u'hooks for notmuch',
[notmuch_authors], 5),
('man1/notmuch-insert', 'notmuch-insert',
u'add a message to the maildir and notmuch database',
[notmuch_authors], 1),
('man1/notmuch-new', 'notmuch-new',
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),
('man1/notmuch-reply', 'notmuch-reply',
u'constructs a reply template for a set of messages',
[notmuch_authors], 1),
('man1/notmuch-restore', 'notmuch-restore',
u'restores the tags from the given file (see notmuch dump)',
[notmuch_authors], 1),
('man1/notmuch-search', 'notmuch-search',
u'search for messages matching the given search terms',
[notmuch_authors], 1),
('man7/notmuch-search-terms', 'notmuch-search-terms',
u'syntax for notmuch queries',
[notmuch_authors], 7),
('man1/notmuch', 'notmuch-setup',
u'getting started with notmuch',
[notmuch_authors], 1),
('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),
('man1/notmuch-tag', 'notmuch-tag',
u'add/remove tags for all messages matching the search terms',
[notmuch_authors], 1),
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
# If true, do not generate a @detailmenu in the "Top" node's menu.
texinfo_no_detailmenu = True
texinfo_documents = [
('notmuch-emacs', 'notmuch-emacs', u'notmuch-emacs documentation',
notmuch_authors, 'notmuch-emacs',
'emacs based front-end for notmuch', 'Miscellaneous'),
]
# generate texinfo list from man page list
texinfo_documents += [
(
x[0], # source start file
x[1], # target name
x[1] + u' documentation', # title
x[3][0], # author
x[1], # dir menu entry
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,
objname='config item' )
|