This commit is contained in:
Jakob Schöttl 2019-01-19 21:46:07 +01:00 committed by Simon Michael
parent 3f407a326d
commit 903fe734e3
2 changed files with 53 additions and 16 deletions

View File

@ -15,6 +15,10 @@ commands.txt:
commands-list.txt: commands.txt
paste -sd, $^ | tr -d '\n' > $@
#query-filters.txt:
# The query filters are hard to extract!
# hledger help --cat hledger | sed -n '/^QUERIES/,/^[A-Z]/p'
command-options: commands.txt
parallel -j8 'hledger {} -h | ./output-options.sh > options-{}.txt' < commands.txt

View File

@ -18,10 +18,49 @@ The completions can handle hledger's CLI:
- account names from journal files (but not yet for files named by --file)
- filenames for options that take a filename as argument
Installation
------------
Installation for end users
--------------------------
First, generate the completion script for Bash:
Completions are currently only implemented for the Bash shell.
Please check first if the completions for hledger are already installed on your
distribution. Refer to the last paragraph of this section for how to test that.
To install the completions manually, follow this steps:
- Download or copy the file `shell-completion/hledger-completion.bash` and save
it as `~/.hledger-completion.bash`.
- Add the command `'source ~/.hledger-completion.bash'` this to the end of your
`~/.bashrc` file.
- Then, you have to start a new Bash, e.g. by typing `bash` on the current
shell.
Example installation script:
```
cp hledger-completion.bash ~/.hledger-completion.bash
echo 'source ~/.hledger-completion.bash' >> ~/.bashrc
```
Now, try it by typing `hledger` (with a space after the command) and press the
tab key twice. You should see a list of appropriate completions for hledger.
Then you can type a part of one of the suggestions and press tab again to
complete it.
Background
----------
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
account name completion. I propose that the Makefile is not run at every built
but rather manually when the CLI changes.
Information for developers
--------------------------
Generate the completion script for Bash:
```
# change into this folder:
@ -32,11 +71,13 @@ make
Hint: GNU make, GNU m4, and GNU parallel must be installed to call `make`.
The first two usually are.
Then, the generated completion script must be installed. TBD.
For now, you can use these two commands:
The generated completion script must be installed. The package maintainer for
your distribution should be responsible for this.
For now, or to live-test the script, you can use these two commands:
```
cp hledger-completion.bash ~/.hledger-completion.bash
ln -s hledger-completion.bash ~/.hledger-completion.bash
echo 'source ~/.hledger-completion.bash' >> ~/.bashrc
```
@ -44,16 +85,8 @@ After that, you have to start a new Bash, e.g. by typing `bash` on the current
shell.
Now, try it by typing `hledger` (with a space after the command) and press the
tab key twice. Then you can type a part of one of the suggestions and press tab
again to complete it.
Background
----------
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
account name completion. I propose that the Makefile is not run at every built
but rather manually when the CLI changes.
tab key twice. You know how completions work if not, see above in the
Installation section.
Completion scripts for other shells (e.g. Fish or Zsh)
------------------------------------------------------