diff options
| author | Jonas Maier <> | 2026-03-10 16:37:07 +0100 |
|---|---|---|
| committer | Jonas Maier <> | 2026-03-10 16:37:07 +0100 |
| commit | 1bab9e3ed54476d0b4a47da84693a2e4e50effc6 (patch) | |
| tree | cc0fb5a4dd85a28e23766972b1fccdce8a93d9c5 /src/completion.rs | |
| parent | 5a20456be99899e6519ec0595817e0d436eab627 (diff) | |
| download | pish-1bab9e3ed54476d0b4a47da84693a2e4e50effc6.tar.gz | |
variable completion
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 +} |
