Support bracket colorization (rainbow brackets) (#43172)
Deals with https://github.com/zed-industries/zed/issues/5259 Highlights brackets with different colors based on their depth. Uses existing tree-sitter queries from brackets.scm to find brackets, uses theme's accents to color them. https://github.com/user-attachments/assets/cc5f3aba-22fa-446d-9af7-ba6e772029da 1. Adds `colorize_brackets` language setting that allows, per language or globally for all languages, to configure whether Zed should color the brackets for a particular language. Disabled for all languages by default. 2. Any given language can opt-out a certain bracket pair by amending the brackets.scm like `("\"" @open "\"" @close) ` -> `(("\"" @open "\"" @close) (#set! rainbow.exclude))` 3. Brackets are using colors from theme accents, which can be overridden as ```jsonc "theme_overrides": { "One Dark": { "accents": ["#ff69b4", "#7fff00", "#ff1493", "#00ffff", "#ff8c00", "#9400d3"] } }, ``` Release Notes: - Added bracket colorization (rainbow brackets) support. Use `colorize_brackets` language setting to enable. --------- Co-authored-by: MrSubidubi <dev@bahn.sh> Co-authored-by: Lukas Wirth <lukas@zed.dev> Co-authored-by: MrSubidubi <finn@zed.dev> Co-authored-by: Lukas Wirth <me@lukaswirth.dev> Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
This commit is contained in:
co-authored by
MrSubidubi
Lukas Wirth
MrSubidubi
Lukas Wirth
Smit Barmase
parent
e6e5ccbf10
commit
7e341bcf94
@@ -1,12 +1,12 @@
|
||||
("(" @open ")" @close)
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("`" @open "`" @close)
|
||||
(("do" @open "done" @close) (#set! newline.only))
|
||||
((case_statement ("in" @open "esac" @close)) (#set! newline.only))
|
||||
((if_statement (elif_clause ("then" @open)) (else_clause ("else" @close))) (#set! newline.only))
|
||||
((if_statement (else_clause ("else" @open)) "fi" @close) (#set! newline.only))
|
||||
((if_statement ("then" @open) (elif_clause ("elif" @close))) (#set! newline.only))
|
||||
((if_statement ("then" @open) (else_clause ("else" @close))) (#set! newline.only))
|
||||
((if_statement ("then" @open "fi" @close)) (#set! newline.only))
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("`" @open "`" @close) (#set! rainbow.exclude))
|
||||
(("do" @open "done" @close) (#set! newline.only) (#set! rainbow.exclude))
|
||||
((case_statement ("in" @open "esac" @close)) (#set! newline.only) (#set! rainbow.exclude))
|
||||
((if_statement (elif_clause ("then" @open)) (else_clause ("else" @close))) (#set! newline.only) (#set! rainbow.exclude))
|
||||
((if_statement (else_clause ("else" @open)) "fi" @close) (#set! newline.only) (#set! rainbow.exclude))
|
||||
((if_statement ("then" @open) (elif_clause ("elif" @close))) (#set! newline.only) (#set! rainbow.exclude))
|
||||
((if_statement ("then" @open) (else_clause ("else" @close))) (#set! newline.only) (#set! rainbow.exclude))
|
||||
((if_statement ("then" @open "fi" @close)) (#set! newline.only) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
("(" @open ")" @close)
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("'" @open "'" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
("(" @open ")" @close)
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("'" @open "'" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
("(" @open ")" @close)
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("'" @open "'" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
("(" @open ")" @close)
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("`" @open "`" @close)
|
||||
((rune_literal) @open @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("`" @open "`" @close) (#set! rainbow.exclude))
|
||||
((rune_literal) @open @close (#set! rainbow.exclude))
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
("<" @open ">" @close)
|
||||
("<" @open "/>" @close)
|
||||
("</" @open ">" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("'" @open "'" @close)
|
||||
("`" @open "`" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
(("`" @open "`" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
("(" @open ")" @close)
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("`" @open "`" @close)
|
||||
("'" @open "'" @close)
|
||||
((fenced_code_block_delimiter) @open (fenced_code_block_delimiter) @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("`" @open "`" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
(((fenced_code_block_delimiter) @open (fenced_code_block_delimiter) @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
("(" @open ")" @close)
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
((string_start) @open (string_end) @close)
|
||||
(((string_start) @open (string_end) @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("<" @open ">" @close)
|
||||
("\"" @open "\"" @close)
|
||||
(closure_parameters "|" @open "|" @close)
|
||||
("'" @open "'" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
("<" @open ">" @close)
|
||||
("<" @open "/>" @close)
|
||||
("</" @open ">" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("'" @open "'" @close)
|
||||
("`" @open "`" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
(("`" @open "`" @close) (#set! rainbow.exclude))
|
||||
|
||||
((jsx_element (jsx_opening_element) @open (jsx_closing_element) @close) (#set! newline.only))
|
||||
((jsx_element (jsx_opening_element) @open (jsx_closing_element) @close) (#set! newline.only) (#set! rainbow.exclude))
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("<" @open ">" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("'" @open "'" @close)
|
||||
("`" @open "`" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
(("`" @open "`" @close) (#set! rainbow.exclude))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
("[" @open "]" @close)
|
||||
("{" @open "}" @close)
|
||||
("\"" @open "\"" @close)
|
||||
("'" @open "'" @close)
|
||||
(("\"" @open "\"" @close) (#set! rainbow.exclude))
|
||||
(("'" @open "'" @close) (#set! rainbow.exclude))
|
||||
|
||||
Reference in New Issue
Block a user