Restructure how bracket pairs are overridden to unify lists

This way, a bracket pair that is disabled in a given scope can still be skipped, if
it was auto-closed before that scope existed.
This commit is contained in:
Max Brunsfeld 2023-02-16 17:06:51 -08:00
parent 2982a98d1c
commit 8922156923
22 changed files with 341 additions and 454 deletions

View file

@ -1761,8 +1761,8 @@ impl Editor {
// bracket of any of this language's bracket pairs. // bracket of any of this language's bracket pairs.
let mut bracket_pair = None; let mut bracket_pair = None;
let mut is_bracket_pair_start = false; let mut is_bracket_pair_start = false;
for pair in language.brackets() { for (pair, enabled) in language.brackets() {
if pair.close && pair.start.ends_with(text.as_ref()) { if enabled && pair.close && pair.start.ends_with(text.as_ref()) {
bracket_pair = Some(pair.clone()); bracket_pair = Some(pair.clone());
is_bracket_pair_start = true; is_bracket_pair_start = true;
break; break;
@ -1930,11 +1930,11 @@ impl Editor {
.map(|c| c.len_utf8()) .map(|c| c.len_utf8())
.sum::<usize>(); .sum::<usize>();
insert_extra_newline = language.brackets().iter().any(|pair| { insert_extra_newline = language.brackets().any(|(pair, enabled)| {
let pair_start = pair.start.trim_end(); let pair_start = pair.start.trim_end();
let pair_end = pair.end.trim_start(); let pair_end = pair.end.trim_start();
pair.newline enabled && pair.newline
&& buffer && buffer
.contains_str_at(end + trailing_whitespace_len, pair_end) .contains_str_at(end + trailing_whitespace_len, pair_end)
&& buffer.contains_str_at( && buffer.contains_str_at(

View file

@ -14,7 +14,7 @@ use gpui::{
geometry::{rect::RectF, vector::vec2f}, geometry::{rect::RectF, vector::vec2f},
platform::{WindowBounds, WindowOptions}, platform::{WindowBounds, WindowOptions},
}; };
use language::{FakeLspAdapter, LanguageConfig, LanguageRegistry, Point}; use language::{BracketPairConfig, FakeLspAdapter, LanguageConfig, LanguageRegistry, Point};
use project::FakeFs; use project::FakeFs;
use settings::EditorSettings; use settings::EditorSettings;
use util::{ use util::{
@ -3002,20 +3002,23 @@ async fn test_autoindent_selections(cx: &mut gpui::TestAppContext) {
let language = Arc::new( let language = Arc::new(
Language::new( Language::new(
LanguageConfig { LanguageConfig {
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "{".to_string(), BracketPair {
end: "}".to_string(), start: "{".to_string(),
close: false, end: "}".to_string(),
newline: true, close: false,
}, newline: true,
BracketPair { },
start: "(".to_string(), BracketPair {
end: ")".to_string(), start: "(".to_string(),
close: false, end: ")".to_string(),
newline: true, close: false,
}, newline: true,
], },
],
..Default::default()
},
..Default::default() ..Default::default()
}, },
Some(tree_sitter_rust::language()), Some(tree_sitter_rust::language()),
@ -3059,38 +3062,41 @@ async fn test_autoclose_pairs(cx: &mut gpui::TestAppContext) {
let language = Arc::new(Language::new( let language = Arc::new(Language::new(
LanguageConfig { LanguageConfig {
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "{".to_string(), BracketPair {
end: "}".to_string(), start: "{".to_string(),
close: true, end: "}".to_string(),
newline: true, close: true,
}, newline: true,
BracketPair { },
start: "(".to_string(), BracketPair {
end: ")".to_string(), start: "(".to_string(),
close: true, end: ")".to_string(),
newline: true, close: true,
}, newline: true,
BracketPair { },
start: "/*".to_string(), BracketPair {
end: " */".to_string(), start: "/*".to_string(),
close: true, end: " */".to_string(),
newline: true, close: true,
}, newline: true,
BracketPair { },
start: "[".to_string(), BracketPair {
end: "]".to_string(), start: "[".to_string(),
close: false, end: "]".to_string(),
newline: true, close: false,
}, newline: true,
BracketPair { },
start: "\"".to_string(), BracketPair {
end: "\"".to_string(), start: "\"".to_string(),
close: true, end: "\"".to_string(),
newline: false, close: true,
}, newline: false,
], },
],
..Default::default()
},
autoclose_before: "})]".to_string(), autoclose_before: "})]".to_string(),
..Default::default() ..Default::default()
}, },
@ -3227,26 +3233,29 @@ async fn test_autoclose_with_embedded_language(cx: &mut gpui::TestAppContext) {
Language::new( Language::new(
LanguageConfig { LanguageConfig {
name: "HTML".into(), name: "HTML".into(),
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "<".into(), BracketPair {
end: ">".into(), start: "<".into(),
close: true, end: ">".into(),
..Default::default() close: true,
}, ..Default::default()
BracketPair { },
start: "{".into(), BracketPair {
end: "}".into(), start: "{".into(),
close: true, end: "}".into(),
..Default::default() close: true,
}, ..Default::default()
BracketPair { },
start: "(".into(), BracketPair {
end: ")".into(), start: "(".into(),
close: true, end: ")".into(),
..Default::default() close: true,
}, ..Default::default()
], },
],
..Default::default()
},
autoclose_before: "})]>".into(), autoclose_before: "})]>".into(),
..Default::default() ..Default::default()
}, },
@ -3265,26 +3274,29 @@ async fn test_autoclose_with_embedded_language(cx: &mut gpui::TestAppContext) {
let javascript_language = Arc::new(Language::new( let javascript_language = Arc::new(Language::new(
LanguageConfig { LanguageConfig {
name: "JavaScript".into(), name: "JavaScript".into(),
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "/*".into(), BracketPair {
end: " */".into(), start: "/*".into(),
close: true, end: " */".into(),
..Default::default() close: true,
}, ..Default::default()
BracketPair { },
start: "{".into(), BracketPair {
end: "}".into(), start: "{".into(),
close: true, end: "}".into(),
..Default::default() close: true,
}, ..Default::default()
BracketPair { },
start: "(".into(), BracketPair {
end: ")".into(), start: "(".into(),
close: true, end: ")".into(),
..Default::default() close: true,
}, ..Default::default()
], },
],
..Default::default()
},
autoclose_before: "})]>".into(), autoclose_before: "})]>".into(),
..Default::default() ..Default::default()
}, },
@ -3452,20 +3464,23 @@ async fn test_surround_with_pair(cx: &mut gpui::TestAppContext) {
cx.update(|cx| cx.set_global(Settings::test(cx))); cx.update(|cx| cx.set_global(Settings::test(cx)));
let language = Arc::new(Language::new( let language = Arc::new(Language::new(
LanguageConfig { LanguageConfig {
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "{".to_string(), BracketPair {
end: "}".to_string(), start: "{".to_string(),
close: true, end: "}".to_string(),
newline: true, close: true,
}, newline: true,
BracketPair { },
start: "/* ".to_string(), BracketPair {
end: "*/".to_string(), start: "/* ".to_string(),
close: true, end: "*/".to_string(),
..Default::default() close: true,
}, ..Default::default()
], },
],
..Default::default()
},
..Default::default() ..Default::default()
}, },
Some(tree_sitter_rust::language()), Some(tree_sitter_rust::language()),
@ -3603,12 +3618,15 @@ async fn test_delete_autoclose_pair(cx: &mut gpui::TestAppContext) {
cx.update(|cx| cx.set_global(Settings::test(cx))); cx.update(|cx| cx.set_global(Settings::test(cx)));
let language = Arc::new(Language::new( let language = Arc::new(Language::new(
LanguageConfig { LanguageConfig {
brackets: vec![BracketPair { brackets: BracketPairConfig {
start: "{".to_string(), pairs: vec![BracketPair {
end: "}".to_string(), start: "{".to_string(),
close: true, end: "}".to_string(),
newline: true, close: true,
}], newline: true,
}],
..Default::default()
},
autoclose_before: "}".to_string(), autoclose_before: "}".to_string(),
..Default::default() ..Default::default()
}, },
@ -5030,20 +5048,23 @@ async fn test_extra_newline_insertion(cx: &mut gpui::TestAppContext) {
let language = Arc::new( let language = Arc::new(
Language::new( Language::new(
LanguageConfig { LanguageConfig {
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "{".to_string(), BracketPair {
end: "}".to_string(), start: "{".to_string(),
close: true, end: "}".to_string(),
newline: true, close: true,
}, newline: true,
BracketPair { },
start: "/* ".to_string(), BracketPair {
end: " */".to_string(), start: "/* ".to_string(),
close: true, end: " */".to_string(),
newline: true, close: true,
}, newline: true,
], },
],
..Default::default()
},
..Default::default() ..Default::default()
}, },
Some(tree_sitter_rust::language()), Some(tree_sitter_rust::language()),

View file

@ -32,11 +32,10 @@ pub fn refresh_matching_bracket_highlights(editor: &mut Editor, cx: &mut ViewCon
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::test::editor_lsp_test_context::EditorLspTestContext;
use super::*; use super::*;
use crate::test::editor_lsp_test_context::EditorLspTestContext;
use indoc::indoc; use indoc::indoc;
use language::{BracketPair, Language, LanguageConfig}; use language::{BracketPair, BracketPairConfig, Language, LanguageConfig};
#[gpui::test] #[gpui::test]
async fn test_matching_bracket_highlights(cx: &mut gpui::TestAppContext) { async fn test_matching_bracket_highlights(cx: &mut gpui::TestAppContext) {
@ -45,20 +44,23 @@ mod tests {
LanguageConfig { LanguageConfig {
name: "Rust".into(), name: "Rust".into(),
path_suffixes: vec!["rs".to_string()], path_suffixes: vec!["rs".to_string()],
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "{".to_string(), BracketPair {
end: "}".to_string(), start: "{".to_string(),
close: false, end: "}".to_string(),
newline: true, close: false,
}, newline: true,
BracketPair { },
start: "(".to_string(), BracketPair {
end: ")".to_string(), start: "(".to_string(),
close: false, end: ")".to_string(),
newline: true, close: false,
}, newline: true,
], },
],
..Default::default()
},
..Default::default() ..Default::default()
}, },
Some(tree_sitter_rust::language()), Some(tree_sitter_rust::language()),

View file

@ -1527,42 +1527,34 @@ fn test_language_config_at(cx: &mut MutableAppContext) {
LanguageConfig { LanguageConfig {
name: "JavaScript".into(), name: "JavaScript".into(),
line_comment: Some("// ".into()), line_comment: Some("// ".into()),
brackets: vec![ brackets: BracketPairConfig {
BracketPair { pairs: vec![
start: "{".into(), BracketPair {
end: "}".into(), start: "{".into(),
close: true, end: "}".into(),
newline: false, close: true,
}, newline: false,
BracketPair {
start: "'".into(),
end: "'".into(),
close: true,
newline: false,
},
],
overrides: [
(
"element".into(),
LanguageConfigOverride {
line_comment: Override::Remove { remove: true },
block_comment: Override::Set(("{/*".into(), "*/}".into())),
..Default::default()
}, },
), BracketPair {
( start: "'".into(),
"string".into(), end: "'".into(),
LanguageConfigOverride { close: true,
brackets: Override::Set(vec![BracketPair { newline: false,
start: "{".into(),
end: "}".into(),
close: true,
newline: false,
}]),
..Default::default()
}, },
), ],
] disabled_scopes_by_bracket_ix: vec![
Vec::new(), //
vec!["string".into()],
],
},
overrides: [(
"element".into(),
LanguageConfigOverride {
line_comment: Override::Remove { remove: true },
block_comment: Override::Set(("{/*".into(), "*/}".into())),
..Default::default()
},
)]
.into_iter() .into_iter()
.collect(), .collect(),
..Default::default() ..Default::default()
@ -1584,11 +1576,19 @@ fn test_language_config_at(cx: &mut MutableAppContext) {
let config = snapshot.language_scope_at(0).unwrap(); let config = snapshot.language_scope_at(0).unwrap();
assert_eq!(config.line_comment_prefix().unwrap().as_ref(), "// "); assert_eq!(config.line_comment_prefix().unwrap().as_ref(), "// ");
assert_eq!(config.brackets().len(), 2); // Both bracket pairs are enabled
assert_eq!(
config.brackets().map(|e| e.1).collect::<Vec<_>>(),
&[true, true]
);
let string_config = snapshot.language_scope_at(3).unwrap(); let string_config = snapshot.language_scope_at(3).unwrap();
assert_eq!(config.line_comment_prefix().unwrap().as_ref(), "// "); assert_eq!(string_config.line_comment_prefix().unwrap().as_ref(), "// ");
assert_eq!(string_config.brackets().len(), 1); // Second bracket pair is disabled
assert_eq!(
string_config.brackets().map(|e| e.1).collect::<Vec<_>>(),
&[true, false]
);
let element_config = snapshot.language_scope_at(10).unwrap(); let element_config = snapshot.language_scope_at(10).unwrap();
assert_eq!(element_config.line_comment_prefix(), None); assert_eq!(element_config.line_comment_prefix(), None);
@ -1596,7 +1596,11 @@ fn test_language_config_at(cx: &mut MutableAppContext) {
element_config.block_comment_delimiters(), element_config.block_comment_delimiters(),
Some((&"{/*".into(), &"*/}".into())) Some((&"{/*".into(), &"*/}".into()))
); );
assert_eq!(element_config.brackets().len(), 2); // Both bracket pairs are enabled
assert_eq!(
element_config.brackets().map(|e| e.1).collect::<Vec<_>>(),
&[true, true]
);
buffer buffer
}); });

View file

@ -231,7 +231,7 @@ pub struct CodeLabel {
pub struct LanguageConfig { pub struct LanguageConfig {
pub name: Arc<str>, pub name: Arc<str>,
pub path_suffixes: Vec<String>, pub path_suffixes: Vec<String>,
pub brackets: Vec<BracketPair>, pub brackets: BracketPairConfig,
#[serde(default = "auto_indent_using_last_non_empty_line_default")] #[serde(default = "auto_indent_using_last_non_empty_line_default")]
pub auto_indent_using_last_non_empty_line: bool, pub auto_indent_using_last_non_empty_line: bool,
#[serde(default, deserialize_with = "deserialize_regex")] #[serde(default, deserialize_with = "deserialize_regex")]
@ -270,8 +270,8 @@ pub struct LanguageConfigOverride {
pub line_comment: Override<Arc<str>>, pub line_comment: Override<Arc<str>>,
#[serde(default)] #[serde(default)]
pub block_comment: Override<(Arc<str>, Arc<str>)>, pub block_comment: Override<(Arc<str>, Arc<str>)>,
#[serde(default)] #[serde(skip_deserializing)]
pub brackets: Override<Vec<BracketPair>>, pub disabled_bracket_ixs: Vec<u16>,
} }
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
@ -336,7 +336,41 @@ pub struct FakeLspAdapter {
pub disk_based_diagnostics_sources: Vec<String>, pub disk_based_diagnostics_sources: Vec<String>,
} }
#[derive(Clone, Debug, Default, Deserialize)] #[derive(Clone, Debug, Default)]
pub struct BracketPairConfig {
pub pairs: Vec<BracketPair>,
pub disabled_scopes_by_bracket_ix: Vec<Vec<String>>,
}
impl<'de> Deserialize<'de> for BracketPairConfig {
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
where
D: Deserializer<'de>,
{
#[derive(Deserialize)]
pub struct Entry {
#[serde(flatten)]
pub bracket_pair: BracketPair,
#[serde(default)]
pub not_in: Vec<String>,
}
let result = Vec::<Entry>::deserialize(deserializer)?;
let mut brackets = Vec::with_capacity(result.len());
let mut disabled_scopes_by_bracket_ix = Vec::with_capacity(result.len());
for entry in result {
brackets.push(entry.bracket_pair);
disabled_scopes_by_bracket_ix.push(entry.not_in);
}
Ok(BracketPairConfig {
pairs: brackets,
disabled_scopes_by_bracket_ix,
})
}
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
pub struct BracketPair { pub struct BracketPair {
pub start: String, pub start: String,
pub end: String, pub end: String,
@ -393,7 +427,7 @@ struct InjectionConfig {
struct OverrideConfig { struct OverrideConfig {
query: Query, query: Query,
values: HashMap<u32, LanguageConfigOverride>, values: HashMap<u32, (String, LanguageConfigOverride)>,
} }
#[derive(Default, Clone)] #[derive(Default, Clone)]
@ -967,16 +1001,11 @@ impl Language {
pub fn with_override_query(mut self, source: &str) -> Result<Self> { pub fn with_override_query(mut self, source: &str) -> Result<Self> {
let query = Query::new(self.grammar_mut().ts_language, source)?; let query = Query::new(self.grammar_mut().ts_language, source)?;
let mut values = HashMap::default(); let mut override_configs_by_id = HashMap::default();
for (ix, name) in query.capture_names().iter().enumerate() { for (ix, name) in query.capture_names().iter().enumerate() {
if !name.starts_with('_') { if !name.starts_with('_') {
let value = self.config.overrides.remove(name).ok_or_else(|| { let value = self.config.overrides.remove(name).unwrap_or_default();
anyhow!( override_configs_by_id.insert(ix as u32, (name.clone(), value));
"language {:?} has override in query but not in config: {name:?}",
self.config.name
)
})?;
values.insert(ix as u32, value);
} }
} }
@ -988,7 +1017,28 @@ impl Language {
))?; ))?;
} }
self.grammar_mut().override_config = Some(OverrideConfig { query, values }); for (name, override_config) in override_configs_by_id.values_mut() {
override_config.disabled_bracket_ixs = self
.config
.brackets
.disabled_scopes_by_bracket_ix
.iter()
.enumerate()
.filter_map(|(ix, disabled_scope_names)| {
if disabled_scope_names.contains(name) {
Some(ix as u16)
} else {
None
}
})
.collect();
}
self.config.brackets.disabled_scopes_by_bracket_ix.clear();
self.grammar_mut().override_config = Some(OverrideConfig {
query,
values: override_configs_by_id,
});
Ok(self) Ok(self)
} }
@ -1132,12 +1182,26 @@ impl LanguageScope {
.map(|e| (&e.0, &e.1)) .map(|e| (&e.0, &e.1))
} }
pub fn brackets(&self) -> &[BracketPair] { pub fn brackets(&self) -> impl Iterator<Item = (&BracketPair, bool)> {
Override::as_option( let mut disabled_ids = self
self.config_override().map(|o| &o.brackets), .config_override()
Some(&self.language.config.brackets), .map_or(&[] as _, |o| o.disabled_bracket_ixs.as_slice());
) self.language
.map_or(&[], Vec::as_slice) .config
.brackets
.pairs
.iter()
.enumerate()
.map(move |(ix, bracket)| {
let mut is_enabled = true;
if let Some(next_disabled_ix) = disabled_ids.first() {
if ix == *next_disabled_ix as usize {
disabled_ids = &disabled_ids[1..];
is_enabled = false;
}
}
(bracket, is_enabled)
})
} }
pub fn should_autoclose_before(&self, c: char) -> bool { pub fn should_autoclose_before(&self, c: char) -> bool {
@ -1148,7 +1212,7 @@ impl LanguageScope {
let id = self.override_id?; let id = self.override_id?;
let grammar = self.language.grammar.as_ref()?; let grammar = self.language.grammar.as_ref()?;
let override_config = grammar.override_config.as_ref()?; let override_config = grammar.override_config.as_ref()?;
override_config.values.get(&id) override_config.values.get(&id).map(|e| &e.1)
} }
} }

View file

@ -6,21 +6,7 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "/*", end = " */", close = true, newline = false }, { start = "/*", end = " */", close = true, newline = false, not_in = ["string", "comment"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]

View file

@ -6,21 +6,7 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "/*", end = " */", close = true, newline = false }, { start = "/*", end = " */", close = true, newline = false, not_in = ["string", "comment"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]

View file

@ -5,20 +5,6 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["string", "comment"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]

View file

@ -6,20 +6,6 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["string", "comment"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]

View file

@ -6,21 +6,7 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "/*", end = " */", close = true, newline = false }, { start = "/*", end = " */", close = true, newline = false, not_in = ["comment", "string"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]

View file

@ -1,26 +1,12 @@
name = "HTML" name = "HTML"
path_suffixes = ["html"] path_suffixes = ["html"]
autoclose_before = ">})" autoclose_before = ">})"
brackets = [
{ start = "<", end = ">", close = true, newline = true },
{ start = "{", end = "}", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false },
{ start = "!--", end = " --", close = true, newline = false },
]
block_comment = ["<!-- ", " -->"] block_comment = ["<!-- ", " -->"]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "<", end = ">", close = true, newline = true, not_in = ["comment", "string"] },
{ start = "!--", end = " --", close = true, newline = false, not_in = ["comment", "string"] },
] ]

View file

@ -6,25 +6,11 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "<", end = ">", close = false, newline = true }, { start = "<", end = ">", close = false, newline = true, not_in = ["comment", "string"] },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "`", end = "`", close = true, newline = false }, { start = "`", end = "`", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "/*", end = " */", close = true, newline = false }, { start = "/*", end = " */", close = true, newline = false, not_in = ["comment", "string"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]
[overrides.element] [overrides.element]

View file

@ -5,11 +5,5 @@ autoclose_before = ",]}"
brackets = [ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
] ]

View file

@ -3,13 +3,7 @@ path_suffixes = ["lua"]
line_comment = "-- " line_comment = "-- "
autoclose_before = ",]}" autoclose_before = ",]}"
brackets = [ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
] ]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
]

View file

@ -3,27 +3,13 @@ path_suffixes = ["py", "pyi"]
line_comment = "# " line_comment = "# "
autoclose_before = ";:.,=}])>" autoclose_before = ";:.,=}])>"
brackets = [ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
{ start = "'", end = "'", close = false, newline = false }, { start = "'", end = "'", close = false, newline = false, not_in = ["string"] },
] ]
auto_indent_using_last_non_empty_line = false auto_indent_using_last_non_empty_line = false
increase_indent_pattern = ":\\s*$" increase_indent_pattern = ":\\s*$"
decrease_indent_pattern = "^\\s*(else|elif|except|finally)\\b.*:" decrease_indent_pattern = "^\\s*(else|elif|except|finally)\\b.*:"
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]

View file

@ -6,20 +6,6 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["comment", "string"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]

View file

@ -6,24 +6,7 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "<", end = ">", close = false, newline = true }, { start = "<", end = ">", close = false, newline = true, not_in = ["string", "comment"] },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
{ start = "'", end = "'", close = false, newline = false }, { start = "/*", end = " */", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "/*", end = " */", close = true, newline = false },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
{ start = "<", end = ">", close = false, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
{ start = "<", end = ">", close = false, newline = true },
] ]

View file

@ -5,17 +5,5 @@ autoclose_before = "])"
brackets = [ brackets = [
{ start = "[", end = "]", close = true, newline = false }, { start = "[", end = "]", close = true, newline = false },
{ start = "(", end = ")", close = true, newline = false }, { start = "(", end = ")", close = true, newline = false },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["comment", "string"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
] ]

View file

@ -5,18 +5,6 @@ autoclose_before = ",]}"
brackets = [ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["comment", "string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["comment", "string"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
] ]

View file

@ -6,18 +6,13 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "<", end = ">", close = false, newline = true }, { start = "<", end = ">", close = false, newline = true, not_in = ["string", "comment"] },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "`", end = "`", close = true, newline = false }, { start = "`", end = "`", close = true, newline = false, not_in = ["string"] },
{ start = "/*", end = " */", close = true, newline = false }, { start = "/*", end = " */", close = true, newline = false, not_in = ["string", "comment"] },
] ]
[overrides.element] [overrides.element]
line_comment = { remove = true } line_comment = { remove = true }
block_comment = ["{/* ", " */}"] block_comment = ["{/* ", " */}"]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
]

View file

@ -6,23 +6,9 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true }, { start = "(", end = ")", close = true, newline = true },
{ start = "<", end = ">", close = false, newline = true }, { start = "<", end = ">", close = false, newline = true, not_in = ["string", "comment"] },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
{ start = "'", end = "'", close = true, newline = false }, { start = "'", end = "'", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "`", end = "`", close = true, newline = false }, { start = "`", end = "`", close = true, newline = false, not_in = ["string"] },
{ start = "/*", end = " */", close = true, newline = false }, { start = "/*", end = " */", close = true, newline = false, not_in = ["string", "comment"] },
]
[overrides.comment]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
]
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
] ]

View file

@ -5,13 +5,7 @@ autoclose_before = ",]}"
brackets = [ brackets = [
{ start = "{", end = "}", close = true, newline = true }, { start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true }, { start = "[", end = "]", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false }, { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
] ]
increase_indent_pattern = ":\\s*[|>]?\\s*$" increase_indent_pattern = ":\\s*[|>]?\\s*$"
[overrides.string]
brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
]