Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
7c50867d
Commit
7c50867d
authored
Mar 20, 2013
by
Bobby DeSimone
Browse files
Added golang completion support from golang.org
parent
0ab0e67e
Changes
1
Show whitespace changes
Inline
Side-by-side
plugins/golang/golang.plugin.zsh
0 → 100644
View file @
7c50867d
# From : http://golang.org/misc/zsh/go?m=text
# 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]'
'fix[run go tool fix on packages]'
'fmt[run gofmt on package sources]'
'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"
'-x[print the commands]'
"-work[print temporary directory name and keep it]"
"-gcflags[flags for 5g/6g/8g]:flags"
"-ldflags[flags for 5l/6l/8l]:flags"
"-gccgoflags[flags for gccgo]:flags"
)
__go_list
()
{
local
expl importpaths
declare
-a
importpaths
importpaths
=(
$(
go list
${
words
[
$CURRENT
]
}
... 2>/dev/null
)
)
_wanted importpaths expl
'import paths'
compadd
"
$@
"
-
"
${
importpaths
[@]
}
"
}
case
${
words
[2]
}
in
clean|doc
)
_arguments
-s
-w
:
'*:importpaths:__go_list'
;;
fix|fmt|list|vet
)
_alternative
':importpaths:__go_list'
':files:_path_files -g "*.go"'
;;
install
)
_arguments
-s
-w
:
${
build_flags
[@]
}
\
"-v[show package names]"
\
'*:importpaths:__go_list'
;;
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_list' ':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"
\
"-benchtime[run each benchmark during n seconds]:duration"
\
"-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_list' ':files:_path_files -g
\"
*.go
\"
' }"
;;
help
)
_values
"
${
commands
[@]
}
"
\
'gopath[GOPATH environment variable]'
\
'importpath[description of import paths]'
\
'remote[remote import path syntax]'
\
'testflag[description of testing flags]'
\
'testfunc[description of testing functions]'
;;
run
)
_arguments
-s
-w
:
\
${
build_flags
[@]
}
\
'*:file:_path_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
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment