[PATCH 2/2] completion: generate notmuch-completion.zsh using doc/conf.py
authorDavid Bremner <david@tethera.net>
Sat, 3 Jan 2015 12:58:20 +0000 (13:58 +0100)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:47:14 +0000 (14:47 -0700)
d4/f65416ce94ae8f946e4f18a2b56856e3b541eb [new file with mode: 0644]

diff --git a/d4/f65416ce94ae8f946e4f18a2b56856e3b541eb b/d4/f65416ce94ae8f946e4f18a2b56856e3b541eb
new file mode 100644 (file)
index 0000000..72ca959
--- /dev/null
@@ -0,0 +1,310 @@
+Return-Path: <bremner@tesseract.cs.unb.ca>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id D99A5431FC0\r
+       for <notmuch@notmuchmail.org>; Sat,  3 Jan 2015 04:59:03 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
+       autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id ntckZBX7tsXi for <notmuch@notmuchmail.org>;\r
+       Sat,  3 Jan 2015 04:59:01 -0800 (PST)\r
+Received: from yantan.tethera.net (yantan.tethera.net [199.188.72.155])\r
+       (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 2F9FC431FDB\r
+       for <notmuch@notmuchmail.org>; Sat,  3 Jan 2015 04:59:01 -0800 (PST)\r
+Received: from remotemail by yantan.tethera.net with local (Exim 4.80)\r
+       (envelope-from <bremner@tesseract.cs.unb.ca>)\r
+       id 1Y7OIG-0006EZ-6l; Sat, 03 Jan 2015 08:59:00 -0400\r
+Received: (nullmailer pid 29794 invoked by uid 1000); Sat, 03 Jan 2015\r
+       12:58:54 -0000\r
+From: David Bremner <david@tethera.net>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH 2/2] completion: generate notmuch-completion.zsh using\r
+       doc/conf.py\r
+Date: Sat,  3 Jan 2015 13:58:20 +0100\r
+Message-Id: <1420289900-29717-2-git-send-email-david@tethera.net>\r
+X-Mailer: git-send-email 2.1.3\r
+In-Reply-To: <1420289900-29717-1-git-send-email-david@tethera.net>\r
+References: <1420289900-29717-1-git-send-email-david@tethera.net>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=UTF-8\r
+Content-Transfer-Encoding: 8bit\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sat, 03 Jan 2015 12:59:04 -0000\r
+\r
+I noticed that the (out of date) list of subcommands was simply\r
+repeating the summary lines from the manpage. Since those summary\r
+lines are already kept in machine readable form in doc/conf.py,\r
+it's easy to compute that part of the completion file.\r
+---\r
+ completion/Makefile.local         |  12 ++++-\r
+ completion/gen-zsh-completion.py  | 108 ++++++++++++++++++++++++++++++++++++++\r
+ completion/notmuch-completion.zsh |  96 ---------------------------------\r
+ 3 files changed, 119 insertions(+), 97 deletions(-)\r
+ create mode 100644 completion/gen-zsh-completion.py\r
+ delete mode 100644 completion/notmuch-completion.zsh\r
+\r
+diff --git a/completion/Makefile.local b/completion/Makefile.local\r
+index dfc1271..616afa4 100644\r
+--- a/completion/Makefile.local\r
++++ b/completion/Makefile.local\r
+@@ -6,7 +6,15 @@ dir := completion\r
+ # directly in any shell commands. Instead we save its value in other,\r
+ # private variables that we can use in the commands.\r
+ bash_script := $(srcdir)/$(dir)/notmuch-completion.bash\r
+-zsh_script := $(srcdir)/$(dir)/notmuch-completion.zsh\r
++gen_zsh_script := $(srcdir)/$(dir)/gen-zsh-completion.py\r
++conf_file := $(srcdir)/$(dir)/../doc/conf.py\r
++\r
++$(dir)/notmuch-completion.zsh: $(dir)/gen-zsh-completion.py\r
++      $(PYTHON) $(gen_zsh_script)  $(conf_file) > $@\r
++\r
++ifeq ($(WITH_ZSH),1)\r
++all: $(dir)/notmuch-completion.zsh\r
++endif\r
\r
+ install: install-$(dir)\r
\r
+@@ -20,3 +28,5 @@ ifeq ($(WITH_ZSH),1)\r
+       mkdir -p "$(DESTDIR)$(zsh_completion_dir)"\r
+       install -m0644 $(zsh_script) "$(DESTDIR)$(zsh_completion_dir)/_notmuch"\r
+ endif\r
++\r
++CLEAN += $(dir)/notmuch-completion.zsh\r
+diff --git a/completion/gen-zsh-completion.py b/completion/gen-zsh-completion.py\r
+new file mode 100644\r
+index 0000000..26cd13e\r
+--- /dev/null\r
++++ b/completion/gen-zsh-completion.py\r
+@@ -0,0 +1,108 @@\r
++# Copyright 2014 David Bremner <david@tethera.net>\r
++#\r
++# This program is free software: you can redistribute it and/or modify\r
++# it under the terms of the GNU General Public License as published by\r
++# the Free Software Foundation, either version 3 of the License, or\r
++# (at your option) any later version.\r
++#\r
++# This program is distributed in the hope that it will be useful,\r
++# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
++# GNU General Public License for more details.\r
++#\r
++# You should have received a copy of the GNU General Public License\r
++# along with this program.  If not, see http://www.gnu.org/licenses/ .\r
++#\r
++# This script is based on notmuch-completion.zsh, by\r
++#               Ingmar Vanhassel <ingmar@exherbo.org>\r
++\r
++from sys import argv\r
++\r
++conffile = argv[1]\r
++\r
++with open(conffile) as cf:\r
++    exec(cf.read())\r
++\r
++print(r'''#compdef notmuch\r
++\r
++# This file was generated from gen-zsh-completion.py in the notmuch source.\r
++# You should probably not edit it directly\r
++_notmuch_commands()\r
++{\r
++  local -a notmuch_commands\r
++  notmuch_commands=(\r
++    'help:display documentation for a subcommand'\r
++    'setup:interactively configure notmuch'\r
++''')\r
++\r
++for command in man_pages:\r
++    parts=command[1].split('-')\r
++    if len(parts) == 1 or command[4] != 1:\r
++        continue\r
++    print ('    \'{0:s}:{1:s}\''.format(parts[1],command[2]))\r
++\r
++print (\r
++r'''  )\r
++\r
++  _describe -t command 'command' notmuch_commands\r
++}\r
++\r
++_notmuch_dump()\r
++{\r
++  _files\r
++}\r
++\r
++_notmuch_help_topics()\r
++{\r
++  local -a notmuch_help_topics\r
++  notmuch_help_topics=(\r
++    'search-terms:show common search-terms syntax'\r
++  )\r
++  _describe -t notmuch-help-topics 'topic' notmuch_help_topics\r
++}\r
++\r
++_notmuch_help()\r
++{\r
++  _alternative \\r
++    _notmuch_commands \\r
++    _notmuch_help_topics\r
++}\r
++\r
++_notmuch_restore()\r
++{\r
++  _files\r
++}\r
++\r
++_notmuch_search()\r
++{\r
++  _arguments -s : \\r
++    '--max-threads=[display only the first x threads from the search results]:number of threads to show: ' \\r
++    '--first=[omit the first x threads from the search results]:number of threads to omit: ' \\r
++    '--sort=[sort results]:sorting:((newest-first\:"reverse chronological order" oldest-first\:"chronological order"))' \\r
++    '--output=[select what to output]:output:((summary threads messages files tags))'\r
++}\r
++\r
++_notmuch_address()\r
++{\r
++  _arguments -s : \\r
++    '--sort=[sort results]:sorting:((newest-first\:"reverse chronological order" oldest-first\:"chronological order"))' \\r
++    '--output=[select what to output]:output:((sender recipients count))'\r
++}\r
++\r
++_notmuch()\r
++{\r
++  if (( CURRENT > 2 )) ; then\r
++    local cmd=${words[2]}\r
++    curcontext="${curcontext%:*:*}:notmuch-$cmd"\r
++    (( CURRENT-- ))\r
++    shift words\r
++    _call_function ret _notmuch_$cmd\r
++    return ret\r
++  else\r
++    _notmuch_commands\r
++  fi\r
++}\r
++\r
++_notmuch "$@"\r
++\r
++''')\r
+diff --git a/completion/notmuch-completion.zsh b/completion/notmuch-completion.zsh\r
+deleted file mode 100644\r
+index 46b33d1..0000000\r
+--- a/completion/notmuch-completion.zsh\r
++++ /dev/null\r
+@@ -1,96 +0,0 @@\r
+-#compdef notmuch\r
+-\r
+-# ZSH completion for `notmuch`\r
+-# Copyright © 2009 Ingmar Vanhassel <ingmar@exherbo.org>\r
+-#\r
+-# This program is free software: you can redistribute it and/or modify\r
+-# it under the terms of the GNU General Public License as published by\r
+-# the Free Software Foundation, either version 3 of the License, or\r
+-# (at your option) any later version.\r
+-#\r
+-# This program is distributed in the hope that it will be useful,\r
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+-# GNU General Public License for more details.\r
+-#\r
+-# You should have received a copy of the GNU General Public License\r
+-# along with this program.  If not, see http://www.gnu.org/licenses/ .\r
+-\r
+-_notmuch_commands()\r
+-{\r
+-  local -a notmuch_commands\r
+-  notmuch_commands=(\r
+-    'setup:interactively set up notmuch for first use'\r
+-    'new:find and import any new message to the database'\r
+-    'search:search for messages matching the search terms, display matching threads as results'\r
+-    'address:get addresses from messages matching the given search terms'\r
+-    'reply:constructs a reply template for a set of messages'\r
+-    'show:show all messages matching the search terms'\r
+-    'tag:add or remove tags for all messages matching the search terms'\r
+-    'dump:creates a plain-text dump of the tags of each message'\r
+-    'restore:restores the tags from the given file'\r
+-    'help:show details on a command'\r
+-  )\r
+-\r
+-  _describe -t command 'command' notmuch_commands\r
+-}\r
+-\r
+-_notmuch_dump()\r
+-{\r
+-  _files\r
+-}\r
+-\r
+-_notmuch_help_topics()\r
+-{\r
+-  local -a notmuch_help_topics\r
+-  notmuch_help_topics=(\r
+-    'search-terms:show common search-terms syntax'\r
+-  )\r
+-  _describe -t notmuch-help-topics 'topic' notmuch_help_topics\r
+-}\r
+-\r
+-_notmuch_help()\r
+-{\r
+-  _alternative \\r
+-    _notmuch_commands \\r
+-    _notmuch_help_topics\r
+-}\r
+-\r
+-_notmuch_restore()\r
+-{\r
+-  _files\r
+-}\r
+-\r
+-_notmuch_search()\r
+-{\r
+-  _arguments -s : \\r
+-    '--max-threads=[display only the first x threads from the search results]:number of threads to show: ' \\r
+-    '--first=[omit the first x threads from the search results]:number of threads to omit: ' \\r
+-    '--sort=[sort results]:sorting:((newest-first\:"reverse chronological order" oldest-first\:"chronological order"))' \\r
+-    '--output=[select what to output]:output:((summary threads messages files tags))'\r
+-}\r
+-\r
+-_notmuch_address()\r
+-{\r
+-  _arguments -s : \\r
+-    '--sort=[sort results]:sorting:((newest-first\:"reverse chronological order" oldest-first\:"chronological order"))' \\r
+-    '--output=[select what to output]:output:((sender recipients count))'\r
+-}\r
+-\r
+-_notmuch()\r
+-{\r
+-  if (( CURRENT > 2 )) ; then\r
+-    local cmd=${words[2]}\r
+-    curcontext="${curcontext%:*:*}:notmuch-$cmd"\r
+-    (( CURRENT-- ))\r
+-    shift words\r
+-    _call_function ret _notmuch_$cmd\r
+-    return ret\r
+-  else\r
+-    _notmuch_commands\r
+-  fi\r
+-}\r
+-\r
+-_notmuch "$@"\r
+-\r
+-# vim: set sw=2 sts=2 ts=2 et ft=zsh :\r
+-- \r
+2.1.3\r
+\r