- Notifications
You must be signed in to change notification settings - Fork 138
Description
It would be helpful if bash-language-server could utilize bash-completion to fetch the available switches and arguments for certain commands. I'm not familiar with Typescript myself, unfortunately, so I cannot determine the feasibility of implementing such a feature at this time.
Subcommand and switch completion
For example, if git and its associated Bash completions are installed on the machine, then typing the following into a buffer:
git <ctrl+space> would yield the following completions from the language server:
add am archive bisect etc... Similarly, typing the following:
git --<ctrl+space> would yield the following completions:
--bare --exec-path --exec-path= --git-dir= --help etc... Optionally, the server could attempt to fetch results for both git , git -, and git -- (in that order) and show completions for all three possibilities such that they can be easily filtered and selected at a glance. I'm not sure about the performance implications of this behavior, however.
Argument completion
A similar process could allow for argument completion, if the completion function provides it. For example, if openssh and its associated Bash completions are installed, then typing the following:
ssh <ctrl+space> would possibly yield the following completions:
127.0.0.1 12.123.123.123 ::1 bar baz.com foo.local github.com localhost Future work
If a manpage exists on the system for a specific command (the same one manpage currently used for documentation suggestions in bash-language-server), we could potentially search the manpage for the subcommands/switches provided to us by bash-completion, such that entering the following:
git --h<ctrl+space> would allow the user to select --help from the list, and hovering over the --help would parse the git manpage for a section titled --help and display the following:
--help Prints the synopsis and a list of the most commonly used commands. If the option --all or -a is given then all available commands are printed. If a Git command is named this option will bring up the manual page for that command. Other options are available to control how the manual page is displayed. See git-help(1) for more information, because git --help ... is converted internally into git help .... This could be done using explainshell for help, as also suggested in #107.