summaryrefslogtreecommitdiff
path: root/support/texlab/src/syntax/latexindent.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/syntax/latexindent.rs')
-rw-r--r--support/texlab/src/syntax/latexindent.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/support/texlab/src/syntax/latexindent.rs b/support/texlab/src/syntax/latexindent.rs
new file mode 100644
index 0000000000..c45c95d4e5
--- /dev/null
+++ b/support/texlab/src/syntax/latexindent.rs
@@ -0,0 +1,21 @@
+use std::{io, process::Stdio};
+use tempfile::tempdir;
+use tokio::{fs, process::Command};
+
+pub async fn format(text: &str, extension: &str) -> io::Result<String> {
+ let dir = tempdir()?;
+ let input = format!("input.{}", extension);
+ let output = format!("output.{}", extension);
+ fs::write(dir.path().join(&input), text).await?;
+
+ Command::new("latexindent")
+ .args(&["-o", &output, &input])
+ .current_dir(dir.path())
+ .stdin(Stdio::null())
+ .stdout(Stdio::null())
+ .stderr(Stdio::null())
+ .spawn()?
+ .await?;
+
+ fs::read_to_string(dir.path().join(&output)).await
+}