add: blade treesitter config

This commit is contained in:
asep.komarudin 2024-06-25 10:25:26 +07:00
parent b9949062dc
commit fbc8a53840
19 changed files with 177 additions and 14 deletions

1
after/ftplugin/blade.lua Normal file
View file

@ -0,0 +1 @@
vim.bo.commentstring = '{{-- %s --}}'

1
after/ftplugin/php.lua Normal file
View file

@ -0,0 +1 @@
vim.bo.commentstring = '// %s'

1
after/ftplugin/vue.lua Normal file
View file

@ -0,0 +1 @@
vim.bo.commentstring = '<!-- %s -->'

View file

@ -0,0 +1,4 @@
(directive) @tag
(directive_start) @tag
(directive_end) @tag
(comment) @comment @spell

View file

@ -0,0 +1,16 @@
((text) @injection.content
(#not-has-ancestor? @injection.content "envoy")
(#set! injection.combined)
(#set! injection.language php))
((text) @injection.content
(#has-ancestor? @injection.content "envoy")
(#set! injection.combined)
(#set! injection.language bash))
((php_only) @injection.content
(#set! injection.combined)
(#set! injection.language php_only))
((parameter) @injection.content
(#set! injection.language php_only))

View file

@ -0,0 +1,36 @@
;; extends
; AlpineJS attributes
(attribute
(attribute_name) @_attr
(#lua-match? @_attr "^x%-%l")
(#not-any-of? @_attr "x-teleport" "x-ref" "x-transition")
(quoted_attribute_value
(attribute_value) @injection.content)
(#set! injection.language "javascript"))
; Blade escaped JS attributes
; <x-foo ::bar="baz" />
(element
(_
(tag_name) @_tag
(#lua-match? @_tag "^x%-%l")
(attribute
(attribute_name) @_attr
(#lua-match? @_attr "^::%l")
(quoted_attribute_value
(attribute_value) @injection.content)
(#set! injection.language "javascript"))))
; Blade PHP attributes
; <x-foo :bar="$baz" />
(element
(_
(tag_name) @_tag
(#lua-match? @_tag "^x%-%l")
(attribute
(attribute_name) @_attr
(#lua-match? @_attr "^:%l")
(quoted_attribute_value
(attribute_value) @injection.content)
(#set! injection.language "php_only"))))

View file

@ -0,0 +1,10 @@
;; extends
[
; prevent double indent for `return new class ...`
(return_statement
(object_creation_expression))
; prevent double indent for `return function() { ... }`
(return_statement
(anonymous_function_creation_expression))
] @indent.dedent

View file

@ -0,0 +1,9 @@
;; extends
; ((text) @injection.content
; (#set! injection.language "html")
; (#set! injection.combined))
; ((php) @injection.content
; (#set! injection.language "php_only")
; (#set! injection.combined))

View file

@ -19,6 +19,7 @@
"friendly-snippets": { "branch": "main", "commit": "682157939e57bd6a2c86277dfd4d6fbfce63dbac" },
"gitsigns.nvim": { "branch": "main", "commit": "0b04035bb7b3c83e999b9676e2fb46fd0aa9f910" },
"indent-blankline.nvim": { "branch": "master", "commit": "4036c8ae9cc29faf8e6443fa5b23e679db055d24" },
"laravel.nvim": { "branch": "main", "commit": "8aaf614b5c8fc045f75ebc2ba69d68e33847b06d" },
"lazy.nvim": { "branch": "main", "commit": "378bfb465673a747e9e9f966e518063499e20cfe" },
"lsp-progress.nvim": { "branch": "main", "commit": "55a04895ea20c365b670051a3128265d43bdfa3d" },
"lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" },
@ -28,7 +29,6 @@
"mini.indentscope": { "branch": "main", "commit": "56d42be090e8fcc68eda69cfe55af8c5e562300e" },
"neoscroll.nvim": { "branch": "master", "commit": "a731f66f1d39ec6175fd201c5bf849e54abda99c" },
"neotest": { "branch": "master", "commit": "f30bab1faef13d47f3905e065215c96a42d075ad" },
"neotest-gtest": { "branch": "main", "commit": "b44c8afc26cea75ffc80617ce07b4e745a56e589" },
"neotest-phpunit": { "branch": "main", "commit": "baae8dfa0a3aaacd9f0bb6845d6348f5bcdc48bb" },
"noice.nvim": { "branch": "main", "commit": "d580646db85f49b8226d52b143a458161f41954a" },
"none-ls-extras.nvim": { "branch": "main", "commit": "336e84b9e43c0effb735b08798ffac382920053b" },
@ -48,6 +48,7 @@
"nvim-scrollview": { "branch": "main", "commit": "fd334e5ad0c616987d1b9114890a59c97165cf83" },
"nvim-tree.lua": { "branch": "master", "commit": "2086e564c4d23fea714e8a6d63b881e551af2f41" },
"nvim-treesitter": { "branch": "master", "commit": "d4a888ae3cff358cb239643c45b2b38bb60e29c6" },
"nvim-treesitter-context": { "branch": "master", "commit": "5efba33af0f39942e426340da7bc15d7dec16474" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" },
"nvim-ts-autotag": { "branch": "main", "commit": "ddfccbf0df1b9349c2b9e9b17f4afa8f9b6c1ed1" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "cb064386e667def1d241317deed9fd1b38f0dc2e" },
@ -59,7 +60,6 @@
"smart-splits.nvim": { "branch": "master", "commit": "66fda3a601a5b4c679656f15eb6ddd613c8d3216" },
"telescope.nvim": { "branch": "master", "commit": "f2bfde705ac752c52544d5cfa8b0aee0a766c1ed" },
"tiny-devicons-auto-colors.nvim": { "branch": "main", "commit": "9be4af5b1bc1f26a11206ed7ce8bf44312e7941a" },
"todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
"toggleterm.nvim": { "branch": "main", "commit": "fee58a0473fd92b28c34f8f724e4918b15ba30a3" },
"vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" },
"vim-startuptime": { "branch": "master", "commit": "97a88e688482a09c3c4b777d07b509b328a5ec29" },

View file

@ -1,4 +1,9 @@
_G.pcode = _G.pcode or {}
vim.filetype.add({
pattern = {
[".*%.blade%.php"] = "blade",
},
})
require("custom.default")
require("custom.dashboard")
require("config.lazy_lib")

View file

@ -132,7 +132,7 @@ pcode.columnline = true
pcode.auto_save = true
-- https://github.com/folke/todo-comments.nvim
pcode.todo_comment = true
pcode.todo_comment = false
-- https://github.com/nvim-telescope/telescope.nvim
---@alias telescope_themes
@ -165,7 +165,7 @@ pcode.active_javascript_config = {
pcode.active_php_config = true
pcode.active_golang_config = false
pcode.active_python_config = false
pcode.active_cpp_config = true
pcode.active_cpp_config = false
pcode.active_java_config = {
active = false,
project = "gradle", -- gradle or maven

View file

@ -116,6 +116,24 @@ if pcode.active_php_config then
require("lint").linters_by_ft = opts.linters_by_ft
end,
},
{
"adalessa/laravel.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
-- "tpope/vim-dotenv",
"MunifTanjim/nui.nvim",
"nvimtools/none-ls.nvim",
},
cmd = { "Sail", "Artisan", "Composer", "Npm", "Yarn", "Laravel" },
keys = {
{ "<leader>L", "", desc = " 󰫐 Laravel" },
{ "<leader>La", ":Laravel artisan<cr>", desc = "Artisan" },
{ "<leader>Lr", ":Laravel routes<cr>", desc = "Routes" },
{ "<leader>Lm", ":Laravel related<cr>", desc = "Related" },
},
event = { "VeryLazy" },
config = true,
},
}
end

View file

@ -56,7 +56,7 @@ if pcode.active_javascript_config.active then
end
-- run if php config true
if pcode.active_php_config then
local lst_ts = { "php", "phpdoc" }
local lst_ts = { "html", "php_only", "php", "bash", "blade" }
for _, ts in pairs(lst_ts) do
table.insert(pcode.treesitter_ensure_installed, ts)
end

View file

@ -1,11 +1,3 @@
local ts_list = {
"lua",
"vim",
"vimdoc",
}
for _, ts in pairs(pcode.treesitter_ensure_installed or {}) do
table.insert(ts_list, ts)
end
return {
{
"nvim-treesitter/nvim-treesitter",
@ -73,7 +65,7 @@ return {
return {
highlight = { enable = true },
indent = { enable = true },
ensure_installed = ts_list,
ensure_installed = {},
incremental_selection = {
enable = true,
},

View file

@ -0,0 +1,36 @@
local ts_list = {
"lua",
"vim",
"vimdoc",
}
for _, ts in pairs(pcode.treesitter_ensure_installed or {}) do
table.insert(ts_list, ts)
end
return {
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = ts_list,
},
config = function(_, opts)
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
parser_config.blade = {
install_info = {
url = "https://github.com/EmranMR/tree-sitter-blade",
files = { "src/parser.c" },
branch = "main",
},
filetype = "blade",
}
vim.filetype.add({
pattern = {
[".*%.blade%.php"] = "blade",
},
})
require("nvim-treesitter.configs").setup(opts)
end,
},
}

View file

@ -80,6 +80,12 @@ vim.api.nvim_create_autocmd("FileType", {
end,
})
vim.filetype.add({
pattern = {
[".*%.blade%.php"] = "blade",
},
})
-- Autoformat
-- augroup _lsp
-- autocmd!

8
queries/blade/folds.scm Normal file
View file

@ -0,0 +1,8 @@
((directive_start) @start
(directive_end) @end.after
(#set! role block))
((bracket_start) @start
(bracket_end) @end
(#set! role block))

View file

@ -0,0 +1,4 @@
(directive) @tag
(directive_start) @tag
(directive_end) @tag
(comment) @comment @spell

View file

@ -0,0 +1,16 @@
((text) @injection.content
(#not-has-ancestor? @injection.content "envoy")
(#set! injection.combined)
(#set! injection.language php))
((text) @injection.content
(#has-ancestor? @injection.content "envoy")
(#set! injection.combined)
(#set! injection.language bash))
((php_only) @injection.content
(#set! injection.combined)
(#set! injection.language php_only))
((parameter) @injection.content
(#set! injection.language php_only))