mirror of
https://github.com/chenasraf/dotfiles.git
synced 2026-05-17 17:28:07 +00:00
feat(treesitter): install firestore rules parser
This commit is contained in:
@@ -95,6 +95,37 @@ return {
|
||||
|
||||
vim.filetype.add({ extension = { ejs = "ejs" } })
|
||||
vim.treesitter.language.register("embedded_template", "ejs")
|
||||
|
||||
-- Firestore Rules tree-sitter parser
|
||||
local parser_config = require('nvim-treesitter.parsers').get_parser_configs()
|
||||
parser_config.firestore_rules = {
|
||||
install_info = {
|
||||
url = "https://github.com/grimsteel/tree-sitter-firestore-rules",
|
||||
files = { "src/parser.c" },
|
||||
branch = "main",
|
||||
generate_requires_npm = false,
|
||||
requires_generate_from_grammar = false,
|
||||
},
|
||||
filetype = "firestorerules",
|
||||
}
|
||||
vim.filetype.add({
|
||||
pattern = {
|
||||
["firestore%.rules"] = "firestorerules",
|
||||
["storage%.rules"] = "firestorerules",
|
||||
[".*%.rules"] = {
|
||||
priority = -1,
|
||||
function(path, bufnr)
|
||||
local content = vim.api.nvim_buf_get_lines(bufnr, 0, 5, false)
|
||||
for _, line in ipairs(content) do
|
||||
if line:match("service%s+cloud%.firestore") or line:match("service%s+firebase%.storage") then
|
||||
return "firestorerules"
|
||||
end
|
||||
end
|
||||
end,
|
||||
},
|
||||
},
|
||||
})
|
||||
vim.treesitter.language.register("firestore_rules", "firestorerules")
|
||||
end, 0)
|
||||
end
|
||||
}
|
||||
|
||||
53
.config/nvim/queries/firestore_rules/highlights.scm
Normal file
53
.config/nvim/queries/firestore_rules/highlights.scm
Normal file
@@ -0,0 +1,53 @@
|
||||
(bool) @constant.builtin
|
||||
(type) @type.builtin
|
||||
(number) @number
|
||||
(hex_number) @number
|
||||
(string) @string
|
||||
(bytes) @string.special
|
||||
"null" @constant.builtin
|
||||
(action) @constant.builtin
|
||||
(path) @module
|
||||
(comment) @comment
|
||||
(function_block function_name: (ident) @function)
|
||||
(call function_name: (ident) @function)
|
||||
"cloud.firestore" @variable.builtin
|
||||
"rules_version" @variable.builtin
|
||||
[
|
||||
"match"
|
||||
"allow"
|
||||
"if"
|
||||
"return"
|
||||
"function"
|
||||
"let"
|
||||
"service"
|
||||
] @keyword
|
||||
[
|
||||
"*"
|
||||
"/"
|
||||
"+"
|
||||
"%"
|
||||
"in"
|
||||
"is"
|
||||
"-"
|
||||
">="
|
||||
"<="
|
||||
">"
|
||||
"<"
|
||||
"=="
|
||||
"="
|
||||
"!="
|
||||
"&&"
|
||||
"||"
|
||||
] @operator
|
||||
[
|
||||
":"
|
||||
";"
|
||||
] @punctuation.delimiter
|
||||
[
|
||||
"{"
|
||||
"}"
|
||||
"["
|
||||
"]"
|
||||
"("
|
||||
")"
|
||||
] @punctuation.bracket
|
||||
Reference in New Issue
Block a user