Add README
This commit is contained in:
		
							parent
							
								
									78d08455c0
								
							
						
					
					
						commit
						872484729e
					
				
							
								
								
									
										56
									
								
								shell-completion/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								shell-completion/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | ||||
| Shell completion for CLI | ||||
| ======================== | ||||
| 
 | ||||
| This code generates shell completion scripts for hledger's command line | ||||
| interface. | ||||
| Shell completion is usually triggered by pressing the tab key once or twice | ||||
| after typing the command `hledger `. | ||||
| (The exact behavior may differ in shells other than Bash.) | ||||
| 
 | ||||
| Currently, only Bash is supported but Zsh or Fish can be added. | ||||
| 
 | ||||
| [Demonstration video](https://asciinema.org/a/PdV2PzIU9oDQg1K5FjAX9n3vL) | ||||
| 
 | ||||
| The completions can handle hledger's CLI: | ||||
| 
 | ||||
| - commands and generic options | ||||
| - command-specific options | ||||
| - account names (but not yet for files named by --file) | ||||
| - filenames for options that take a filename as argument | ||||
| 
 | ||||
| Installation | ||||
| ------------ | ||||
| 
 | ||||
| First, generate the completion script for Bash: | ||||
| 
 | ||||
| ``` | ||||
| # change into this folder: | ||||
| cd shell-completion/ | ||||
| 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 this two commands: | ||||
| 
 | ||||
| ``` | ||||
| cp hledger-completion.bash ~/.hledger-completion.bash | ||||
| echo 'source ~/.hledger-completion.bash' >> ~/.bashrc | ||||
| ``` | ||||
| 
 | ||||
| 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. | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user