73 lines
3.2 KiB
Nix
73 lines
3.2 KiB
Nix
|
{ pkgs, lib, config, ... }:
|
||
|
{
|
||
|
config = {
|
||
|
programs.nixvim = {
|
||
|
extraConfigLua = ''
|
||
|
require'lsp_signature'.on_attach({
|
||
|
hint_enable = false,
|
||
|
})
|
||
|
'';
|
||
|
extraPlugins = with pkgs.vimPlugins; [
|
||
|
# Language server
|
||
|
lsp_signature-nvim # Show argument definition when typing a function
|
||
|
];
|
||
|
keymaps = [
|
||
|
# barbar
|
||
|
{ key = "<C-H>"; action = "<Cmd>BufferPrevious<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-L>"; action = "<Cmd>BufferNext<CR>"; options = { silent = true; }; }
|
||
|
# TODO https://www.reddit.com/r/neovim/comments/mbj8m5/how_to_setup_ctrlshiftkey_mappings_in_neovim_and/
|
||
|
{ key = "<Space><C-H>"; action = "<Cmd>BufferMovePrevious<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<Space><C-L>"; action = "<Cmd>BufferMoveNext<CR>"; options = { silent = true; }; }
|
||
|
# TODO gotos don't work
|
||
|
{ key = "<C-1>"; action = "<Cmd>BufferGoto 1<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-2>"; action = "<Cmd>BufferGoto 2<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-3>"; action = "<Cmd>BufferGoto 3<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-4>"; action = "<Cmd>BufferGoto 4<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-5>"; action = "<Cmd>BufferGoto 5<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-6>"; action = "<Cmd>BufferGoto 6<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-7>"; action = "<Cmd>BufferGoto 7<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-8>"; action = "<Cmd>BufferGoto 8<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-9>"; action = "<Cmd>BufferGoto 9<CR>"; options = { silent = true; }; }
|
||
|
{ key = "<C-0>"; action = "<Cmd>BufferLast<CR>"; options = { silent = true; }; }
|
||
|
{ key = "gb"; action = "<Cmd>BufferPick<CR>"; options = { silent = true; }; }
|
||
|
# TODO Other useful options?
|
||
|
];
|
||
|
plugins = {
|
||
|
# Language Server
|
||
|
lsp = {
|
||
|
enable = true;
|
||
|
keymaps = {
|
||
|
silent = true;
|
||
|
diagnostic = {
|
||
|
"<Space>e" = "open_float";
|
||
|
"[e" = "goto_prev";
|
||
|
"]e" = "goto_next";
|
||
|
};
|
||
|
lspBuf = {
|
||
|
"gD" = "declaration";
|
||
|
"K" = "hover";
|
||
|
"gi" = "implementation";
|
||
|
"<C-S-k>" = "signature_help";
|
||
|
"<space>wa" = "add_workspace_folder";
|
||
|
"<space>wr" = "remove_workspace_folder";
|
||
|
# "<space>wl" = "list_workspace_folder";
|
||
|
# TODO Full thing was function() print(vim.inspect(vim.lsp.buf.list_workspace_folder())) end but not sure I'm ever really using this
|
||
|
# Also makes nvim crash like this, so uncommented
|
||
|
"<space>D" = "type_definition";
|
||
|
"<space>rn" = "rename";
|
||
|
"<space>f" = "format";
|
||
|
# TODO Full thing was function() vim.lsp.buf.format { async = true } end, so async while this isn't
|
||
|
# Maybe replace this with lsp-format?
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
nvim-lightbulb = {
|
||
|
# Shows a lightbulb whenever a codeAction is available under the cursor
|
||
|
enable = true;
|
||
|
autocmd.enabled = true;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|