mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-09 13:31:34 +03:00
feat(commands): make it possible to disable format-on-save via the 'auto-format' option (#2321)
This commit is contained in:
parent
f9baced216
commit
20162a426b
@ -39,6 +39,7 @@ hidden = false
|
||||
| `line-number` | Line number display: `absolute` simply shows each line's number, while `relative` shows the distance from the current line. When unfocused or in insert mode, `relative` will still show absolute line numbers. | `absolute` |
|
||||
| `gutters` | Gutters to display: Available are `diagnostics` and `line-numbers`, note that `diagnostics` also includes other features like breakpoints | `["diagnostics", "line-numbers"]` |
|
||||
| `auto-completion` | Enable automatic pop up of auto-completion. | `true` |
|
||||
| `auto-format` | Enable automatic formatting on save. | `true` |
|
||||
| `idle-timeout` | Time in milliseconds since last keypress before idle timers trigger. Used for autocompletion, set to 0 for instant. | `400` |
|
||||
| `completion-trigger-len` | The min-length of word under cursor to trigger autocompletion | `2` |
|
||||
| `auto-info` | Whether to display infoboxes | `true` |
|
||||
|
@ -195,6 +195,7 @@ fn write_impl(
|
||||
path: Option<&Cow<str>>,
|
||||
force: bool,
|
||||
) -> anyhow::Result<()> {
|
||||
let auto_format = cx.editor.config().auto_format;
|
||||
let jobs = &mut cx.jobs;
|
||||
let doc = doc_mut!(cx.editor);
|
||||
|
||||
@ -205,17 +206,21 @@ fn write_impl(
|
||||
if doc.path().is_none() {
|
||||
bail!("cannot write a buffer without a filename");
|
||||
}
|
||||
let fmt = doc.auto_format().map(|fmt| {
|
||||
let shared = fmt.shared();
|
||||
let callback = make_format_callback(
|
||||
doc.id(),
|
||||
doc.version(),
|
||||
Modified::SetUnmodified,
|
||||
shared.clone(),
|
||||
);
|
||||
jobs.callback(callback);
|
||||
shared
|
||||
});
|
||||
let fmt = if auto_format {
|
||||
doc.auto_format().map(|fmt| {
|
||||
let shared = fmt.shared();
|
||||
let callback = make_format_callback(
|
||||
doc.id(),
|
||||
doc.version(),
|
||||
Modified::SetUnmodified,
|
||||
shared.clone(),
|
||||
);
|
||||
jobs.callback(callback);
|
||||
shared
|
||||
})
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let future = doc.format_and_save(fmt, force);
|
||||
cx.jobs.add(Job::new(future).wait_before_exiting());
|
||||
|
||||
@ -454,6 +459,7 @@ fn write_all_impl(
|
||||
force: bool,
|
||||
) -> anyhow::Result<()> {
|
||||
let mut errors = String::new();
|
||||
let auto_format = cx.editor.config().auto_format;
|
||||
let jobs = &mut cx.jobs;
|
||||
// save all documents
|
||||
for doc in &mut cx.editor.documents.values_mut() {
|
||||
@ -466,17 +472,21 @@ fn write_all_impl(
|
||||
continue;
|
||||
}
|
||||
|
||||
let fmt = doc.auto_format().map(|fmt| {
|
||||
let shared = fmt.shared();
|
||||
let callback = make_format_callback(
|
||||
doc.id(),
|
||||
doc.version(),
|
||||
Modified::SetUnmodified,
|
||||
shared.clone(),
|
||||
);
|
||||
jobs.callback(callback);
|
||||
shared
|
||||
});
|
||||
let fmt = if auto_format {
|
||||
doc.auto_format().map(|fmt| {
|
||||
let shared = fmt.shared();
|
||||
let callback = make_format_callback(
|
||||
doc.id(),
|
||||
doc.version(),
|
||||
Modified::SetUnmodified,
|
||||
shared.clone(),
|
||||
);
|
||||
jobs.callback(callback);
|
||||
shared
|
||||
})
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let future = doc.format_and_save(fmt, force);
|
||||
jobs.add(Job::new(future).wait_before_exiting());
|
||||
}
|
||||
|
@ -127,6 +127,8 @@ pub struct Config {
|
||||
pub auto_pairs: AutoPairConfig,
|
||||
/// Automatic auto-completion, automatically pop up without user trigger. Defaults to true.
|
||||
pub auto_completion: bool,
|
||||
/// Automatic formatting on save. Defaults to true.
|
||||
pub auto_format: bool,
|
||||
/// Time in milliseconds since last keypress before idle timers trigger.
|
||||
/// Used for autocompletion, set to 0 for instant. Defaults to 400ms.
|
||||
#[serde(
|
||||
@ -374,6 +376,7 @@ impl Default for Config {
|
||||
middle_click_paste: true,
|
||||
auto_pairs: AutoPairConfig::default(),
|
||||
auto_completion: true,
|
||||
auto_format: true,
|
||||
idle_timeout: Duration::from_millis(400),
|
||||
completion_trigger_len: 2,
|
||||
auto_info: true,
|
||||
|
Loading…
Reference in New Issue
Block a user