id = "notmuch" name = "Notmuch" homepage = "https://notmuchmail.org" description = "A command-line based program for indexing, searching, reading, and tagging large collections of email messages." executables = ["notmuch"] [dotfiles] # notmuch-config(1) (https://notmuchmail.org/doc/latest/man1/notmuch-config.html) # documents the profile-aware search order: XDG config # notmuch//config, then ~/.notmuch-config. (default profile # names are represented explicitly below). The older getting-started guide # documents ~/.notmuch-config as the default created by `notmuch setup`. paths = [ "~/.notmuch-config", "~/.notmuch-config.*", "[configHome]/notmuch/default/config", "[configHome]/notmuch/*/config", ] # The config stores mail location, identity, and tagging preferences; Notmuch # does not document credentials in this file. secret = [] [commands] format = 1 label = "notmuch" description = "Search the mail index and list matching threads. Other notmuch subcommands are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["search"] label = "Search mail" description = "Search for messages matching the given search terms and display the threads containing them." [[commands.subcommand.source]] id = "man" kind = "manual" url = "https://manpages.debian.org/unstable/notmuch/notmuch-search.1.en.html" revision = "0.40-2" evidence = """notmuch search [option ...] ... --format=(json|sexp|text|text0) --output=(summary|threads|messages|files|tags) --sort=(newest-first|oldest-first) --offset=[-]N --limit=N --exclude=(true|false|all|flag)""" [[commands.subcommand.field]] id = "terms" label = "Search terms" description = "Example: tag:unread and date:today.." type = "string" position = 0 multiple = true sources = ["man"] [[commands.subcommand.field]] id = "output" label = "Output" type = "enum" option = ["--output"] value_style = "equals" choices = [{ value = "summary", label = "Summary" }, { value = "threads", label = "Thread IDs" }, { value = "messages", label = "Message IDs" }, { value = "files", label = "File names" }, { value = "tags", label = "Tags" }] sources = ["man"] [[commands.subcommand.field]] id = "format" label = "Format" type = "enum" option = ["--format"] value_style = "equals" choices = [{ value = "text", label = "Text" }, { value = "json", label = "JSON" }, { value = "sexp", label = "S-expression" }, { value = "text0", label = "NUL-separated text" }] sources = ["man"] [[commands.subcommand.field]] id = "sort" label = "Sort" type = "enum" option = ["--sort"] value_style = "equals" choices = [{ value = "newest-first", label = "Newest first" }, { value = "oldest-first", label = "Oldest first" }] sources = ["man"] [[commands.subcommand.field]] id = "limit" label = "Limit results" type = "integer" option = ["--limit"] value_style = "equals" sources = ["man"] [[commands.subcommand.field]] id = "offset" label = "Skip first results" type = "integer" option = ["--offset"] value_style = "equals" sources = ["man"] [[commands.subcommand.field]] id = "exclude" label = "Excluded tags" type = "enum" option = ["--exclude"] value_style = "equals" choices = [{ value = "true", label = "Prevent excluded messages from matching" }, { value = "false", label = "Allow excluded messages" }, { value = "all", label = "Hide excluded messages entirely" }, { value = "flag", label = "Flag excluded messages" }] sources = ["man"] [[commands.subcommand.task]] id = "search" label = "Search threads" fields = ["terms", "sort", "limit"] required = ["terms"] [[commands.subcommand.task]] id = "message_ids" label = "List message IDs" fields = ["terms", "limit"] required = ["terms"] set = { output = ["messages"] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["terms", "output", "sort", "limit"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["format", "offset", "exclude"]