summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/forward_search.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/features/forward_search.rs')
-rw-r--r--support/texlab/src/features/forward_search.rs30
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())