summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile16
-rw-r--r--shell.go43
2 files changed, 54 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index f27bc29..2f87593 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/shell.go b/shell.go
index 212c935..2602513 100644
--- a/shell.go
+++ b/shell.go
@@ -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