81 lines
2.5 KiB
Nix
81 lines
2.5 KiB
Nix
{ pkgs, ... }:
|
|
|
|
with builtins;
|
|
{
|
|
config.home-manager.users.moritz.programs.neovim.lazy.plugins = with pkgs.vimPlugins; [
|
|
(
|
|
let
|
|
parserDir = pkgs.symlinkJoin {
|
|
name = "tresitter-grammars-all";
|
|
paths = pkgs.vimPlugins.nvim-treesitter.withAllGrammars.dependencies;
|
|
};
|
|
in
|
|
{
|
|
plugin = nvim-treesitter;
|
|
event = [ "BufReadPost" "BufNewFile" ];
|
|
opts = {
|
|
sync_install = false;
|
|
auto_install = false;
|
|
highlight = {
|
|
enable = true;
|
|
};
|
|
textobjects =
|
|
{
|
|
select =
|
|
{
|
|
enable = true;
|
|
|
|
# Automatically jump forward to textobj, similar to targets.vim
|
|
lookahead = false;
|
|
|
|
keymaps = {
|
|
# You can use the capture groups defined in textobjects.scm
|
|
"af" = {
|
|
query = "@function.outer";
|
|
desc = "Select outer part of a function region";
|
|
};
|
|
"if" = {
|
|
query = "@function.inner";
|
|
desc = "Select inner part of a function region";
|
|
};
|
|
"ac" = {
|
|
query = "@class.outer";
|
|
desc = "Select outer part of a class region";
|
|
};
|
|
"ic" = {
|
|
query = "@class.inner";
|
|
desc = "Select inner part of a class region";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
conf =
|
|
''
|
|
local final_opts = vim.tbl_deep_extend("keep", opts, { parser_install_dir = "${parserDir}" })
|
|
require('nvim-treesitter.configs').setup(final_opts)
|
|
'';
|
|
init = ''
|
|
local runtimepath = vim.opt.runtimepath:get()
|
|
table.insert(runtimepath, 4, "${parserDir}")
|
|
vim.opt.runtimepath = runtimepath
|
|
'';
|
|
priority = 100;
|
|
dependencies = [
|
|
{ plugin = nvim-treesitter-textobjects; }
|
|
{ plugin = nvim-ts-context-commentstring; opts = { }; }
|
|
];
|
|
}
|
|
)
|
|
{
|
|
plugin = nvim-treesitter-textsubjects;
|
|
event = [ "BufReadPost" "BufNewFile" ];
|
|
conf = readFile ./lua/nvim-treesitter-textsubjects.lua;
|
|
}
|
|
{
|
|
plugin = nvim-treesitter-context;
|
|
event = [ "BufReadPost" "BufNewFile" ];
|
|
opts = { };
|
|
}
|
|
];
|
|
}
|