diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index 64cb32c31..aecf80acb 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -85,6 +85,7 @@ | rust | ✓ | ✓ | ✓ | `rust-analyzer` | | scala | ✓ | | ✓ | `metals` | | scheme | ✓ | | | | +| scss | ✓ | | | `vscode-css-language-server` | | solidity | ✓ | | | `solc` | | sql | ✓ | | | | | sshclientconfig | ✓ | | | | diff --git a/languages.toml b/languages.toml index 20493e4c1..cd87d79ba 100644 --- a/languages.toml +++ b/languages.toml @@ -381,6 +381,19 @@ indent = { tab-width = 2, unit = " " } name = "css" source = { git = "https://github.com/tree-sitter/tree-sitter-css", rev = "94e10230939e702b4fa3fa2cb5c3bc7173b95d07" } +[[language]] +name = "scss" +scope = "source.scss" +injection-regex = "scss" +file-types = ["scss"] +roots = [] +language-server = { command = "vscode-css-language-server", args = ["--stdio"] } +indent = { tab-width = 2, unit = " " } + +[[grammar]] +name = "scss" +source = { git = "https://github.com/serenadeai/tree-sitter-scss.git", rev = "c478c6868648eff49eb04a4df90d703dc45b312a" } + [[language]] name = "html" scope = "text.html.basic" diff --git a/runtime/queries/scss/highlights.scm b/runtime/queries/scss/highlights.scm new file mode 100644 index 000000000..89cce4944 --- /dev/null +++ b/runtime/queries/scss/highlights.scm @@ -0,0 +1,86 @@ +(comment) @comment + +"~" @operator +">" @operator +"+" @operator +"-" @operator +"*" @operator +"/" @operator +"=" @operator +"^=" @operator +"|=" @operator +"~=" @operator +"$=" @operator +"*=" @operator + +"in" @operator +"and" @operator +"or" @operator +"not" @operator +"only" @operator + +"@apply" @constant.builtin +"@at-root" @constant.builtin +"@charset" @constant.builtin +"@debug" @constant.builtin +"@each" @keyword.control.repeat +"@else" @keyword.control.conditional +"@error" @constant.builtin +"@extend" @constant.builtin +"@for" @keyword.control.repeat +"@forward" @keyword.control.import +"@function" @function.method +"@if" @keyword.control.conditional +"@import" @keyword.control.import +"@include" @keyword.control.import +"@keyframes" @constant.builtin +"@media" @constant.builtin +"@mixin" @constant.builtin +"@namespace" @namespace +"@return" @keyword.control.return +"@supports" @constant.builtin +"@use" @keyword.control.import +"@warn" @constant.builtin +"@while" @keyword.control.repeat + +((property_name) @variable + (match? @variable "^--")) +((plain_value) @variable + (match? @variable "^--")) + +(tag_name) @tag +(universal_selector) @tag +(attribute_selector (plain_value) @string) +(nesting_selector) @variable.other.member +(pseudo_element_selector) @attribute +(pseudo_class_selector) @attribute + +(identifier) @variable +(class_name) @variable +(id_name) @variable +(namespace_name) @variable +(property_name) @variable.other.member +(feature_name) @variable +(variable) @variable +(variable_name) @variable.other.member +(variable_value) @variable.other.member +(argument_name) @variable.parameter +(selectors) @variable.other.member + +(attribute_name) @attribute + +(function_name) @function + +(to) @keyword +(from) @keyword +(important) @keyword + +(string_value) @string +(color_value) @string.special + +(integer_value) @constant.numeric.integer +(float_value) @constant.numeric.float +(unit) @type + +"#" @punctuation.delimiter +"," @punctuation.delimiter diff --git a/runtime/queries/scss/injections.scm b/runtime/queries/scss/injections.scm new file mode 100644 index 000000000..321c90add --- /dev/null +++ b/runtime/queries/scss/injections.scm @@ -0,0 +1,2 @@ +((comment) @injection.content + (#set! injection.language "comment"))