@@ -104,25 +104,71 @@ _tmsu_tag_values() {
104
104
local tag=${PREFIX%=*}
105
105
local escapedTag=$tag:gs/:/\\:/:gs/=/\\\\=/
106
106
107
- _call_program tmsu tmsu $db values 2>/dev/null | \
107
+ # set PREFIX to partial value
108
+ if (( ${(w)#PREFIX#*=} ))
109
+ then
110
+ PREFIX="${PREFIX#*=}"
111
+ # or an empty string
112
+ else
113
+ PREFIX=""
114
+ fi
115
+
116
+ IPREFIX="${IPREFIX}${tag}="
117
+
118
+ _call_program tmsu tmsu $db values $tag 2>/dev/null | \
108
119
while read value
109
120
do
110
121
local escapedValue=$value:gs/:/\\:/
111
122
escapedValue=$escapedValue:gs/=/\\=/
112
123
113
- value_list+=("$escapedTag=$ escapedValue")
124
+ value_list+=("$escapedValue")
114
125
done
115
126
116
127
_describe -t values 'values' value_list
117
128
}
118
129
119
130
# the set of tags, or values for that tag if ending =
120
131
_tmsu_tags_with_values() {
121
- if [[ -prefix *= ]]
132
+
133
+ # add quote to end of IPREFIX if missing.
134
+ if [[ $IPREFIX =~ '--.*' || IPREFIX =~ '.*\"' ]]
122
135
then
123
- _tmsu_tag_values
124
- else
136
+ IPREFIX="${IPREFIX}\""
137
+ fi
138
+
139
+ if [[ ${PREFIX} == '' ]] # if prefix is empty
140
+ then
141
+ _tmsu_tags
142
+ return
143
+ fi
144
+
145
+ # if following a space
146
+ if [[ ${(Q)PREFIX[-1]} == ' ' ]]
147
+ then
148
+ if (( ${(w)#PREFIX} >= 1 ))
149
+ then
150
+ IPREFIX="${(Q)IPREFIX}${(Q)PREFIX}"
151
+ PREFIX=""
152
+ fi
153
+
125
154
_tmsu_tags
155
+ return
156
+
157
+ else
158
+ # If theres more than one word, append to IPREFIX
159
+ if (( ${(w)#PREFIX} > 1 ))
160
+ then
161
+ IPREFIX="${(Q)IPREFIX}${(Q)PREFIX[1,(w)-2]} "
162
+ PREFIX="${PREFIX[(w)-1]}"
163
+ fi
164
+
165
+ # If last inputted word contains =
166
+ if [[ ${PREFIX} =~ '.+\=.*' ]]
167
+ then
168
+ _tmsu_tag_values
169
+ else
170
+ _tmsu_tags
171
+ fi
126
172
fi
127
173
}
128
174
@@ -236,7 +282,7 @@ _tmsu_query() {
236
282
237
283
# set of files
238
284
_tmsu_setting_names() {
239
- if [[ -prefix *^= ]]
285
+ if [[ -prefix *^= ]]
240
286
then
241
287
typeset -a setting_names
242
288
local name
@@ -417,7 +463,7 @@ _tmsu_cmd_tags() {
417
463
if (( ${+opt_args[--value]} ))
418
464
then
419
465
_wanted values expl 'values' _tmsu_values
420
- else
466
+ else
421
467
_wanted files expl 'files' _files
422
468
fi
423
469
esac
0 commit comments