nushell/crates/nu-cli/src/completion/path.rs

32 lines
788 B
Rust
Raw Normal View History

use rustyline::completion::FilenameCompleter;
use crate::completion::{Context, Suggestion};
pub struct Completer {
inner: FilenameCompleter,
}
impl Completer {
pub fn new() -> Completer {
Completer {
inner: FilenameCompleter::new(),
}
}
pub fn complete(&self, _ctx: &Context<'_>, partial: &str) -> Vec<Suggestion> {
let expanded = nu_parser::expand_ndots(partial);
if let Ok((_pos, pairs)) = self.inner.complete_path(&expanded, expanded.len()) {
pairs
.into_iter()
.map(|v| Suggestion {
replacement: v.replacement,
display: v.display,
})
.collect()
} else {
Vec::new()
}
}
}