diff --git a/plugins/dotnet/README.md b/plugins/dotnet/README.md index a663fc88d..7554b4e3c 100644 --- a/plugins/dotnet/README.md +++ b/plugins/dotnet/README.md @@ -20,4 +20,4 @@ plugins=(... dotnet) | ds | dotnet sln | Modify Visual Studio solution files. | | da | dotnet add | Add a package or reference to a .NET project. | | dp | dotnet pack | Create a NuGet package. | -| dng | dotnet nuget | Provides additional NuGet commands. | \ No newline at end of file +| dng | dotnet nuget | Provides additional NuGet commands. | 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 + + # This is not a variable assigment, don't remove spaces! + _values = "${(ps:\n:)completions}" } -_dotnet_cache_completion_cleanup() { - local cache="${cache_base_path}$(echo $1)_completion" - rm -f $cache -} +compdef _dotnet_zsh_complete dotnet -# --------------------------------------------------------------------- # -# 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 -} - -_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'