dotfiles/modules/common/neovim/config/syntax.nix

73 lines
2.0 KiB
Nix
Raw Permalink Normal View History

{ pkgs, lib, ... }: {
2022-11-28 00:21:18 +00:00
plugins = [
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins:
with pkgs.tree-sitter-grammars; [
tree-sitter-bash
tree-sitter-fish
tree-sitter-hcl
2023-07-09 23:22:41 +00:00
tree-sitter-ini
tree-sitter-json
tree-sitter-lua
tree-sitter-markdown
tree-sitter-markdown-inline
tree-sitter-nix
2023-07-09 23:22:41 +00:00
tree-sitter-puppet
tree-sitter-python
2023-07-09 23:22:41 +00:00
tree-sitter-rasi
tree-sitter-toml
tree-sitter-yaml
]))
2022-11-28 00:21:18 +00:00
pkgs.vimPlugins.vim-matchup # Better % jumping in languages
pkgs.vimPlugins.playground # Tree-sitter experimenting
2022-11-28 00:21:18 +00:00
pkgs.vimPlugins.nginx-vim
pkgs.vimPlugins.vim-helm
pkgs.baleia-nvim # Clean ANSI from kitty scrollback
2023-08-04 05:14:05 +00:00
# pkgs.hmts-nvim # Tree-sitter injections for home-manager
(pkgs.vimUtils.buildVimPluginFrom2Nix {
pname = "nmasur";
version = "0.1";
src = ../plugin;
})
2022-11-28 00:21:18 +00:00
];
setup."nvim-treesitter.configs" = {
highlight = { enable = true; };
indent = { enable = true; };
2023-07-09 23:22:41 +00:00
matchup = { enable = true; }; # Uses vim-matchup
2022-11-28 00:21:18 +00:00
textobjects = {
select = {
enable = true;
lookahead = true; # Jump forward automatically
keymaps = {
"['af']" = "@function.outer";
"['if']" = "@function.inner";
"['ac']" = "@class.outer";
"['ic']" = "@class.inner";
"['al']" = "@loop.outer";
"['il']" = "@loop.inner";
"['aa']" = "@call.outer";
"['ia']" = "@call.inner";
"['ar']" = "@parameter.outer";
"['ir']" = "@parameter.inner";
"['aC']" = "@comment.outer";
"['iC']" = "@comment.outer";
"['a/']" = "@comment.outer";
"['i/']" = "@comment.outer";
"['a;']" = "@statement.outer";
"['i;']" = "@statement.outer";
};
};
};
};
# Use mkAfter to ensure tree-sitter is already loaded
lua = lib.mkAfter ''
-- Use HCL parser with .tf files
vim.treesitter.language.register('hcl', 'terraform')
'';
2022-11-28 00:21:18 +00:00
}