diff options
| author | Jeff Carr <[email protected]> | 2025-10-09 01:03:37 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-09 01:03:37 -0500 |
| commit | fce9170f75d9bcc10699ff738948591bf637f28b (patch) | |
| tree | 55a9a5aa91cf7456ad98164661a869b0bb90c9e4 /shell.go | |
| parent | 6f2e0bddfb7a0c2c4dd913a776137cddb761becd (diff) | |
zsh stuffv0.0.28
Diffstat (limited to 'shell.go')
| -rw-r--r-- | shell.go | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -4,8 +4,16 @@ package prep import ( "fmt" + "io/ioutil" + "os" + "strings" ) +func makeCompletionText(argname string) string { + sh := getParentProcessName() + return fmt.Sprintf("# shell might be %s", sh) +} + func makeBashCompletionText(argname string) string { var out string @@ -74,6 +82,41 @@ func makeBashCompletionText2(argname string) string { return out } +func getParentProcessName() string { + ppid := os.Getppid() + // On Linux, the command name is in /proc/<pid>/comm + commPath := fmt.Sprintf("/proc/%d/comm", ppid) + content, err := ioutil.ReadFile(commPath) + if err != nil { + return "unknown" + } + // The file content has a trailing newline, so trim it. + return strings.TrimSpace(string(content)) +} + +/* + + This script will be placed in a directory in your $fpath (e.g., ~/.zsh/completions/_my-app). + +#compdef my-app + +# This function will be called by Zsh to get the completions. +_my_app_completions() { + local -a suggestions + + # Here is the key part: + # We execute our Go program with the hidden flag and capture its output. + 9 # The `(f)` flag splits the output by line into an array. + 10 suggestions=( ${(f)"$(my-app --_generate_completions)"} ) + 11 + 12 # Pass the suggestions to the Zsh completion engine. + 13 _describe 'command' suggestions + 14 } + 15 + 16 # Tell Zsh to call our function when completing for my-app + 17 _my_app_completions "$@" +*/ + // zsh: /* #compdef forge |
