diff --git a/init/completions/cvs.fish b/init/completions/cvs.fish index 5678638a8..4bf020e9e 100644 --- a/init/completions/cvs.fish +++ b/init/completions/cvs.fish @@ -16,23 +16,6 @@ function __fish_no_cvs_subcommand return 0 end -# -# Test to see if we've seen a subcommand from a list. -# This logic may seem backwards, but the commandline will often be much shorter -# than the list -# - -function __fish_seen_cvs_subcommand_from - set -l -- cmd (commandline -poc) - set -e cmd[1] - for i in $cmd - if contains -- $i $argv - return 0 - end - end - return 1 -end - # # If no subcommand has been specified, complete using all available subcommands # @@ -96,17 +79,17 @@ complete -c cvs -n '__fish_no_cvs_subcommand' -x -s z -d (_ "Compression level f # Universal cvs options, which can be applied to any cvs command. # -complete -c cvs -n '__fish_seen_cvs_subcommand_from checkout diff export history rdiff rtag update' -x -s D -d (_ "Use the most recent revision no later than date.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from annotate export rdiff rtag update' -s f -d (_ "Retrieve files even when no match for tag/date.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from add checkout diff import update' -x -s k -d (_ "Alter default keyword processing.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from annotate checkout commit diff edit editors export log rdiff remove rtag status tag unedit update watch watchers' -s l -d (_ "Don't recurse.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from add commit import' -x -s m -d (_ "Specify log message instead of invoking editor.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from checkout commit export rtag' -s n -d (_ "Don't run any tag programs.") +complete -c cvs -n '__fish_seen_subcommand_from checkout diff export history rdiff rtag update' -x -s D -d (_ "Use the most recent revision no later than date.") +complete -c cvs -n '__fish_seen_subcommand_from annotate export rdiff rtag update' -s f -d (_ "Retrieve files even when no match for tag/date.") +complete -c cvs -n '__fish_seen_subcommand_from add checkout diff import update' -x -s k -d (_ "Alter default keyword processing.") +complete -c cvs -n '__fish_seen_subcommand_from annotate checkout commit diff edit editors export log rdiff remove rtag status tag unedit update watch watchers' -s l -d (_ "Don't recurse.") +complete -c cvs -n '__fish_seen_subcommand_from add commit import' -x -s m -d (_ "Specify log message instead of invoking editor.") +complete -c cvs -n '__fish_seen_subcommand_from checkout commit export rtag' -s n -d (_ "Don't run any tag programs.") complete -c cvs -n 'not __fish_no_cvs_subcommand' -s P -d (_ "Prune empty directories.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from checkout update' -s p -d (_ "Pipe files to stdout.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from annotate checkout commit diff edit editors export rdiff remove rtag status tag unedit update watch watchers' -s R -d (_ "Process directories recursively.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from annotate checkout commit diff history export rdiff rtag update' -x -s r -d (_ "Use a specified tag.") -complete -c cvs -n '__fish_seen_cvs_subcommand_from import update' -r -s W -d (_ "Specify filenames to be filtered.") +complete -c cvs -n '__fish_seen_subcommand_from checkout update' -s p -d (_ "Pipe files to stdout.") +complete -c cvs -n '__fish_seen_subcommand_from annotate checkout commit diff edit editors export rdiff remove rtag status tag unedit update watch watchers' -s R -d (_ "Process directories recursively.") +complete -c cvs -n '__fish_seen_subcommand_from annotate checkout commit diff history export rdiff rtag update' -x -s r -d (_ "Use a specified tag.") +complete -c cvs -n '__fish_seen_subcommand_from import update' -r -s W -d (_ "Specify filenames to be filtered.") # # cvs options for admin. Note that all options marked as "useless", "might not diff --git a/init/completions/svn.fish b/init/completions/svn.fish new file mode 100644 index 000000000..d50dd243f --- /dev/null +++ b/init/completions/svn.fish @@ -0,0 +1,131 @@ +# +# Completions for the svn VCS command +# + +function __fish_svn_subcommand_allowed + set -l svncommands add blame cat checkout cleanup commit copy delete diff di help import info list lock log merge mkdir move propdel propedit propget proplist resolved revert status switch unlock update + set -l -- cmd (commandline -poc) + set -e cmd[1] + for i in $cmd + if contains -- $i $svncommands + return 1 + end + end + return 0 +end + +# +# If no subcommand has been specified, complete using all available subcommands +# + +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'add\t"'(_ "Place files or directories under version control")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'blame\t"'(_ "Output files/URLs with revision and author information inline.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'cat\t"'(_ "Output content of files/URLs.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'checkout\t"'(_ "Check out a working copy from the repository.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'cleanup\t"'(_ "Recursively clean up the working copy.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'commit\t"'(_ "Send changes from your working copy to the repository.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'import\t"'(_ "Commit an unversioned file or tree into the repository.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'info\t"'(_ "Display information about a local or remote item.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'list\t"'(_ "List directory entries in the repository.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'lock\t"'(_ "Lock working copy paths or URLs in the repository.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'log\t"'(_ "Show the log messages for a set of revision(s) and/or file(s).")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'merge\t"'(_ "Apply the differences between two sources to a working copy path.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'mkdir\t"'(_ "Create a new directory under version control.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'move\t"'(_ "Move and/or rename something in working copy or repository.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'propdel\t"'(_ "Remove a property from files, dirs, or revisions.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'propedit\t"'(_ "Edit a property with an external editor on targets.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'propget\t"'(_ "Print value of a property on files, dirs, or revisions.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'proplist\t"'(_ "List all properties on files, dirs, or revisions.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'resolved\t"'(_ "Remove conflicted state on working copy files or directories.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'revert\t"'(_ "Restore pristine working copy file.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'status\t"'(_ "Print the status of working copy files and directories.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'switch\t"'(_ "Update the working copy to a different URL.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'unlock\t"'(_ "Unlock working copy paths or URLs.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'update\t"'(_ "Bring changes from the repository into the working copy.")'"' +complete -c svn -n '__fish_svn_subcommand_allowed' -xa 'help\t"'(_ "Describe the usage of this program or its subcommands.")'"' + +# -s/--revision +complete -c svn -n '__fish_seen_subcommand_from blame cat checkout info list log merge move propdel propedit propget proplist switch update' -x -s r -l revision -d (_ "Specify revision.") +# --targets +complete -c svn -n '__fish_seen_subcommand_from add commit import info lock log resolved revert unlock' -r -l targets -d (_ "Pass contents of file as additional args.") +# -N/--non-recursive +complete -c svn -n '__fish_seen_subcommand_from add checkout commit import merge status switch update' -s N -l non-recursive -d (_ "Don't recurse.") +# -q/--quiet +complete -c svn -n '__fish_seen_subcommand_from add checkout commit import log merge mkdir move propdel proplist resolved revert status switch update help' -s q -l quiet -d (_ "Print as little as possible.") +# --force +complete -c svn -n '__fish_seen_subcommand_from add lock merge move propedit unlock' -l force -d (_ "Force operation to run.") +# --auto-props +complete -c svn -n '__fish_seen_subcommand_from add' -l auto-props -d (_ "Enable automatic properties.") +# --no-auto-props +complete -c svn -n '__fish_seen_subcommand_from add' -l no-auto-props -d (_ "Disable automatic properties.") +# -v/--verbose +complete -c svn -n '__fish_seen_subcommand_from blame cat log proplist status' -s v -l verbose -d (_ "Print extra info.") +# --username +complete -c svn -n '__fish_seen_subcommand_from blame cat checkout commit import info list lock log merge mkdir move propdel propedit propget proplist status switch unlock update' -x -l username -d (_ "Specify a username.") +# --password +complete -c svn -n '__fish_seen_subcommand_from blame cat checkout commit import info list lock log merge mkdir move propdel propedit propget proplist status switch unlock update' -x -l password -d (_ "Specify a password.") +# --no-auth-cache +complete -c svn -n '__fish_seen_subcommand_from blame cat checkout commit import info list lock log merge mkdir move propdel propedit propget proplist status switch unlock update' -l no-auth-cache -d (_ "Don't cache auth tokens.") +# --non-interactive +complete -c svn -n '__fish_seen_subcommand_from blame cat checkout commit import info list lock log merge mkdir move propdel propedit propget proplist status switch unlock update' -l non-interactive -d (_ "Do no interactive prompting.") +# --config-dir +complete -c svn -n '__fish_seen_subcommand_from add cleanup blame cat checkout commit import info list lock log merge mkdir move propdel propedit propget proplist resolved revert status switch unlock update help' -r -l config-dir -d (_ "Read user config files from named directory.") +# --no-unlock +complete -c svn -n '__fish_seen_subcommand_from commit import' -l no-unlock -d (_ "Don't unlock targets.") +# -m/--message +complete -c svn -n '__fish_seen_subcommand_from commit import lock mkdir move' -x -s m -l message -d (_ "Specify commit message.") +# -F/--file +complete -c svn -n '__fish_seen_subcommand_from commit import lock mkdir move' -r -s F -l file -d (_ "Read commit message from file.") +# --force-log +complete -c svn -n '__fish_seen_subcommand_from commit import lock mkdir move' -l force-log -d (_ "Force log message source validity.") +# --editor-cmd +complete -c svn -n '__fish_seen_subcommand_from commit import mkdir move propedit' -x -l editor-cmd -d (_ "Specify external editor.") +# --recursive +complete -c svn -n '__fish_seen_subcommand_from info list propdel propget proplist resolved revert' -s R -l recursive -d (_ "Descend recursively.") +# --incremental +complete -c svn -n '__fish_seen_subcommand_from list log' -l incremental -d (_ "Give output suitable for concatenation.") +# --xml +complete -c svn -n '__fish_seen_subcommand_from list log' -l xml -d (_ "Output in XML.") +# --diff3-cmd +complete -c svn -n '__fish_seen_subcommand_from cleanup merge switch update' -x -l diff3-cmd -d (_ "Specify merge command.") +# --encoding +complete -c svn -n '__fish_seen_subcommand_from lock mkdir move propedit' -x -l encoding -d (_ "Force encoding.") +# --revprop +complete -c svn -n '__fish_seen_subcommand_from propdel propedit propget' -l revprop -d (_ "Operate on revision property.") +# --strict +complete -c svn -n '__fish_seen_subcommand_from propget' -l strict -d (_ "Use strict semantics.") +# --ignore-externals +complete -c svn -n '__fish_seen_subcommand_from checkout status update' -l ignore-externals -d (_ "Ignore externals definitions.") + +# +# Flags for svn log +# +set -l logopt -c svn -n 'contains log (commandline -poc)' +complete $logopt -l stop-on-copy -d (_ "Do not cross copies.") +complete $logopt -l limit -d (_ "Maximum number of log entries.") + +# +# Flags for svn merge +# +set -l mergeopt -c svn -n 'contains merge (commandline -poc)' +complete $mergeopt -l dry-run -d (_ "Make no changes.") +complete $mergeopt -l ignore-ancestry -d (_ "Ignore ancestry when calculating merge.") + +# +# Flags for svn status +# +set -l statusopt -c svn -n 'contains status (commandline -poc)' +complete $statusopt -s u -l show-updates -d (_ "Display update information.") +complete $statusopt -l no-ignore -d (_ "Disregard ignores.") + +# +# Flags for svn switch +# +set -l switchopt -c svn -n 'contains switch (commandline -poc)' +complete $switchopt -l relocate -d (_ "Relocate VIA URL-rewriting.") + +# +# Flags for svn help +# +set -l helpopt -c svn -n 'contains help (commandline -poc)' +complete $helpopt -l version -d (_ "Print client version info.") diff --git a/init/fish_complete.fish.in b/init/fish_complete.fish.in index 15f8d6764..d92110cb5 100644 --- a/init/fish_complete.fish.in +++ b/init/fish_complete.fish.in @@ -117,6 +117,23 @@ function __fish_no_arguments -d "Internal fish function" return 0 end +# +# Test to see if we've seen a subcommand from a list. +# This logic may seem backwards, but the commandline will often be much shorter +# than the list +# + +function __fish_seen_subcommand_from + set -l -- cmd (commandline -poc) + set -e cmd[1] + for i in $cmd + if contains -- $i $argv + return 0 + end + end + return 1 +end + # # Completions for SysV startup scripts #