aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs52
1 files changed, 27 insertions, 25 deletions
diff --git a/src/main.rs b/src/main.rs
index 37d2ed3..6012a86 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -355,37 +355,39 @@ fn event_loop() {
&cmd,
&mut Executor::new_for_completion(session.clone()),
);
- let mut se = session.lock().unwrap();
- match comp.kind {
+
+ let suggestions = match comp.kind {
parse::CompletionKind::Command => todo!(),
- parse::CompletionKind::Argument => {
- let suggestions = completion::path_completion(comp.partial);
- if suggestions.len() == 0 {
- continue;
- }
+ parse::CompletionKind::Argument => completion::path_completion(comp.partial),
+ parse::CompletionKind::Variable => {
+ completion::variable_completion(session.clone(), comp.partial)
+ }
+ parse::CompletionKind::None => continue,
+ };
- if suggestions.len() == 1 {
- // apply suggestion
- se.type_bytes(&suggestions[0].delta);
- continue;
- }
+ if suggestions.len() == 0 {
+ continue;
+ }
- cursor::save();
+ let mut se = session.lock().unwrap();
- // one line below
- print!("\r\n");
- for s in suggestions {
- io::stdout().lock().write_all(&s.display).unwrap();
- println!();
- }
+ if suggestions.len() == 1 {
+ // apply suggestion
+ se.type_bytes(&suggestions[0].delta);
+ continue;
+ }
- cursor::restore();
- stdout.lock().flush().unwrap();
- }
- parse::CompletionKind::None => {
- se.type_bytes(b" ");
- }
+ cursor::save();
+
+ // one line below
+ print!("\r\n");
+ for s in suggestions {
+ io::stdout().lock().write_all(&s.display).unwrap();
+ println!();
}
+
+ cursor::restore();
+ stdout.lock().flush().unwrap();
}
// Escape sequence