diff options
| -rw-r--r-- | Makefile | 16 | ||||
| -rw-r--r-- | shell.go | 43 |
2 files changed, 54 insertions, 5 deletions
@@ -1,7 +1,8 @@ -# git remote add github [email protected]:wit-go/gui-debugger.git +all: auto.pb.go goimports vet + @echo This GO code passes the compile checks -all: generate goimports vet - @echo common init code for common packages +auto.pb.go: auto.proto + make generate generate: clean go mod init @@ -22,5 +23,10 @@ clean: -rm -f go.* go-mod-clean purge -auto.pb.go: auto.proto - autogenpb --proto auto.proto +# fixes your numbers if you move things around +# THIS TOTALLY BREAKS THE POINT OF PROTOBUF +# To work around that breaking, you must change the version +# also, all the wrapping code must support this. which it doesn't +proto-renumber: clean + autogenpb --renumber --proto auto.proto + make goimports vet @@ -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 |
