Skip to content

Commit

Permalink
Fix autocompletion for paths with period (#5175)
Browse files Browse the repository at this point in the history
* Bug fix

Updated bug fix

* Simplified conditionals

* Switched to use path separator constant
  • Loading branch information
DylanBulfin authored Jan 9, 2023
1 parent b368df5 commit c4b0eb8
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions helix-term/src/ui/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -463,20 +463,30 @@ pub mod completers {
use ignore::WalkBuilder;
use std::path::Path;

let is_tilde = input.starts_with('~') && input.len() == 1;
let is_tilde = input == "~";
let path = helix_core::path::expand_tilde(Path::new(input));

let (dir, file_name) = if input.ends_with(std::path::MAIN_SEPARATOR) {
(path, None)
} else {
let file_name = path
.file_name()
.and_then(|file| file.to_str().map(|path| path.to_owned()));

let path = match path.parent() {
Some(path) if !path.as_os_str().is_empty() => path.to_path_buf(),
// Path::new("h")'s parent is Some("")...
_ => std::env::current_dir().expect("couldn't determine current directory"),
let is_period = (input.ends_with((format!("{}.", std::path::MAIN_SEPARATOR)).as_str())
&& input.len() > 2)
|| input == ".";
let file_name = if is_period {
Some(String::from("."))
} else {
path.file_name()
.and_then(|file| file.to_str().map(|path| path.to_owned()))
};

let path = if is_period {
path
} else {
match path.parent() {
Some(path) if !path.as_os_str().is_empty() => path.to_path_buf(),
// Path::new("h")'s parent is Some("")...
_ => std::env::current_dir().expect("couldn't determine current directory"),
}
};

(path, file_name)
Expand Down

0 comments on commit c4b0eb8

Please sign in to comment.