diff options
Diffstat (limited to 'src/completion.rs')
| -rw-r--r-- | src/completion.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/completion.rs b/src/completion.rs index 237e956..61dce76 100644 --- a/src/completion.rs +++ b/src/completion.rs @@ -1,5 +1,5 @@ use crate::*; -use std::fs; +use std::{env, fs}; pub struct Suggestion { pub display: BString, @@ -55,3 +55,27 @@ pub fn path_completion(prefix: BString) -> Vec<Suggestion> { } } } + +pub fn variable_completion(session: Arc<Mutex<Session>>, prefix: BString) -> Vec<Suggestion> { + let se = session.lock().unwrap(); + let mut out = Vec::new(); + for var in se.vars.keys() { + if var.starts_with(&prefix) { + out.push(Suggestion { + display: var.to_vec(), + delta: var[prefix.len()..].to_vec(), + }); + } + } + drop(se); + for var in env::vars_os() { + let var = var.0.as_bytes(); + if var.starts_with(&prefix) { + out.push(Suggestion { + display: var.to_vec(), + delta: var[prefix.len()..].to_vec(), + }); + } + } + out +} |
