autocomplete fix ?
This commit is contained in:
parent
165f4a3a08
commit
cf6a9961d1
18
src/lib.rs
18
src/lib.rs
@ -408,23 +408,23 @@ pub mod shell {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn find_next_space(current_pos: &usize, max_pos: &usize, command: &String) -> usize {
|
fn find_next_space(current_pos: &usize, max_pos: &usize, command: &String) -> usize {
|
||||||
|
let markers = vec![' ', '!', ',', ';', ':'];
|
||||||
let mut steps: usize = 0;
|
let mut steps: usize = 0;
|
||||||
if *current_pos == *max_pos { return steps; }
|
if *current_pos == *max_pos { return steps; }
|
||||||
for letter in command.chars().skip(*current_pos) {
|
for letter in command.chars().skip(*current_pos+1) {
|
||||||
//println!("L : {:?}, S : {:?} C: {:?} M {:?}", letter, steps, current_pos, max_pos);
|
if markers.contains(&letter) {
|
||||||
//Skip if we start on a space
|
if *current_pos + steps < *max_pos { steps += 1; }
|
||||||
if steps == 0 && (letter == ' ' || letter == ',' || letter == ';') {
|
|
||||||
continue;
|
|
||||||
} else if letter != ' ' && *current_pos + steps < *max_pos {
|
|
||||||
steps += 1;
|
|
||||||
} else {
|
|
||||||
return steps;
|
return steps;
|
||||||
|
} else {
|
||||||
|
steps += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let max: usize = (0 + max_pos) - current_pos;
|
let max: usize = (0 + max_pos) - current_pos;
|
||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn handle_conf(stdout: &mut Stdout) -> SqishConf {
|
fn handle_conf(stdout: &mut Stdout) -> SqishConf {
|
||||||
let conf = match SqishConf::from_sqishrc() {
|
let conf = match SqishConf::from_sqishrc() {
|
||||||
@ -614,7 +614,7 @@ pub mod shell {
|
|||||||
|
|
||||||
fn jmp_prev_word(elems: &mut TermElements) {
|
fn jmp_prev_word(elems: &mut TermElements) {
|
||||||
let command_rev = elems.command.chars().rev().collect::<String>();
|
let command_rev = elems.command.chars().rev().collect::<String>();
|
||||||
let curr_rev = elems.max_pos - elems.cur_pos + 1;
|
let curr_rev = elems.max_pos - elems.cur_pos;
|
||||||
let steps = find_next_space(&curr_rev, &elems.max_pos, &command_rev);
|
let steps = find_next_space(&curr_rev, &elems.max_pos, &command_rev);
|
||||||
if steps > 0 {
|
if steps > 0 {
|
||||||
print!("{}", cursor::Left(steps as u16));
|
print!("{}", cursor::Left(steps as u16));
|
||||||
|
@ -104,7 +104,6 @@ impl Search {
|
|||||||
if res.len() < 1 {
|
if res.len() < 1 {
|
||||||
*&mut res = format!("{}{}", &self.command, &self.searchee);
|
*&mut res = format!("{}{}", &self.command, &self.searchee);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (res, res_lines);
|
return (res, res_lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,7 +204,12 @@ fn autocomplete_file(search: &Search) -> std::io::Result<(String, String)> {
|
|||||||
//Remote search... is annoying
|
//Remote search... is annoying
|
||||||
if !search.local_search {
|
if !search.local_search {
|
||||||
last_found = last_found.replace("./", "");
|
last_found = last_found.replace("./", "");
|
||||||
return Ok((format!("{}{}{}", search.command, search.search_path.display(), last_found), String::new()));
|
//println!("{:?}", format!("{}{}", search.command, last_found));
|
||||||
|
if nbr_found < 2 {
|
||||||
|
return Ok((format!("{}{}{}", search.command, search.search_path.display(), last_found), String::new()));
|
||||||
|
} else {
|
||||||
|
return Ok((format!("{}{}", search.command, last_found), all_res));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
last_found = last_found.replace("./", "");
|
last_found = last_found.replace("./", "");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user