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
Ohmyzsh
Commits
fd50759e
Commit
fd50759e
authored
Apr 23, 2013
by
Robby Russell
Browse files
Merge pull request #1254 from systemfreund/master
Added completion plugin for "Go" compiler
parents
ffc6ae93
9ee4b9c8
Changes
1
Hide whitespace changes
Inline
Side-by-side
plugins/go/go.plugin.zsh
0 → 100644
View file @
fd50759e
# 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]'
'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
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