zsh and fish completions
optparse-applicative-0.14.0.0 adds support for these, so have the Makefile install their scripts when built with it. CmdLine/GitAnnex/Options.hs now uses action "file" in cmdParams, which affects the bash and zsh completions, letting them complete filenames for subcommands that use that. This is not needed for bash, since bash-completion.bash enables -o bashdefault, which lets it complete filenames too. But it does not seem to break the bash completions. It is needed for zsh; the zsh completion otherwise does not complete filenames. The fish completion will always complete filenames no matter what. Messy. This commit was sponsored by Denis Dzyubenko on Patreon.
This commit is contained in:
parent
c6f087829e
commit
5cf7216774
4 changed files with 24 additions and 3 deletions
|
@ -25,6 +25,8 @@ git-annex (6.20170520) UNRELEASED; urgency=medium
|
|||
* assistant: Merge changes from refs/remotes/foo/master into master.
|
||||
Previously, only sync branches were merged. This makes regular git push
|
||||
into a repository watched by the assistant auto-merge.
|
||||
* Makefile: Install completions for the fish and zsh shells
|
||||
when git-annex is built with optparse-applicative-0.14.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Wed, 24 May 2017 14:03:40 -0400
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@ gitAnnexGlobalOptions = commonGlobalOptions ++
|
|||
cmdParams :: CmdParamsDesc -> Parser CmdParams
|
||||
cmdParams paramdesc = many $ argument str
|
||||
( metavar paramdesc
|
||||
<> action "file"
|
||||
)
|
||||
|
||||
parseAutoOption :: Parser Bool
|
||||
|
|
12
Makefile
12
Makefile
|
@ -62,10 +62,16 @@ install-bins: build
|
|||
ln -sf git-annex $(DESTDIR)$(PREFIX)/bin/git-annex-shell
|
||||
ln -sf git-annex $(DESTDIR)$(PREFIX)/bin/git-remote-tor-annex
|
||||
|
||||
install-misc: Build/InstallDesktopFile
|
||||
install-misc: build Build/InstallDesktopFile
|
||||
./Build/InstallDesktopFile $(PREFIX)/bin/git-annex || true
|
||||
install -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions
|
||||
install -m 0644 bash-completion.bash $(DESTDIR)$(PREFIX)/share/bash-completion/completions/git-annex
|
||||
install -d $(DESTDIR)$(PREFIX)/$(SHAREDIR)/bash-completion/completions
|
||||
install -m 0644 bash-completion.bash $(DESTDIR)$(PREFIX)/$(SHAREDIR)/bash-completion/completions/git-annex
|
||||
install -d $(DESTDIR)$(PREFIX)/$(SHAREDIR)/zsh/vendor-completions
|
||||
@./git-annex --zsh-completion-script git-annex > $(DESTDIR)$(PREFIX)/$(SHAREDIR)/zsh/vendor-completions/_git-annex || \
|
||||
echo "** zsh completions not installed; built with too old version of optparse-applicative"
|
||||
install -d $(DESTDIR)$(PREFIX)/$(SHAREDIR)/fish/completions
|
||||
@./git-annex --fish-completion-script git-annex > $(DESTDIR)$(PREFIX)/$(SHAREDIR)/fish/completions/git-annex.fish || \
|
||||
echo "** fish completions not installed; built with too old version of optparse-applicative"
|
||||
|
||||
install: install-bins install-docs install-misc
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 1"""
|
||||
date="2017-06-09T15:34:59Z"
|
||||
content="""
|
||||
When git-annex is built with optparse-applicative version 0.14.0.0,
|
||||
it can generate its own zsh completion file. The Makefile installs that,
|
||||
and it seems to work well.
|
||||
|
||||
So, I think that the hand-built zsh completions won't need to be maintained
|
||||
much longer!
|
||||
"""]]
|
Loading…
Add table
Reference in a new issue