Detailed changes
@@ -830,15 +830,24 @@ impl Language {
let mut values = HashMap::default();
for (ix, name) in query.capture_names().iter().enumerate() {
if let Some(override_name) = name.strip_prefix("override.") {
- let value = self
- .config
- .overrides
- .remove(override_name)
- .ok_or_else(|| anyhow!("no such override {override_name}"))?;
+ let value = self.config.overrides.remove(override_name).ok_or_else(|| {
+ anyhow!(
+ "language {:?} has override in query but not in config: {override_name:?}",
+ self.config.name
+ )
+ })?;
values.insert(ix as u32, value);
}
}
+ if !self.config.overrides.is_empty() {
+ let keys = self.config.overrides.keys().collect::<Vec<_>>();
+ Err(anyhow!(
+ "language {:?} has overrides in config not in query: {keys:?}",
+ self.config.name
+ ))?;
+ }
+
self.grammar_mut().override_config = Some(OverrideConfig { query, values });
Ok(self)
}
@@ -1,3 +1,4 @@
+use anyhow::Context;
use gpui::executor::Background;
pub use language::*;
use lazy_static::lazy_static;
@@ -145,7 +146,9 @@ pub(crate) fn language(
.unwrap()
.data,
)
+ .with_context(|| format!("failed to load config.toml for language {name:?}"))
.unwrap();
+
let mut language = Language::new(config, Some(grammar));
if let Some(query) = load_query(name, "/highlights") {
@@ -7,5 +7,20 @@ brackets = [
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false },
+ { start = "'", end = "'", close = true, newline = false },
{ 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
+]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(string_literal) @override.string
@@ -7,5 +7,20 @@ brackets = [
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false },
+ { start = "'", end = "'", close = true, newline = false },
{ 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
+]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(string_literal) @override.string
@@ -5,5 +5,20 @@ 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 },
+ { 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(string_value) @override.string
@@ -6,5 +6,20 @@ 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 },
+ { 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+[(string) (charlist)] @override.string
@@ -4,5 +4,4 @@ autoclose_before = ">})"
brackets = [
{ start = "<", end = ">", close = true, newline = true },
]
-
-block_comment = ["<%#", "%>"]
+block_comment = ["<%#", "%>"]
@@ -7,5 +7,20 @@ brackets = [
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false },
+ { start = "'", end = "'", close = true, newline = false },
{ 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
+]
@@ -0,0 +1,6 @@
+(comment) @override.comment
+[
+ (interpreted_string_literal)
+ (raw_string_literal)
+ (rune_literal)
+] @override.string
@@ -9,4 +9,18 @@ brackets = [
{ 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 = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
+]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(quoted_attribute_value) @override.string
@@ -12,3 +12,21 @@ brackets = [
{ start = "`", end = "`", close = true, newline = false },
{ 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
+]
+
+[overrides.element]
+line_comment = { remove = true }
+block_comment = ["{/* ", " */}"]
@@ -0,0 +1,9 @@
+(comment) @override.comment
+(string) @override.string
+
+[
+ (jsx_element)
+ (jsx_fragment)
+ (jsx_self_closing_element)
+ (jsx_expression)
+] @override.element
@@ -7,3 +7,9 @@ brackets = [
{ start = "[", end = "]", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false },
]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+]
@@ -0,0 +1,2 @@
+(comment) @comment
+(string) @override.string
@@ -12,4 +12,18 @@ brackets = [
auto_indent_using_last_non_empty_line = false
increase_indent_pattern = ":$"
-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 },
+]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(string) @override.string
@@ -7,5 +7,19 @@ brackets = [
{ start = "[", end = "]", close = true, newline = true },
{ start = "(", end = ")", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false },
- { start = "'", end = "'", close = false, newline = false },
-]
+ { 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
+]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(string) @override.string
@@ -11,3 +11,19 @@ brackets = [
{ start = "'", end = "'", close = false, newline = false },
{ 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 },
+]
@@ -0,0 +1,8 @@
+[
+ (string_literal)
+ (raw_string_literal)
+] @override.string
+[
+ (line_comment)
+ (block_comment)
+] @override.comment
@@ -7,3 +7,15 @@ brackets = [
{ start = "(", end = ")", close = true, newline = false },
{ start = "\"", end = "\"", close = true, newline = false },
]
+
+[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 },
+]
@@ -0,0 +1,6 @@
+[
+ (comment)
+ (block_comment)
+ (directive)
+] @override.comment
+(string) @override.string
@@ -6,4 +6,17 @@ brackets = [
{ start = "{", end = "}", close = true, newline = true },
{ start = "[", end = "]", close = true, newline = true },
{ start = "\"", end = "\"", close = true, newline = false },
+ { start = "'", end = "'", close = true, newline = false },
+]
+
+[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 },
]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(string) @override.string
@@ -12,3 +12,17 @@ brackets = [
{ start = "`", end = "`", close = true, newline = false },
{ 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 },
+]
+
+[overrides.string]
+brackets = [
+ { start = "{", end = "}", close = true, newline = true },
+ { start = "[", end = "]", close = true, newline = true },
+ { start = "(", end = ")", close = true, newline = true },
+]
@@ -0,0 +1,2 @@
+(comment) @override.comment
+(string) @override.string