TreeSitter for c-sharp in nvim
This commit is contained in:
parent
6f7d202eeb
commit
9364b5c328
@ -27,7 +27,27 @@
|
|||||||
sile = sile-flake.defaultPackage.${system};
|
sile = sile-flake.defaultPackage.${system};
|
||||||
jj = jj-flake.packages."${system}".jujutsu;
|
jj = jj-flake.packages."${system}".jujutsu;
|
||||||
age = agenix-flake.packages."${system}".default;
|
age = agenix-flake.packages."${system}".default;
|
||||||
in { config, pkgs, ... }: {
|
in { config, pkgs, ... }: let
|
||||||
|
nvim-treesitter-csharp = pkgs.callPackage ./nvim-treesitter-csharp.nix {
|
||||||
|
buildGrammar = pkgs.tree-sitter.buildGrammar;
|
||||||
|
fetchFromGitHub = pkgs.fetchFromGitHub;
|
||||||
|
};
|
||||||
|
expected-parsers = (pkgs.lib.attrVals [
|
||||||
|
"tree-sitter-rust"
|
||||||
|
"tree-sitter-lua"
|
||||||
|
"tree-sitter-toml"
|
||||||
|
"tree-sitter-yaml"
|
||||||
|
"tree-sitter-json"
|
||||||
|
#"tree-sitter-ini"
|
||||||
|
"tree-sitter-html"
|
||||||
|
"tree-sitter-css"
|
||||||
|
"tree-sitter-nix"
|
||||||
|
"tree-sitter-latex"
|
||||||
|
"tree-sitter-ocaml"
|
||||||
|
"tree-sitter-tlaplus"
|
||||||
|
"tree-sitter-julia"
|
||||||
|
] pkgs.tree-sitter.builtGrammars) ++ [nvim-treesitter-csharp];
|
||||||
|
in {
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
agenix-flake.nixosModules.default
|
agenix-flake.nixosModules.default
|
||||||
@ -69,7 +89,9 @@ EOF";
|
|||||||
vimspector
|
vimspector
|
||||||
vimagit
|
vimagit
|
||||||
hoon-vim
|
hoon-vim
|
||||||
nvim-treesitter
|
(nvim-treesitter.withPlugins (_: expected-parsers))
|
||||||
|
nvim-treesitter-context
|
||||||
|
nvim-treesitter-parsers.ini
|
||||||
omnisharp-extended-lsp-nvim
|
omnisharp-extended-lsp-nvim
|
||||||
#neotest-dotnet
|
#neotest-dotnet
|
||||||
nix-develop-nvim
|
nix-develop-nvim
|
||||||
@ -80,21 +102,7 @@ EOF";
|
|||||||
telescope-nvim
|
telescope-nvim
|
||||||
telescope-lsp-handlers-nvim
|
telescope-lsp-handlers-nvim
|
||||||
plenary-nvim
|
plenary-nvim
|
||||||
] ++ (with nvim-treesitter-parsers; [
|
];
|
||||||
rust
|
|
||||||
lua
|
|
||||||
toml
|
|
||||||
yaml
|
|
||||||
json
|
|
||||||
ini
|
|
||||||
html
|
|
||||||
css
|
|
||||||
nix
|
|
||||||
latex
|
|
||||||
ocaml
|
|
||||||
tlaplus
|
|
||||||
julia
|
|
||||||
]);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ vim.cmd.colorscheme 'duskfox'
|
|||||||
-- turn on relative line numbers
|
-- turn on relative line numbers
|
||||||
vim.opt.relativenumber = true
|
vim.opt.relativenumber = true
|
||||||
vim.opt.number = true
|
vim.opt.number = true
|
||||||
vim.o.expandtab = false
|
vim.o.expandtab = true
|
||||||
vim.o.paste = false
|
vim.o.paste = false
|
||||||
vim.o.autoindent = true
|
vim.o.autoindent = true
|
||||||
vim.o.linebreak = true
|
vim.o.linebreak = true
|
||||||
@ -62,8 +62,8 @@ lspconfig.nil_ls.setup{{
|
|||||||
local vim_pid = vim.fn.getpid()
|
local vim_pid = vim.fn.getpid()
|
||||||
|
|
||||||
-- "FormatterOptions:EnableEditorConfigSupport=true"
|
-- "FormatterOptions:EnableEditorConfigSupport=true"
|
||||||
local omnisharp_cmd = { tostring(vim.env.OMNISHARP_BIN), '--languageserver', '--hostPID', tostring(vim_pid), }
|
local omnisharp_cmd = { 'omnisharp', '--languageserver', '-v', '--hostPID', tostring(vim_pid), }
|
||||||
-- This needs a path to the omnisharp dll provided. We depend on the OMNISHARP_BIN environment variable being set to make this work.
|
|
||||||
lspconfig.omnisharp.setup {
|
lspconfig.omnisharp.setup {
|
||||||
cmd = omnisharp_cmd,
|
cmd = omnisharp_cmd,
|
||||||
enable_roslyn_analyzers = true,
|
enable_roslyn_analyzers = true,
|
||||||
@ -76,7 +76,6 @@ lspconfig.omnisharp.setup {
|
|||||||
handlers = {
|
handlers = {
|
||||||
["textDocument/definition"] = require('omnisharp_extended').handler,
|
["textDocument/definition"] = require('omnisharp_extended').handler,
|
||||||
},
|
},
|
||||||
-- TODO(jwall): See if init_options can assist in getting our lint setting correct.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--ocaml
|
--ocaml
|
||||||
@ -106,10 +105,17 @@ vim.api.nvim_create_autocmd('LspAttach', {
|
|||||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
|
||||||
vim.keymap.set("n", "<Leader>f", vim.lsp.buf.format, opts)
|
vim.keymap.set("n", "<Leader>f", vim.lsp.buf.format, opts)
|
||||||
-- We use F2 to rename things
|
-- We use F2 to rename things
|
||||||
vim.keymap.set("n", "<F2>", vim.lsp.buf.rename, opts)
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({'LspAttach', 'BufEnter', 'InsertLeave', 'CursorHold'}, {
|
||||||
|
callback = function(ev)
|
||||||
|
if vim.lsp.buf.server_ready() then
|
||||||
|
vim.lsp.codelens.refresh()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
-- LSP Diagnostics Options Setup
|
-- LSP Diagnostics Options Setup
|
||||||
local sign = function(opts)
|
local sign = function(opts)
|
||||||
vim.fn.sign_define(opts.name, {
|
vim.fn.sign_define(opts.name, {
|
||||||
@ -180,7 +186,46 @@ require('nvim-treesitter.configs').setup {
|
|||||||
enable = true,
|
enable = true,
|
||||||
extended_mode = true,
|
extended_mode = true,
|
||||||
max_file_lines = nil,
|
max_file_lines = nil,
|
||||||
}
|
},
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||||
|
keymaps = {
|
||||||
|
-- You can use the capture groups defined in textobjects.scm
|
||||||
|
['aa'] = '@parameter.outer',
|
||||||
|
['ia'] = '@parameter.inner',
|
||||||
|
['af'] = '@function.outer',
|
||||||
|
['if'] = '@function.inner',
|
||||||
|
['ac'] = '@class.outer',
|
||||||
|
['ic'] = '@class.inner',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
--incremental_selection = {
|
||||||
|
-- enable = true,
|
||||||
|
-- keymaps = {
|
||||||
|
-- init_selection = '<Leader>c',
|
||||||
|
-- node_incremental = '<Leader>c',
|
||||||
|
-- scope_incremental = '<Leader>ci',
|
||||||
|
-- node_decremental = '<Leader>cx',
|
||||||
|
-- },
|
||||||
|
--},
|
||||||
|
}
|
||||||
|
|
||||||
|
require'treesitter-context'.setup {
|
||||||
|
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
|
||||||
|
max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
|
||||||
|
min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
|
||||||
|
line_numbers = true,
|
||||||
|
multiline_threshold = 20, -- Maximum number of lines to collapse for a single context line
|
||||||
|
trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
|
||||||
|
mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline'
|
||||||
|
-- Separator between context and content. Should be a single character string, like '-'.
|
||||||
|
-- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
|
||||||
|
separator = nil,
|
||||||
|
zindex = 20, -- The Z-index of the context window
|
||||||
|
on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
|
||||||
}
|
}
|
||||||
|
|
||||||
vim.g.loaded_netrw = 1
|
vim.g.loaded_netrw = 1
|
||||||
|
11
nix/base-system/nvim-treesitter-csharp.nix
Normal file
11
nix/base-system/nvim-treesitter-csharp.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{ buildGrammar, fetchFromGitHub, pkgs, }:
|
||||||
|
buildGrammar {
|
||||||
|
language = "c-sharp";
|
||||||
|
version = "0.20.0-master";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "tree-sitter";
|
||||||
|
repo = "tree-sitter-c-sharp";
|
||||||
|
rev = "1648e21b4f087963abf0101ee5221bb413107b07";
|
||||||
|
hash = "sha256-WvkHtw8t14UNqiJvmS9dbGYQSVVzHS9mcWzxq+KLMnU=";#pkgs.lib.fakeHash;
|
||||||
|
};
|
||||||
|
}
|
6
nix/darwin/flake.lock
generated
6
nix/darwin/flake.lock
generated
@ -34,12 +34,12 @@
|
|||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1,
|
"lastModified": 1,
|
||||||
"narHash": "sha256-RUsYDEHzM9vCyjCifvicGOS/Bnj/vFPFz7WVdjId6U0=",
|
"narHash": "sha256-LdDXr6idLkkTeHwlq0ZA7kri4HMr124xABHowvooD/c=",
|
||||||
"path": "/nix/store/zpffamlg727zid5pkx7vs1ca7q07vkgk-source/nix/base-system",
|
"path": "/nix/store/hhwybysgssx8f4ivff8yhagm6iyqgis9-source/nix/base-system",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"path": "/nix/store/zpffamlg727zid5pkx7vs1ca7q07vkgk-source/nix/base-system",
|
"path": "/nix/store/hhwybysgssx8f4ivff8yhagm6iyqgis9-source/nix/base-system",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user