Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
V
vcsh
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Kevin Lyda
vcsh
Commits
b04d8138
Commit
b04d8138
authored
12 years ago
by
Richard Hartmann
Browse files
Options
Downloads
Patches
Plain Diff
Improve zsh completion; work in progress
parent
17cd983a
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
_vcsh
+121
-16
121 additions, 16 deletions
_vcsh
with
121 additions
and
16 deletions
_vcsh
+
121
−
16
View file @
b04d8138
#compdef vcsh
_arguments
\
':subcommand:((
clone\:"clone from repo"
help\:"display help"
delete\:"delete repo"
enter\:"Enter repo; spawn new \$SHELL"
init\:"init & clone from repo"
list\:"list all repos"
list-tracked\:"list all files tracked by vcsh"
list-tracked-by\:"list files tracked by a repo"
rename\:"rename repo"
run\:"run command on repo"
setup\:"set up repo with recommended settings"
write-gitignore\:"write .gitignore.d/foo via git ls-files"
\<REPO\>\:"Run git command directly"
))'
function
__vcsh_repositories
()
{
#TODO list only one repo and stop
local
expl
local
-a
repos
repos
=(
${
(f)
"
$(
command
vcsh list
)
"
}
)
_describe
-t
repos
'repositories'
repos
}
function
__vcsh_not_implemented_yet
()
{
_message
"Subcommand completion '
${
1
#*-
}
': not implemented yet"
}
function
_vcsh-clone
()
{
__vcsh_not_implemented_yet
"
$0
"
#TODO
}
function
_vcsh-delete
()
{
__vcsh_repositories
}
function
_vcsh-enter
()
{
__vcsh_repositories
}
function
_vcsh-help
()
{
_nothing
}
function
_vcsh-init
()
{
_nothing
}
function
_vcsh-list
()
{
_nothing
}
function
_vcsh-list-tracked
()
{
_nothing
}
function
_vcsh-list-tracked-by
()
{
__vcsh_repositories
}
function
_vcsh-rename
()
{
__vcsh_repositories
#TODO tell the user to write new stuff
}
function
_vcsh-run
()
{
__vcsh_repositories
_commands
#TODO normal commands
}
function
_vcsh-setup
()
{
__vcsh_repositories
}
function
_vcsh-version
()
{
}
function
_vcsh-which
()
{
__vcsh_not_implemented_yet
"
$0
"
#TODO
}
function
_vcsh-write-gitignore
()
{
__vcsh_repositories
}
function
_vcsh
()
{
local
curcontext
=
"
${
curcontext
}
"
local
state vcshcommand
local
-a
args subcommands
subcommands
=(
"clone:clone an existing repository"
"delete:delete an existing repository"
"enter:enter repository; spawn new <
\$
SHELL>"
"help:display help"
"init:initialize an empty repository"
"list:list all local vcsh repositories"
"list-tracked:list all files tracked by vcsh"
"list-tracked-by:list files tracked by a repository"
"rename:rename a repository"
"run:run command with <
\$
GIT_DIR> and <
\$
GIT_WORK_TREE> set"
"setup:set up repository with recommended settings"
"version:print version information"
"which:find <substring> in name of any tracked file"
"write-gitignore:write .gitignore.d/<repo> via git ls-files"
)
args
=(
'-c[source <file> prior to other configuration files]:config files:_path_files'
'-d[enable debug mode]'
'-v[enable verbose mode]'
'*:: :->subcommand_or_options_or_repo'
)
_arguments
-C
${
args
}
&&
return
if
[[
${
state
}
==
"subcommand_or_options_or_repo"
]]
;
then
if
((
CURRENT
==
1
))
;
then
_describe
-t
subcommands
'vcsh sub-commands'
subcommands
__vcsh_repositories
else
vcshcommand
=
"
${
words
[1]
}
"
if
!
((
${
+functions[_vcsh-
$vcshcommand
]
}
))
;
then
# There is no handler function, so this is probably the name
# of a repository. Act accordingly.
_message
"git sub-command"
#TODO and now we need to complete on git subcommands
else
curcontext
=
"
${
curcontext
%
:
*
:
*
}
:vcsh-
${
vcshcommand
}
:"
_call_function ret _vcsh-
${
vcshcommand
}
fi
fi
fi
}
_vcsh
"
$@
"
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment