Properly detect Zsh shell
There is no need to define custom shell var, when Zsh can be detected by checking SHELL env var.
This commit is contained in:
parent
f89647bd19
commit
1150c2e180
@ -355,7 +355,7 @@ func ExampleApp_Run_bashComplete() {
|
|||||||
func ExampleApp_Run_zshComplete() {
|
func ExampleApp_Run_zshComplete() {
|
||||||
// set args for examples sake
|
// set args for examples sake
|
||||||
os.Args = []string{"greet", "--generate-bash-completion"}
|
os.Args = []string{"greet", "--generate-bash-completion"}
|
||||||
_ = os.Setenv("_CLI_ZSH_AUTOCOMPLETE_HACK", "1")
|
_ = os.Setenv("SHELL", "/usr/bin/zsh")
|
||||||
|
|
||||||
app := NewApp()
|
app := NewApp()
|
||||||
app.Name = "greet"
|
app.Name = "greet"
|
||||||
|
@ -4,9 +4,9 @@ local -a opts
|
|||||||
local cur
|
local cur
|
||||||
cur=${words[-1]}
|
cur=${words[-1]}
|
||||||
if [[ "$cur" == "-"* ]]; then
|
if [[ "$cur" == "-"* ]]; then
|
||||||
opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} ${cur} --generate-bash-completion)}")
|
opts=("${(@f)$(${words[@]:0:#words[@]-1} ${cur} --generate-bash-completion)}")
|
||||||
else
|
else
|
||||||
opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} --generate-bash-completion)}")
|
opts=("${(@f)$(${words[@]:0:#words[@]-1} --generate-bash-completion)}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${opts[1]}" != "" ]]; then
|
if [[ "${opts[1]}" != "" ]]; then
|
||||||
|
@ -1211,14 +1211,13 @@ func main() {
|
|||||||
|
|
||||||
#### ZSH Support
|
#### ZSH Support
|
||||||
Auto-completion for ZSH is also supported using the `autocomplete/zsh_autocomplete`
|
Auto-completion for ZSH is also supported using the `autocomplete/zsh_autocomplete`
|
||||||
file included in this repo. Two environment variables are used, `PROG` and `_CLI_ZSH_AUTOCOMPLETE_HACK`.
|
file included in this repo. One environment variable is used, `PROG`. Set
|
||||||
Set `PROG` to the program name as before, set `_CLI_ZSH_AUTOCOMPLETE_HACK` to `1`, and
|
`PROG` to the program name as before, and then `source path/to/autocomplete/zsh_autocomplete`.
|
||||||
then `source path/to/autocomplete/zsh_autocomplete`. Adding the following lines to your ZSH
|
Adding the following lines to your ZSH configuration file (usually `.zshrc`)
|
||||||
configuration file (usually `.zshrc`) will allow the auto-completion to persist across new shells:
|
will allow the auto-completion to persist across new shells:
|
||||||
|
|
||||||
```
|
```
|
||||||
PROG=<myprogram>
|
PROG=<myprogram>
|
||||||
_CLI_ZSH_AUTOCOMPLETE_HACK=1
|
|
||||||
source path/to/autocomplete/zsh_autocomplete
|
source path/to/autocomplete/zsh_autocomplete
|
||||||
```
|
```
|
||||||
#### ZSH default auto-complete example
|
#### ZSH default auto-complete example
|
||||||
|
2
help.go
2
help.go
@ -102,7 +102,7 @@ func printCommandSuggestions(commands []*Command, writer io.Writer) {
|
|||||||
if command.Hidden {
|
if command.Hidden {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if os.Getenv("_CLI_ZSH_AUTOCOMPLETE_HACK") == "1" {
|
if strings.Contains(os.Getenv("SHELL"), "zsh") {
|
||||||
for _, name := range command.Names() {
|
for _, name := range command.Names() {
|
||||||
_, _ = fmt.Fprintf(writer, "%s:%s\n", name, command.Usage)
|
_, _ = fmt.Fprintf(writer, "%s:%s\n", name, command.Usage)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user