mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-26 03:13:29 +04:00
Look for the external formatter before invoking it (#3670)
Currently it is not possible to save a file with a language that has an external formatter configuration unless the external formatter is installed, even if the language has a Language Server configuration capable of auto-format. This change checks that the external formatter exists before using it to create a formatting callback.
This commit is contained in:
parent
0d76775453
commit
f0d1caafcf
@ -407,7 +407,11 @@ pub fn auto_format(&self) -> Option<BoxFuture<'static, Result<Transaction, Forma
|
|||||||
// We can't use anyhow::Result here since the output of the future has to be
|
// We can't use anyhow::Result here since the output of the future has to be
|
||||||
// clonable to be used as shared future. So use a custom error type.
|
// clonable to be used as shared future. So use a custom error type.
|
||||||
pub fn format(&self) -> Option<BoxFuture<'static, Result<Transaction, FormatterError>>> {
|
pub fn format(&self) -> Option<BoxFuture<'static, Result<Transaction, FormatterError>>> {
|
||||||
if let Some(formatter) = self.language_config().and_then(|c| c.formatter.clone()) {
|
if let Some(formatter) = self
|
||||||
|
.language_config()
|
||||||
|
.and_then(|c| c.formatter.clone())
|
||||||
|
.filter(|formatter| which::which(&formatter.command).is_ok())
|
||||||
|
{
|
||||||
use std::process::Stdio;
|
use std::process::Stdio;
|
||||||
let text = self.text().clone();
|
let text = self.text().clone();
|
||||||
let mut process = tokio::process::Command::new(&formatter.command);
|
let mut process = tokio::process::Command::new(&formatter.command);
|
||||||
|
Loading…
Reference in New Issue
Block a user