about summary refs log tree commit diff
path: root/Completion/Unix/Command/_vim
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2012-11-07 20:59:09 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2012-11-07 20:59:09 +0000
commita8ffff2cb774a83584e4467b14c41517973c5468 (patch)
tree031a6e65745de48685d9e08269281828016a9a81 /Completion/Unix/Command/_vim
parentcd0c6153e0cae68d06a052ea84f3a965c25dde98 (diff)
downloadzsh-a8ffff2cb774a83584e4467b14c41517973c5468.tar.gz
zsh-a8ffff2cb774a83584e4467b14c41517973c5468.tar.xz
zsh-a8ffff2cb774a83584e4467b14c41517973c5468.zip
users/17382: complete URLs for vim and make _remote_files more
consistent with _files
Diffstat (limited to 'Completion/Unix/Command/_vim')
-rw-r--r--Completion/Unix/Command/_vim21
1 files changed, 15 insertions, 6 deletions
diff --git a/Completion/Unix/Command/_vim b/Completion/Unix/Command/_vim
index 2c9b0a1a4..42e5058ec 100644
--- a/Completion/Unix/Command/_vim
+++ b/Completion/Unix/Command/_vim
@@ -4,6 +4,7 @@
 _vim_files () {
   case $PREFIX in
     (+*) _files -P './' $* && return 0 ;;
+    (scp|http(|s)|(|s)ftp):*) _urls ;;
     (*) _files $* ;;
   esac
   case $PREFIX in
@@ -21,14 +22,10 @@ arguments=(
   '(   -e -E -s -d -y)-v[vi mode]'
   '(-v    -E    -d -y)-e[ex mode]'
   '(-v -e       -d -y)-E[improved ex mode]'
-  '(-v -e -E -s    -y)-d[diff mode]'
   '(-v -e -E -s -d   )-y[easy mode]'
-  '-R[readonly mode]'
-  '-Z[restricted mode]'
   '-m[modifications (writing files) not allowed]'
   '-M[modifications in text not allowed]'
   '-b[binary mode]'
-  '-g[start with GUI]'
   '-l[lisp mode]'
   '-C[start in compatible mode]'
   '-N[start in incompatible mode]'
@@ -52,7 +49,6 @@ arguments=(
   '(-A -H   )-F[start in Farsi mode]'
   '-T[set terminal type]:::_terminals'
   '-u[use given vimrc file instead of default .vimrc]::rc file:_files'
-  '-U[use given gvimrc file instead of default .gvimrc]::rc file:_files'
   '--noplugin[do not load plugin scripts]'
   '-o-[number of windows to open (default: one for each file)]::window count: '
   '-O-[number of windows to vertically split open (default is one for each file)]::window count: '
@@ -76,7 +72,6 @@ arguments=(
   '--remote-tab-wait[as --remote-wait but open tab page for each file]:*:file:_vim_files'
   '--remote-tab-wait-silent[as --remote-wait-silent but open tab page for each file]:*:file:_vim_files'
   '--remote-expr[evaluate given expression in a vim server and print result]:expression: '
-  '--echo-wid[echo window ID on STDOUT, GUI version only]'
   '--literal[do not expand wildcards in arguments (this is useless with ZSH)]'
   '(- *)--serverlist[list available vim servers and exit]'
   '--servername[name of vim server to send to or name of server to become]:server name:->server'
@@ -88,6 +83,20 @@ arguments=(
   '(* -q)-t[edit file where tag is defined]:tag:_complete_tag'
   '(-t -q)*:file:_vim_files'
 )
+[[ $service != *g* ]] && arguments+='-g[start with GUI]'
+[[ $service != r* ]] && arguments+='-Z[restricted mode]'
+[[ $service != *diff ]] && arguments+='(-v -e -E -s -y)-d[diff mode]'
+[[ $service != *view ]] && arguments+='-R[readonly mode]'
+[[ $service = *g* ]] || (( ${words[(I)-g]} )) && arguments+=(
+  '-font:font:_xft_fonts'
+  '-geometry:geometry:_x_geometry'
+  '(-rv -reverse)'{-rv,-reverse}'[use reverse video]'
+  '-display:display:_x_display'
+  '--role[set unique role to identify main window]:role'
+  '--socketid[open vim inside another GTK widget]:xid'
+  '--echo-wid[echo window ID on stdout]'
+  '-U[use given gvimrc file instead of default .gvimrc]::rc file:_files'
+)
 
 _arguments -C -S $arguments && return