Mercurial > dotfiles
annotate .zfun/_subversion @ 336:ea73ef5dc38c
emacs: avoid weird package.el breakage with newish packages
I've been toting around this package.el from 2009 or so, and something
in the package format seems to have changed that broke me. Thanks to
some related diagnostics by Lucas, I've grabbed the last package.el
that worked with emacs 23 and stashed it here. This seems to work,
modulo some things (notably js2-mode and smex) now seem to require
emacs 24 if you install them using package.el, so this will end up
being brittle on my last couple of emacs23 machines.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Thu, 29 May 2014 14:30:42 -0400 |
parents | b84c4cac3148 |
children |
rev | line source |
---|---|
73
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
1 #compdef svn svnadmin svnadmin-static=svnadmin |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
2 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
3 _svn () { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
4 local curcontext="$curcontext" state line expl ret=1 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
5 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
6 _arguments -C \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
7 '(-)--help[print help information]' \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
8 '(- *)--version[print client version information]' \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
9 '1: :->cmds' \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
10 '*:: :->args' && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
11 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
12 if [[ -n $state ]] && (( ! $+_svn_cmds )); then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
13 typeset -gHA _svn_cmds |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
14 _svn_cmds=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
15 ${=${(f)${${"$(LC_ALL=C _call_program commands svn help)"#l#*Available subcommands:}%%Subversion is a tool*}}/(#s)[[:space:]]#(#b)([a-z]##)[[:space:]]#(\([a-z, ?]##\))#/$match[1] :$match[1]${match[2]:+:${${match[2]//[(),]}// /:}}:} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
16 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
17 fi |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
18 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
19 case $state in |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
20 cmds) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
21 _wanted commands expl 'svn command' _svn_commands && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
22 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
23 args) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
24 local cmd args usage |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
25 typeset -gHA _cache_svn_status |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
26 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
27 cmd="${${(k)_svn_cmds[(R)*:$words[1]:*]}:-${(k)_svn_cmds[(i):$words[1]:]}}" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
28 if (( $#cmd )); then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
29 curcontext="${curcontext%:*:*}:svn-${cmd}:" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
30 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
31 usage=${${(M)${(f)"$(LC_ALL=C _call_program options svn help $cmd)"}:#usage:*}#usage:*$cmd] } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
32 args=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
33 ${=${${${(M)${(f)"$(LC_ALL=C _call_program options svn help $cmd)"##*Valid options:}:#* :*}%% #:*}/ ARG/:arg:}/(#b)-([[:alpha:]]) \[--([a-z-]##)\](:arg:)#/(--$match[2])-$match[1]$match[3] (-$match[1])--$match[2]$match[3]} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
34 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
35 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
36 case $cmd in; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
37 (add) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
38 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
39 '*:file:_files -g "*(^e:_svn_controlled:)"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
40 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
41 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
42 (commit) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
43 args=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
44 ${args/(#b)(*--file*):arg:/$match[1]:file:_files} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
45 '*:file:_files -g "*(e:_svn_status:)"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
46 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
47 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
48 (delete) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
49 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
50 '*:file:_files -g ".svn(/e:_svn_deletedfiles:)"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
51 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
52 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
53 (diff) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
54 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
55 '*: : _alternative "files:file:_files -g \*\(e:_svn_status:\)" "urls:URL:_svn_urls"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
56 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
57 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
58 (help) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
59 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
60 '*::sub command:_svn_commands' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
61 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
62 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
63 (import) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
64 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
65 '1:project directory or import location: _alternative "files:file:_files" "urls:URL:_svn_urls"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
66 '2:import location: _alternative "files:file:_files" "urls:URL:_svn_urls"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
67 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
68 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
69 (log) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
70 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
71 '1: : _alternative "files:file:_files -g \*\(e:_svn_controlled:\)" "urls:URL:_svn_urls"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
72 '*:file:_files -g "*(e:_svn_controlled:)"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
73 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
74 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
75 (propset) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
76 args=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
77 ':propname:(svn:ignore svn:keywords svn:executable svn:eol-style svn:mime-type svn:externals svn:needs-lock)' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
78 ${args/(#b)(*--file*):arg:/$match[1]:file:_files} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
79 '*:path or url: _alternative "files:file:_files" "urls:URL:_svn_urls"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
80 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
81 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
82 (resolved) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
83 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
84 '*:file:_files -g "*(e:_svn_conflicts:)"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
85 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
86 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
87 (revert) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
88 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
89 '*:file:_files -g "(.svn|*)(/e:_svn_deletedfiles:,e:_svn_status:)"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
90 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
91 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
92 (*) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
93 case $usage in |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
94 *(SRC|DST|TARGET|URL*PATH)*) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
95 args+=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
96 '*: : _alternative "files:file:_files" "urls:URL:_svn_urls"' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
97 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
98 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
99 *URL*) args+=( ':URL:_svn_urls' ) ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
100 *PATH*) args+=( '*:file:_files' ) ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
101 esac |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
102 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
103 esac |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
104 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
105 _arguments "$args[@]" && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
106 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
107 else |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
108 _message "unknown svn command: $words[1]" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
109 fi |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
110 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
111 esac |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
112 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
113 return ret |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
114 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
115 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
116 _svnadmin () { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
117 local curcontext="$curcontext" state line ret=1 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
118 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
119 _arguments -C \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
120 '(-)--help[print help information]' \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
121 '(- *)--version[print client version information]' \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
122 '1: :->cmds' \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
123 '*:: :->args' && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
124 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
125 if [[ -n $state ]] && (( ! $+_svnadmin_cmds )); then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
126 typeset -gHA _svnadmin_cmds |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
127 _svnadmin_cmds=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
128 ${=${(f)${${"$(LC_ALL=C _call_program commands svnadmin help)"#l#*Available subcommands:}}}/(#s)[[:space:]]#(#b)([-a-z]##)[[:space:]]#(\([a-z, ?]##\))#/$match[1] :$match[1]${match[2]:+:${${match[2]//[(),]}// /:}}:} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
129 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
130 fi |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
131 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
132 case $state in |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
133 cmds) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
134 _wanted commands expl 'svnadmin command' _svnadmin_commands && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
135 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
136 args) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
137 local cmd args usage |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
138 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
139 cmd="${${(k)_svnadmin_cmds[(R)*:$words[1]:*]}:-${(k)_svnadmin_cmds[(i):$words[1]:]}}" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
140 if (( $#cmd )); then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
141 curcontext="${curcontext%:*:*}:svnadmin-${cmd}:" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
142 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
143 usage=${${(M)${(f)"$(LC_ALL=C _call_program options svnadmin help $cmd)"}:#$cmd: usage:*}#$cmd: usage: svnadmin $cmd } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
144 args=( |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
145 ${=${${${(M)${(f)"$(LC_ALL=C _call_program options svnadmin help $cmd)"##*Valid options:}:#*:*}%% #:*}/ ARG/:arg:}/(#b)-([[:alpha:]]) \[--([a-z-]##)\](:arg:)#/(--$match[2])-$match[1]$match[3] (-$match[1])--$match[2]$match[3]} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
146 ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
147 if [[ $_svnadmin_subcmd_usage == *REPOS_PATH* ]]; then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
148 args+=( ":path:_files -/" ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
149 elif [[ $cmd = help ]]; then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
150 args+=( "*:subcommand:_svnadmin_commands" ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
151 fi |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
152 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
153 _arguments "$args[@]" && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
154 else |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
155 _message "unknown svnadmin command: $words[1]" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
156 fi |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
157 ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
158 esac |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
159 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
160 return ret |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
161 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
162 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
163 (( $+functions[_svn_controlled] )) || |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
164 _svn_controlled() { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
165 [[ -f ${(M)REPLY##*/}.svn/text-base/${REPLY##*/}.svn-base ]] |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
166 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
167 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
168 (( $+functions[_svn_conflicts] )) || |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
169 _svn_conflicts() { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
170 [ -n $REPLY.(mine|r<->)(N[1]) ] |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
171 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
172 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
173 (( $+functions[_svn_deletedfiles] )) || |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
174 _svn_deletedfiles() { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
175 # Typical usage would be _files -g '.svn(/e:_svn_deletedfiles:)' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
176 local cont controlled |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
177 reply=( ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
178 [[ $REPLY = (*/|).svn ]] || return |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
179 controlled=( $REPLY/text-base/*.svn-base(N:r:t) ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
180 for cont in ${controlled}; do |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
181 [[ -e $REPLY:h/$cont ]] || reply+=( ${REPLY%.svn}$cont ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
182 done |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
183 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
184 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
185 (( $+functions[_svn_status] )) || |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
186 _svn_status() { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
187 local dir=$REPLY:h |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
188 local pat="${1:-([ADMR~]|?M)}" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
189 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
190 if (( ! $+_cache_svn_status[$dir] )); then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
191 _cache_svn_status[$dir]="$(_call_program files svn status -N $dir)" |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
192 fi |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
193 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
194 (( ${(M)#${(f)_cache_svn_status[$dir]}:#(#s)${~pat}*$REPLY} )) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
195 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
196 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
197 (( $+functions[_svn_urls] )) || |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
198 _svn_urls() { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
199 local expl remfiles remdispf remdispd suf ret=1 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
200 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
201 if [[ -prefix *: ]] && ! _urls && |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
202 zstyle -T ":completion:${curcontext}:" remote-access |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
203 then |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
204 remfiles=( ${(f)"$(svn list $IPREFIX${PREFIX%%[^./][^/]#} 2>/dev/null)"} ) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
205 compset -P '*/' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
206 compset -S '/*' || suf=file |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
207 remdispf=(${remfiles:#*/}) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
208 remdispd=(${(M)remfiles:#*/}) |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
209 _tags files |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
210 while _tags; do |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
211 while _next_label files expl ${suf:-directory}; do |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
212 [[ -n $suf ]] && compadd "$@" "$expl[@]" -d remdispf $remdispf && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
213 compadd ${suf:+-S/} "$@" "$expl[@]" -d remdispd \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
214 ${remdispd%/} && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
215 done |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
216 (( ret )) || return 0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
217 done |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
218 else |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
219 compset -S '[^:]*' |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
220 _wanted url-schemas expl 'URL schema' compadd -S '' - \ |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
221 file:// http:// https:// svn:// svn+ssh:// && ret=0 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
222 fi |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
223 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
224 return ret |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
225 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
226 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
227 (( $+functions[_svn_commands] )) || |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
228 _svn_commands() { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
229 compadd "$@" -k _svn_cmds || compadd "$@" ${(s.:.)_svn_cmds} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
230 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
231 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
232 (( $+functions[_svnadmin_command] )) || |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
233 _svnadmin_commands() { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
234 compadd "$@" -k _svnadmin_cmds || compadd "$@" ${(s.:.)_svnadmin_cmds} |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
235 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
236 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
237 _subversion () { |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
238 case $service in |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
239 (svn) _svn "$@" ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
240 (svnadmin) _svnadmin "$@" ;; |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
241 esac |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
242 } |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
243 |
b84c4cac3148
Add custom _subversion that works with svn 1.5 and later.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
244 _subversion "$@" |