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