diff options
author | Marvin Borner | 2019-03-05 01:09:01 +0100 |
---|---|---|
committer | Marvin Borner | 2019-03-05 01:09:01 +0100 |
commit | 55457187d18221e76bd12f0fb2cfab65c49b92fb (patch) | |
tree | 8db042d2d80710d54100c2709ad4332153ac848a /.oh-my-zsh/plugins/golang |
Initial commit
Diffstat (limited to '.oh-my-zsh/plugins/golang')
-rw-r--r-- | .oh-my-zsh/plugins/golang/README.md | 29 | ||||
-rw-r--r-- | .oh-my-zsh/plugins/golang/golang.plugin.zsh | 197 | ||||
-rw-r--r-- | .oh-my-zsh/plugins/golang/templates/package.txt | 29 | ||||
-rw-r--r-- | .oh-my-zsh/plugins/golang/templates/search.txt | 0 |
4 files changed, 255 insertions, 0 deletions
diff --git a/.oh-my-zsh/plugins/golang/README.md b/.oh-my-zsh/plugins/golang/README.md new file mode 100644 index 0000000..72845b2 --- /dev/null +++ b/.oh-my-zsh/plugins/golang/README.md @@ -0,0 +1,29 @@ +# Golang plugin + +This plugin adds completion for the [Go Programming Language](https://golang.org/), +as well as some aliases for common Golang commands. + +To use it, add `golang` to the plugins array in your zshrc file: + +```zsh +plugins=(... golang) +``` + +## Aliases + +| Alias | Command | Description | +| ------- | ----------------------- | ------------------------------------------------------------- | +| gob | `go build` | Build your code | +| goc | `go clean` | Removes object files from package source directories | +| god | `go doc` | Prints documentation comments | +| gof | `go fmt` | Gofmt formats (aligns and indents) Go programs. | +| gofa | `go fmt ./...` | Run go fmt for all packages in current directory, recursively | +| gog | `go get` | Downloads packages and then installs them to $GOPATH | +| goi | `go install` | Compiles and installs packages to $GOPATH | +| gol | `go list` | Lists Go packages | +| gop | `cd $GOPATH` | Takes you to $GOPATH | +| gopb | `cd $GOPATH/bin` | Takes you to $GOPATH/bin | +| gops | `cd $GOPATH/src` | Takes you to $GOPATH/src | +| gor | `go run` | Compiles and runs your code | +| got | `go test` | Runs tests | +| gov | `go vet` | Vet examines Go source code and reports suspicious constructs | diff --git a/.oh-my-zsh/plugins/golang/golang.plugin.zsh b/.oh-my-zsh/plugins/golang/golang.plugin.zsh new file mode 100644 index 0000000..8284ab8 --- /dev/null +++ b/.oh-my-zsh/plugins/golang/golang.plugin.zsh @@ -0,0 +1,197 @@ +# install in /etc/zsh/zshrc or your personal .zshrc + +# gc +prefixes=(5 6 8) +for p in $prefixes; do + compctl -g "*.${p}" ${p}l + compctl -g "*.go" ${p}g +done + +# standard go tools +compctl -g "*.go" gofmt + +# gccgo +compctl -g "*.go" gccgo + +# go tool +__go_tool_complete() { + typeset -a commands build_flags + commands+=( + 'build[compile packages and dependencies]' + 'clean[remove object files]' + 'doc[run godoc on package sources]' + 'env[print Go environment information]' + 'fix[run go tool fix on packages]' + 'fmt[run gofmt on package sources]' + 'generate[generate Go files by processing source]' + 'get[download and install packages and dependencies]' + 'help[display help]' + 'install[compile and install packages and dependencies]' + 'list[list packages]' + 'run[compile and run Go program]' + 'test[test packages]' + 'tool[run specified go tool]' + 'version[print Go version]' + 'vet[run go tool vet on packages]' + ) + if (( CURRENT == 2 )); then + # explain go commands + _values 'go tool commands' ${commands[@]} + return + fi + build_flags=( + '-a[force reinstallation of packages that are already up-to-date]' + '-n[print the commands but do not run them]' + '-p[number of parallel builds]:number' + '-race[enable data race detection]' + '-x[print the commands]' + '-work[print temporary directory name and keep it]' + '-ccflags[flags for 5c/6c/8c]:flags' + '-gcflags[flags for 5g/6g/8g]:flags' + '-ldflags[flags for 5l/6l/8l]:flags' + '-gccgoflags[flags for gccgo]:flags' + '-compiler[name of compiler to use]:name' + '-installsuffix[suffix to add to package directory]:suffix' + '-tags[list of build tags to consider satisfied]:tags' + ) + __go_packages() { + local gopaths + declare -a gopaths + gopaths=("${(s/:/)$(go env GOPATH)}") + gopaths+=("$(go env GOROOT)") + for p in $gopaths; do + _path_files -W "$p/src" -/ + done + } + __go_identifiers() { + compadd $(godoc -templates $ZSH/plugins/golang/templates ${words[-2]} 2> /dev/null) + } + case ${words[2]} in + doc) + _arguments -s -w \ + "-c[symbol matching honors case (paths not affected)]" \ + "-cmd[show symbols with package docs even if package is a command]" \ + "-u[show unexported symbols as well as exported]" \ + "2:importpaths:__go_packages" \ + ":next identifiers:__go_identifiers" + ;; + clean) + _arguments -s -w \ + "-i[remove the corresponding installed archive or binary (what 'go install' would create)]" \ + "-n[print the remove commands it would execute, but not run them]" \ + "-r[apply recursively to all the dependencies of the packages named by the import paths]" \ + "-x[print remove commands as it executes them]" \ + "*:importpaths:__go_packages" + ;; + fix|fmt|list|vet) + _alternative ':importpaths:__go_packages' ':files:_path_files -g "*.go"' + ;; + install) + _arguments -s -w : ${build_flags[@]} \ + "-v[show package names]" \ + '*:importpaths:__go_packages' + ;; + get) + _arguments -s -w : \ + ${build_flags[@]} + ;; + build) + _arguments -s -w : \ + ${build_flags[@]} \ + "-v[show package names]" \ + "-o[output file]:file:_files" \ + "*:args:{ _alternative ':importpaths:__go_packages' ':files:_path_files -g \"*.go\"' }" + ;; + test) + _arguments -s -w : \ + ${build_flags[@]} \ + "-c[do not run, compile the test binary]" \ + "-i[do not run, install dependencies]" \ + "-v[print test output]" \ + "-x[print the commands]" \ + "-short[use short mode]" \ + "-parallel[number of parallel tests]:number" \ + "-cpu[values of GOMAXPROCS to use]:number list" \ + "-run[run tests and examples matching regexp]:regexp" \ + "-bench[run benchmarks matching regexp]:regexp" \ + "-benchmem[print memory allocation stats]" \ + "-benchtime[run each benchmark until taking this long]:duration" \ + "-blockprofile[write goroutine blocking profile to file]:file" \ + "-blockprofilerate[set sampling rate of goroutine blocking profile]:number" \ + "-timeout[kill test after that duration]:duration" \ + "-cpuprofile[write CPU profile to file]:file:_files" \ + "-memprofile[write heap profile to file]:file:_files" \ + "-memprofilerate[set heap profiling rate]:number" \ + "*:args:{ _alternative ':importpaths:__go_packages' ':files:_path_files -g \"*.go\"' }" + ;; + help) + _values "${commands[@]}" \ + 'environment[show Go environment variables available]' \ + 'gopath[GOPATH environment variable]' \ + 'packages[description of package lists]' \ + 'remote[remote import path syntax]' \ + 'testflag[description of testing flags]' \ + 'testfunc[description of testing functions]' + ;; + run) + _arguments -s -w : \ + ${build_flags[@]} \ + '*:file:_files -g "*.go"' + ;; + tool) + if (( CURRENT == 3 )); then + _values "go tool" $(go tool) + return + fi + case ${words[3]} in + [568]g) + _arguments -s -w : \ + '-I[search for packages in DIR]:includes:_path_files -/' \ + '-L[show full path in file:line prints]' \ + '-S[print the assembly language]' \ + '-V[print the compiler version]' \ + '-e[no limit on number of errors printed]' \ + '-h[panic on an error]' \ + '-l[disable inlining]' \ + '-m[print optimization decisions]' \ + '-o[file specify output file]:file' \ + '-p[assumed import path for this code]:importpath' \ + '-u[disable package unsafe]' \ + "*:file:_files -g '*.go'" + ;; + [568]l) + local O=${words[3]%l} + _arguments -s -w : \ + '-o[file specify output file]:file' \ + '-L[search for packages in DIR]:includes:_path_files -/' \ + "*:file:_files -g '*.[ao$O]'" + ;; + dist) + _values "dist tool" banner bootstrap clean env install version + ;; + *) + # use files by default + _files + ;; + esac + ;; + esac +} + +compdef __go_tool_complete go + +# aliases: go<~> +alias gob='go build' +alias goc='go clean' +alias god='go doc' +alias gof='go fmt' +alias gofa='go fmt ./...' +alias gog='go get' +alias goi='go install' +alias gol='go list' +alias gop='cd $GOPATH' +alias gopb='cd $GOPATH/bin' +alias gops='cd $GOPATH/src' +alias gor='go run' +alias got='go test' +alias gov='go vet' diff --git a/.oh-my-zsh/plugins/golang/templates/package.txt b/.oh-my-zsh/plugins/golang/templates/package.txt new file mode 100644 index 0000000..2b75cce --- /dev/null +++ b/.oh-my-zsh/plugins/golang/templates/package.txt @@ -0,0 +1,29 @@ +{{with .PDoc}}{{/* + +Constants +--------------------------------------- + +*/}}{{with .Consts}}{{range .}}{{range .Names}}{{.}} {{end}}{{end}}{{end}}{{/* + +Variables +--------------------------------------- + +*/}}{{with .Vars}}{{range .}}{{range .Names}}{{.}} {{end}}{{end}}{{end}}{{/* + +Functions +--------------------------------------- + +*/}}{{with .Funcs}}{{range .}}{{ .Name }} {{end}}{{end}}{{/* + +Types +--------------------------------------- + +*/}}{{with .Types}}{{range .}}{{ $TypeName := .Name }}{{ $TypeName }} {{/* + +*/}}{{range .Methods}}{{ $TypeName }}.{{.Name}} {{end}}{{/* + +*/}}{{range .Funcs}}{{.Name}} {{end}}{{/* + +*/}}{{range .Consts}}{{range .Names}}{{.}} {{end}}{{end}}{{/* + +*/}}{{range .Vars}}{{range .Names}}{{.}} {{end}}{{end}}{{end}}{{end}}{{end}} diff --git a/.oh-my-zsh/plugins/golang/templates/search.txt b/.oh-my-zsh/plugins/golang/templates/search.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.oh-my-zsh/plugins/golang/templates/search.txt |