Add doc on adding support for other shells

This commit is contained in:
Jakob Schöttl 2019-01-12 12:44:47 +01:00 committed by Simon Michael
parent 84eaf20f9b
commit a2dc1289a5

View File

@ -54,3 +54,28 @@ The Bash completion script is generated (GNU make) by parsing output of `hledger
`hledger -h`, and `hledger <cmd> -h`. The script also uses `hledger accounts` for `hledger -h`, and `hledger <cmd> -h`. The script also uses `hledger accounts` for
account name completion. I propose that the Makefile is not run at every built account name completion. I propose that the Makefile is not run at every built
but rather manually when the CLI changes. but rather manually when the CLI changes.
Completion scripts for other shells (e.g. Fish or Zsh)
------------------------------------------------------
You're welcome to add completion scripts for other shells. It should not be too
hard! All available hledger options and commands are already there (generated by
the Makefile).
The generated text files with options and commands are: `commands.txt`,
`generic-options.txt`, and `options-*.txt` where `*` is the subcommand.
Instructions to add support for another shell:
1. Create e.g. `hledger-completion.fish.m4` as a template file.
2. Add a Make rule to transform it to `hledger-completion.fish`.
3. Use m4 commands to include hledger options and commands into your script
template. See `hledger-completion.bash.m4` as a reference.
4. Use `make` and then `make hledger-completion.fish` to create and test the
completion script.
5. Finally, if everything is working, also add the generated artifact
`hledger-completion.fish` to the repo so that people can use it directly.