mirror of
https://github.com/nushell/nushell
synced 2024-12-26 13:03:07 +00:00
Merge pull request #9 from jonathandturner/better_completions
Complete commands a bit better
This commit is contained in:
commit
447356cb96
1 changed files with 27 additions and 14 deletions
|
@ -15,23 +15,12 @@ impl Completer for NuCompleter {
|
||||||
pos: usize,
|
pos: usize,
|
||||||
context: &rustyline::Context,
|
context: &rustyline::Context,
|
||||||
) -> rustyline::Result<(usize, Vec<completion::Pair>)> {
|
) -> rustyline::Result<(usize, Vec<completion::Pair>)> {
|
||||||
let mut pairs = vec![
|
let commands = [
|
||||||
completion::Pair {
|
"ps", "ls", "cd", "bat", "skip", "take", "select", "reject", "to-array", "where",
|
||||||
display: "exit".to_string(),
|
"sort-by",
|
||||||
replacement: "exit".to_string(),
|
|
||||||
},
|
|
||||||
completion::Pair {
|
|
||||||
display: "ls".to_string(),
|
|
||||||
replacement: "ls".to_string(),
|
|
||||||
},
|
|
||||||
completion::Pair {
|
|
||||||
display: "ps".to_string(),
|
|
||||||
replacement: "ps".to_string(),
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
let mut completions = self.file_completer.complete(line, pos, context)?.1;
|
let mut completions = self.file_completer.complete(line, pos, context)?.1;
|
||||||
completions.append(&mut pairs);
|
|
||||||
|
|
||||||
let line_chars: Vec<_> = line.chars().collect();
|
let line_chars: Vec<_> = line.chars().collect();
|
||||||
let mut replace_pos = pos;
|
let mut replace_pos = pos;
|
||||||
|
@ -42,6 +31,30 @@ impl Completer for NuCompleter {
|
||||||
replace_pos -= 1;
|
replace_pos -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for command in commands.iter() {
|
||||||
|
let mut pos = replace_pos;
|
||||||
|
let mut matched = true;
|
||||||
|
if pos < line_chars.len() {
|
||||||
|
for chr in command.chars() {
|
||||||
|
if line_chars[pos] != chr {
|
||||||
|
matched = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pos += 1;
|
||||||
|
if pos == line_chars.len() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if matched {
|
||||||
|
completions.push(completion::Pair {
|
||||||
|
display: command.to_string(),
|
||||||
|
replacement: command.to_string(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok((replace_pos, completions))
|
Ok((replace_pos, completions))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue