diff options
Diffstat (limited to 'support/texlab/src/features/completion/include.rs')
-rw-r--r-- | support/texlab/src/features/completion/include.rs | 75 |
1 files changed, 18 insertions, 57 deletions
diff --git a/support/texlab/src/features/completion/include.rs b/support/texlab/src/features/completion/include.rs index 7f6767b89f..d851aca820 100644 --- a/support/texlab/src/features/completion/include.rs +++ b/support/texlab/src/features/completion/include.rs @@ -101,19 +101,21 @@ fn current_dir( .options .root_directory .as_ref() - .map(|root_directory| { - context - .request - .workspace - .environment - .current_directory - .join(root_directory) - }) - .unwrap_or_else(|| { - let mut path = context.request.main_document().uri.to_file_path().unwrap(); - path.pop(); - path - }); + .map_or_else( + || { + let mut path = context.request.main_document().uri.to_file_path().unwrap(); + path.pop(); + path + }, + |root_directory| { + context + .request + .workspace + .environment + .current_directory + .join(root_directory) + }, + ); path = PathBuf::from(path.to_str()?.replace('\\', "/")); if !path_text.is_empty() { @@ -133,8 +135,8 @@ fn is_included(file: &Path, allowed_extensions: &[&str]) -> bool { allowed_extensions.is_empty() || file .extension() - .and_then(|ext| ext.to_str()) - .map(|ext| ext.to_lowercase()) + .and_then(std::ffi::OsStr::to_str) + .map(str::to_lowercase) .map(|ext| allowed_extensions.contains(&ext.as_str())) .unwrap_or_default() } @@ -142,51 +144,10 @@ fn is_included(file: &Path, allowed_extensions: &[&str]) -> bool { fn remove_extension(path: &mut PathBuf) { if let Some(stem) = path .file_stem() - .and_then(|stem| stem.to_str()) + .and_then(std::ffi::OsStr::to_str) .map(ToOwned::to_owned) { path.pop(); path.push(stem); } } - -#[cfg(test)] -mod tests { - use crate::features::testing::FeatureTester; - - use super::*; - - #[test] - fn test_empty_latex_document() { - let request = FeatureTester::builder() - .files(vec![("main.tex", "")]) - .main("main.tex") - .line(0) - .character(0) - .build() - .completion(); - - let context = CursorContext::new(request); - let mut actual_items = Vec::new(); - complete_includes(&context, &mut actual_items); - - assert!(actual_items.is_empty()); - } - - #[test] - fn test_empty_bibtex_document() { - let request = FeatureTester::builder() - .files(vec![("main.bib", "")]) - .main("main.bib") - .line(0) - .character(0) - .build() - .completion(); - - let context = CursorContext::new(request); - let mut actual_items = Vec::new(); - complete_includes(&context, &mut actual_items); - - assert!(actual_items.is_empty()); - } -} |