Add editor action to manually invoke buffer format
This commit is contained in:
parent
955ebc5499
commit
f3395cf4fd
9 changed files with 124 additions and 33 deletions
|
@ -58,7 +58,8 @@ pub struct EditorSettings {
|
|||
pub hard_tabs: Option<bool>,
|
||||
pub soft_wrap: Option<SoftWrap>,
|
||||
pub preferred_line_length: Option<u32>,
|
||||
pub format_on_save: Option<FormatOnSave>,
|
||||
pub format_on_save: Option<bool>,
|
||||
pub formatter: Option<Formatter>,
|
||||
pub enable_language_server: Option<bool>,
|
||||
}
|
||||
|
||||
|
@ -72,8 +73,7 @@ pub enum SoftWrap {
|
|||
|
||||
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, JsonSchema)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum FormatOnSave {
|
||||
Off,
|
||||
pub enum Formatter {
|
||||
LanguageServer,
|
||||
External {
|
||||
command: String,
|
||||
|
@ -207,6 +207,7 @@ impl Settings {
|
|||
font_cache: &FontCache,
|
||||
themes: &ThemeRegistry,
|
||||
) -> Self {
|
||||
#[track_caller]
|
||||
fn required<T>(value: Option<T>) -> Option<T> {
|
||||
assert!(value.is_some(), "missing default setting value");
|
||||
value
|
||||
|
@ -236,6 +237,7 @@ impl Settings {
|
|||
soft_wrap: required(defaults.editor.soft_wrap),
|
||||
preferred_line_length: required(defaults.editor.preferred_line_length),
|
||||
format_on_save: required(defaults.editor.format_on_save),
|
||||
formatter: required(defaults.editor.formatter),
|
||||
enable_language_server: required(defaults.editor.enable_language_server),
|
||||
},
|
||||
editor_overrides: Default::default(),
|
||||
|
@ -322,8 +324,12 @@ impl Settings {
|
|||
self.language_setting(language, |settings| settings.preferred_line_length)
|
||||
}
|
||||
|
||||
pub fn format_on_save(&self, language: Option<&str>) -> FormatOnSave {
|
||||
self.language_setting(language, |settings| settings.format_on_save.clone())
|
||||
pub fn format_on_save(&self, language: Option<&str>) -> bool {
|
||||
self.language_setting(language, |settings| settings.format_on_save)
|
||||
}
|
||||
|
||||
pub fn formatter(&self, language: Option<&str>) -> Formatter {
|
||||
self.language_setting(language, |settings| settings.formatter.clone())
|
||||
}
|
||||
|
||||
pub fn enable_language_server(&self, language: Option<&str>) -> bool {
|
||||
|
@ -358,7 +364,8 @@ impl Settings {
|
|||
hard_tabs: Some(false),
|
||||
soft_wrap: Some(SoftWrap::None),
|
||||
preferred_line_length: Some(80),
|
||||
format_on_save: Some(FormatOnSave::LanguageServer),
|
||||
format_on_save: Some(true),
|
||||
formatter: Some(Formatter::LanguageServer),
|
||||
enable_language_server: Some(true),
|
||||
},
|
||||
editor_overrides: Default::default(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue