diff options
Diffstat (limited to 'support/texlab/src/features/forward_search.rs')
-rw-r--r-- | support/texlab/src/features/forward_search.rs | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/support/texlab/src/features/forward_search.rs b/support/texlab/src/features/forward_search.rs index 4a54b8a52a..521cc31a59 100644 --- a/support/texlab/src/features/forward_search.rs +++ b/support/texlab/src/features/forward_search.rs @@ -4,7 +4,6 @@ use std::{ process::{Command, Stdio}, }; -use cancellation::CancellationToken; use log::error; use lsp_types::TextDocumentPositionParams; use serde::{Deserialize, Serialize}; @@ -28,18 +27,8 @@ pub struct ForwardSearchResult { pub fn execute_forward_search( request: FeatureRequest<TextDocumentPositionParams>, - _cancellation_token: &CancellationToken, ) -> Option<ForwardSearchResult> { - let options = { - request - .context - .options - .read() - .unwrap() - .forward_search - .clone() - .unwrap_or_default() - }; + let options = &request.workspace.environment.options.forward_search; if options.executable.is_none() || options.args.is_none() { return Some(ForwardSearchResult { @@ -48,9 +37,9 @@ pub fn execute_forward_search( } let root_document = request - .subset - .documents - .iter() + .workspace + .documents_by_uri + .values() .find(|document| { if let Some(data) = document.data.as_latex() { data.extras.has_document_environment @@ -79,14 +68,15 @@ pub fn execute_forward_search( let args: Vec<String> = options .args + .as_ref() .unwrap() - .into_iter() + .iter() .flat_map(|arg| { replace_placeholder(&tex_path, &pdf_path, request.params.position.line, arg) }) .collect(); - let status = match run_process(options.executable.unwrap(), args) { + let status = match run_process(options.executable.as_ref().unwrap(), args) { Ok(()) => ForwardSearchStatus::SUCCESS, Err(why) => { error!("Unable to execute forward search: {}", why); @@ -100,10 +90,10 @@ fn replace_placeholder( tex_file: &Path, pdf_file: &Path, line_number: u32, - argument: String, + argument: &str, ) -> Option<String> { let result = if argument.starts_with('"') || argument.ends_with('"') { - argument + argument.to_string() } else { argument .replace("%f", tex_file.to_str()?) @@ -113,7 +103,7 @@ fn replace_placeholder( Some(result) } -fn run_process(executable: String, args: Vec<String>) -> io::Result<()> { +fn run_process(executable: &str, args: Vec<String>) -> io::Result<()> { Command::new(executable) .args(args) .stdin(Stdio::null()) |