Skip to content

Commit 2f1d46d

Browse files
committed
repeating pattern
1 parent ac88e97 commit 2f1d46d

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

duva-client/src/cli/editor/completion.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,18 @@ impl Completer for DuvaHinter {
9696
if previous_words.len() > 0 && previous_words.len() <= suggestions.len() {
9797
candidates.push(new_pair!(suggestions[previous_words.len() - 1]));
9898
}
99-
}
99+
};
100+
([$($args:expr),+], repeat_last) => {
101+
let suggestions = [$($args),+];
102+
if previous_words.len() > 0 {
103+
let idx = if previous_words.len() <= suggestions.len() {
104+
previous_words.len() - 1
105+
} else {
106+
suggestions.len() - 1 // Keep repeating the last argument
107+
};
108+
candidates.push(new_pair!(suggestions[idx]));
109+
}
110+
};
100111
};
101112

102113
let command = previous_words[0].to_lowercase();
@@ -148,19 +159,10 @@ impl Completer for DuvaHinter {
148159
suggest_by_pos!(["key", "decrement"]);
149160
},
150161
| "exists" | "del" | "mget" => {
151-
if !previous_words.is_empty() {
152-
// Suggest "key" for these commands
153-
candidates.push(new_pair!("key"));
154-
}
162+
suggest_by_pos!(["key"], repeat_last);
155163
},
156164
| "lpush" | "lpushx" | "rpush" | "rpushx" => {
157-
if previous_words.len() == 1 {
158-
// Suggest "key" after set
159-
candidates.push(new_pair!("key"));
160-
} else if previous_words.len() > 1 {
161-
// Suggest "value" after set key
162-
candidates.push(new_pair!("value"));
163-
}
165+
suggest_by_pos!(["key", "value"], repeat_last);
164166
},
165167
| "lpop" | "rpop" => {
166168
suggest_by_pos!(["key", "count"]);

0 commit comments

Comments
 (0)