summaryrefslogtreecommitdiff
path: root/plugins/dotnet/dotnet.plugin.zsh
diff options
context:
space:
mode:
authorHarry <cra0zy@gmail.com>2020-02-15 19:19:57 +0100
committerGitHub <noreply@github.com>2020-02-15 19:19:57 +0100
commit0bcecf2f636b8070639b6db44b8541015f574365 (patch)
tree6dfc75637755509e7744fe7aa0bd205eb6dd7c22 /plugins/dotnet/dotnet.plugin.zsh
parentaa4146a9a4b75bc998d74750b4f75131973ccf01 (diff)
downloadzsh-0bcecf2f636b8070639b6db44b8541015f574365.tar.gz
zsh-0bcecf2f636b8070639b6db44b8541015f574365.tar.bz2
zsh-0bcecf2f636b8070639b6db44b8541015f574365.zip
dotnet: use official dotnet completion (#8518)
Diffstat (limited to 'plugins/dotnet/dotnet.plugin.zsh')
-rw-r--r--plugins/dotnet/dotnet.plugin.zsh119
1 files changed, 16 insertions, 103 deletions
diff --git a/plugins/dotnet/dotnet.plugin.zsh b/plugins/dotnet/dotnet.plugin.zsh
index ed6c68e5d..6bd4b7af8 100644
--- a/plugins/dotnet/dotnet.plugin.zsh
+++ b/plugins/dotnet/dotnet.plugin.zsh
@@ -1,114 +1,27 @@
-# --------------------------------------------------------------------- #
-# Aliases and Completions for .NET Core (https://dotnet.microsoft.com/) #
-# Author: Shaun Tabone (https://github.com/xontab) #
-# --------------------------------------------------------------------- #
+# This scripts is copied from (MIT License):
+# https://github.com/dotnet/toolset/blob/master/scripts/register-completions.zsh
-# Helper function to cache and load completions
-local cache_base_path="${ZSH_CACHE_DIR}/dotnet_"
-_dotnet_cache_completion() {
- local cache="${cache_base_path}$(echo $1)_completion"
- if [[ ! -f $cache ]]; then
- $2 $cache
- fi
+_dotnet_zsh_complete()
+{
+ local completions=("$(dotnet complete "$words")")
- [[ -f $cache ]] && cat $cache
-}
+ # If the completion list is empty, just continue with filename selection
+ if [ -z "$completions" ]
+ then
+ _arguments '*::arguments: _normal'
+ return
+ fi
-_dotnet_cache_completion_cleanup() {
- local cache="${cache_base_path}$(echo $1)_completion"
- rm -f $cache
+ # This is not a variable assigment, don't remove spaces!
+ _values = "${(ps:\n:)completions}"
}
-# --------------------------------------------------------------------- #
-# dotnet new #
-# ALIAS: dn #
-# --------------------------------------------------------------------- #
-_dotnet_new_completion() {
- if [ $commands[dotnet] ]; then
- dotnet new -l | tail -n +21 | sed 's/ \+/:/g' | cut -d : -f 2 >$1
- fi
-}
+compdef _dotnet_zsh_complete dotnet
-_dotnet_new_completion_cached() {
- _dotnet_cache_completion 'new' _dotnet_new_completion
-}
-
-_dotnet_cache_completion_cleanup 'new'
+# Aliases bellow are here for backwards compatibility
+# added by Shaun Tabone (https://github.com/xontab)
alias dn='dotnet new'
-
-# --------------------------------------------------------------------- #
-# dotnet #
-# --------------------------------------------------------------------- #
-_dotnet() {
- if [ $CURRENT -eq 2 ]; then
- _arguments \
- '--diagnostics[Enable diagnostic output.]' \
- '--help[Show command line help.]' \
- '--info[Display .NET Core information.]' \
- '--list-runtimes[Display the installed runtimes.]' \
- '--list-sdks[Display the installed SDKs.]' \
- '--version[Display .NET Core SDK version in use.]'
-
- _values \
- 'add[Add a package or reference to a .NET project.]' \
- 'build[Build a .NET project.]' \
- 'build-server[Interact with servers started by a build.]' \
- 'clean[Clean build outputs of a .NET project.]' \
- 'help[Show command line help.]' \
- 'list[List project references of a .NET project.]' \
- 'msbuild[Run Microsoft Build Engine (MSBuild) commands.]' \
- 'new[Create a new .NET project or file.]' \
- 'nuget[Provides additional NuGet commands.]' \
- 'pack[Create a NuGet package.]' \
- 'publish[Publish a .NET project for deployment.]' \
- 'remove[Remove a package or reference from a .NET project.]' \
- 'restore[Restore dependencies specified in a .NET project.]' \
- 'run[Build and run a .NET project output.]' \
- 'sln[Modify Visual Studio solution files.]' \
- 'store[Store the specified assemblies in the runtime package store.]' \
- 'test[Run unit tests using the test runner specified in a .NET project.]' \
- 'tool[Install or manage tools that extend the .NET experience.]' \
- 'vstest[Run Microsoft Test Engine (VSTest) commands.]' \
- 'dev-certs[Create and manage development certificates.]' \
- 'fsi[Start F# Interactive / execute F# scripts.]' \
- 'sql-cache[SQL Server cache command-line tools.]' \
- 'user-secrets[Manage development user secrets.]' \
- 'watch[Start a file watcher that runs a command when files change.]'
- return
- fi
-
- if [ $CURRENT -eq 3 ]; then
- case ${words[2]} in
- "new")
- compadd -X ".NET Installed Templates" $(_dotnet_new_completion_cached)
- return
- ;;
- "sln")
- _values \
- 'add[Add one or more projects to a solution file.]' \
- 'list[List all projects in a solution file.]' \
- 'remove[Remove one or more projects from a solution file.]'
- return
- ;;
- "nuget")
- _values \
- 'delete[Deletes a package from the server.]' \
- 'locals[Clears or lists local NuGet resources such as http requests cache, packages folder, plugin operations cache or machine-wide global packages folder.]' \
- 'push[Pushes a package to the server and publishes it.]'
- return
- ;;
- esac
- fi
-
- _arguments '*::arguments: _normal'
-}
-
-compdef _dotnet dotnet
-
-# --------------------------------------------------------------------- #
-# Other Aliases #
-# --------------------------------------------------------------------- #
alias dr='dotnet run'
alias dt='dotnet test'
alias dw='dotnet watch'