diff --git a/Completion/Darwin/Command/_trash b/Completion/Darwin/Command/_trash deleted file mode 100644 index 658716432c..0000000000 --- a/Completion/Darwin/Command/_trash +++ /dev/null @@ -1,22 +0,0 @@ -#compdef trash - -# We only provide completion for Ali Rantakari's trash utility. There are/were a -# few others floating around with that name, but this is the one available as -# `trash` in Homebrew and MacPorts -_pick_variant ali='(Rantakari|hasseg)' other --version && { - # The hidden options here are options to rm that trash silently (and - # undocumentedly) ignores. Some options are not made mutually exclusive where - # they technically could be, for compatibility with aliases, etc. - _arguments -s -S -A '-*' : \ - '!-'{d,f,i,r,P,R,W} \ - '(: * -F -l -v)-e[empty trash]' \ - '-F[use Finder instead of system API]' \ - '(: * -e -F -s -y)-l[list items in trash]' \ - '(: * -F -l -v)-s[securely empty trash]' \ - '-v[increase output verbosity]' \ - '-y[skip confirmation prompts (with -e or -s)]' \ - '*: :_files' - return -} - -_default diff --git a/Completion/Unix/Command/_trash b/Completion/Unix/Command/_trash new file mode 100644 index 0000000000..d7971ae475 --- /dev/null +++ b/Completion/Unix/Command/_trash @@ -0,0 +1,57 @@ +#compdef trash + +local variant + +_pick_variant -r variant ali='(Rantakari|hasseg)' steven='(Steven|vanZyl)' other --version + +case $variant in + ali) + # The hidden options here are options to rm that trash silently (and + # undocumentedly) ignores. Some options are not made mutually exclusive where + # they technically could be, for compatibility with aliases, etc. + _arguments -s -S -A '-*' : \ + '!-'{d,f,i,r,P,R,W} \ + '(: * -F -l -v)-e[empty trash]' \ + '-F[use Finder instead of system API]' \ + '(: * -e -F -s -y)-l[list items in trash]' \ + '(: * -F -l -v)-s[securely empty trash]' \ + '-v[increase output verbosity]' \ + '-y[skip confirmation prompts (with -e or -s)]' \ + '*: :_files' + return + ;; + steven) + local trash_dir="${TRASH_D_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/Trash}/files" + + local -a args=( + '(-v --verbose)'{-v,--verbose}'[print more information]' + + + options + '(-d --dir)'{-d,--dir}'[remove empty directories]' + '(-r -R --recursive)'{-r,-R,--recursive}'[delete directories and their contents]' + '--rm[permanently delete files]' + + + '(interactive)' + {-i,--interactive}'[ask before each deletion]' + {-I,--interactive-once}'[ask before deleting 3 or more files, or deleting recursively]' + {-f,--force}'[don'\''t prompt and ignore errors]' + + + '(actions)' + '(options input info interactive)--list[list out the files in the trash]' + '(options input info interactive)--orphans[list orphaned files in the trash]' + '(options input info)--restore[restore specified file from the trash]:trashed file:_files -W "$trash_dir"' + '(options input info)--delete[delete specified file from the trash]:trashed file:_files -W "$trash_dir"' + '(options input info)--empty[empty the trash bin]' + + + info + '(- *)'{-h,--help}'[display help information]' + '(- *)--version[output the version and exit]' + + + input + '(actions)*: :_files' + ) + _arguments -s -S : $args + return + ;; + *) _default ;; +esac