nixos/home/programs/nvim/plugins/treesitter.nix

52 lines
1.8 KiB
Nix

{ pkgs, ... }:
let
treesitter-blade-grammar = pkgs.tree-sitter.buildGrammar {
language = "blade";
version = "v0.11.0";
src = (pkgs.fetchFromGitHub {
owner = "EmranMR";
repo = "tree-sitter-blade";
rev = "a9997ceb8d2e0cd902fe649a33b476d37a0d6042";
hash = "sha256-PTGdsXlLoE+xlU0uWOU6LQalX4fhJ/qhpyEKmTAazLU=";
}).overrideAttrs (drv: {
fixupPhase = ''
mkdir -p $out/queries/blade
mv $out/queries/*.scm $out/queries/blade/
'';
});
meta.homepage = "https://github.com/EmranMR/tree-sitter-blade/";
};
in {
programs.nixvim = {
plugins.treesitter = {
enable = true;
nixGrammars = true;
settings = {
indent.enable = true;
highlight.enable = true;
};
grammarPackages = pkgs.vimPlugins.nvim-treesitter.passthru.allGrammars
++ [ treesitter-blade-grammar ];
luaConfig.post = ''
do
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
-- change the following as needed
parser_config.blade = {
install_info = {
url = "${treesitter-blade-grammar}", -- local path or git repo
files = {"src/parser.c"}, -- note that some parsers also require src/scanner.c or src/scanner.cc
-- optional entries:
-- branch = "main", -- default branch in case of git repo if different from master
-- generate_requires_npm = false, -- if stand-alone parser without npm dependencies
requires_generate_from_grammar = false, -- if folder contains pre-generated src/parser.c
},
filetype = "blade", -- if filetype does not match the parser name
}
end
'';
};
extraPlugins = [ treesitter-blade-grammar ];
};
}