diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index ec21719b..5c4c95b9 100644 --- a/helix-core/src/syntax.rs +++ b/helix-core/src/syntax.rs @@ -28,8 +28,8 @@ pub struct LanguageConfiguration { pub file_types: Vec, // filename ends_with? pub roots: Vec, // these indicate project roots <.git, Cargo.toml> - // pub path: PathBuf, - // root_path for tree-sitter (^) + #[serde(default)] + pub auto_format: bool, // content_regex // injection_regex diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 3cb1288e..edc3dcfd 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -966,7 +966,13 @@ mod cmd { editor.set_error("cannot write a buffer without a filename".to_string()); return; } - doc.format(view.id); // TODO: merge into save + let autofmt = doc + .language_config() + .map(|config| config.auto_format) + .unwrap_or_default(); + if autofmt { + doc.format(view.id); // TODO: merge into save + } tokio::spawn(doc.save()); } diff --git a/languages.toml b/languages.toml index 93cd653e..b93bcb8b 100644 --- a/languages.toml +++ b/languages.toml @@ -4,6 +4,7 @@ scope = "source.rust" injection-regex = "rust" file-types = ["rs"] roots = [] +auto-format = true language-server = { command = "rust-analyzer" } indent = { tab-width = 4, unit = " " } @@ -61,6 +62,7 @@ scope = "source.go" injection-regex = "go" file-types = ["go"] roots = ["Gopkg.toml", "go.mod"] +auto-format = true language-server = { command = "gopls" } # TODO: gopls needs utf-8 offsets?