split neovim config into multiple files
This commit is contained in:
parent
038def11c9
commit
01e3239e16
9 changed files with 183 additions and 180 deletions
14
home-manager/neovim/bufferline.lua
Normal file
14
home-manager/neovim/bufferline.lua
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
require("bufferline").setup{
|
||||||
|
options = {
|
||||||
|
diagnostics = 'nvim_lsp',
|
||||||
|
diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
||||||
|
local icon = level:match("error") and " " or " "
|
||||||
|
return " " .. icon .. count
|
||||||
|
end,
|
||||||
|
separator_style = "slant",
|
||||||
|
hover = {
|
||||||
|
enabled = true,
|
||||||
|
reveal = {'close'},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
46
home-manager/neovim/cmp.lua
Normal file
46
home-manager/neovim/cmp.lua
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
local cmp = require('cmp')
|
||||||
|
local luasnip = require('luasnip')
|
||||||
|
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
luasnip.config.setup {}
|
||||||
|
|
||||||
|
cmp.setup {
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert {
|
||||||
|
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||||
|
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||||
|
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
['<C-Space>'] = cmp.mapping.complete {},
|
||||||
|
['<CR>'] = cmp.mapping.confirm {
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = true,
|
||||||
|
},
|
||||||
|
['<Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_locally_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.locally_jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
},
|
||||||
|
}
|
9
home-manager/neovim/core.lua
Normal file
9
home-manager/neovim/core.lua
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
vim.o.background = "dark"
|
||||||
|
vim.cmd([[colorscheme gruvbox]])
|
||||||
|
vim.g.mapleader = ";"
|
||||||
|
vim.o.signcolumn = "yes"
|
||||||
|
vim.wo.number = true
|
||||||
|
vim.wo.relativenumber = true
|
||||||
|
vim.wo.cursorline = true
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
vim.o.mousemoveevent = true
|
|
@ -8,7 +8,7 @@
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
vimdiffAlias = true;
|
vimdiffAlias = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
extraLuaConfig = builtins.readFile ./neovim.lua;
|
extraLuaConfig = builtins.readFile ./core.lua;
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
nil
|
nil
|
||||||
|
@ -19,21 +19,53 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
plugins = with pkgs.vimPlugins; [
|
||||||
nvim-lspconfig
|
{
|
||||||
|
plugin = nvim-lspconfig;
|
||||||
|
type = "lua";
|
||||||
|
config = builtins.readFile ./lspconfig.lua;
|
||||||
|
}
|
||||||
gruvbox-nvim
|
gruvbox-nvim
|
||||||
leap-nvim
|
{
|
||||||
telescope-nvim
|
plugin = leap-nvim;
|
||||||
vim-commentary
|
type = "lua";
|
||||||
|
config = builtins.readFile ./leap.lua;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = telescope-nvim;
|
||||||
|
type = "lua";
|
||||||
|
config = builtins.readFile ./telescope.lua;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = vim-commentary;
|
||||||
|
type = "lua";
|
||||||
|
config = "vim.cmd([[autocmd FileType nix setlocal commentstring=#\ %s]])";
|
||||||
|
}
|
||||||
vim-sleuth
|
vim-sleuth
|
||||||
gitsigns-nvim
|
{
|
||||||
nvim-cmp
|
plugin = gitsigns-nvim;
|
||||||
|
type = "lua";
|
||||||
|
config = "require(\"gitsigns\").setup()";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = nvim-cmp;
|
||||||
|
type = "lua";
|
||||||
|
config = builtins.readFile ./cmp.lua;
|
||||||
|
}
|
||||||
cmp-nvim-lsp
|
cmp-nvim-lsp
|
||||||
friendly-snippets
|
friendly-snippets
|
||||||
neodev-nvim
|
neodev-nvim
|
||||||
luasnip
|
luasnip
|
||||||
cmp_luasnip
|
cmp_luasnip
|
||||||
nvim-treesitter.withAllGrammars
|
{
|
||||||
bufferline-nvim
|
plugin = nvim-treesitter.withAllGrammars;
|
||||||
|
type = "lua";
|
||||||
|
config = builtins.readFile ./treesitter.lua;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = bufferline-nvim;
|
||||||
|
type = "lua";
|
||||||
|
config = builtins.readFile ./bufferline.lua;
|
||||||
|
}
|
||||||
nvim-web-devicons
|
nvim-web-devicons
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
4
home-manager/neovim/leap.lua
Normal file
4
home-manager/neovim/leap.lua
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
require('leap').add_default_mappings()
|
||||||
|
-- Don't remap 'x' in visual mode.
|
||||||
|
vim.keymap.del({'x', 'o'}, 'x')
|
||||||
|
vim.keymap.del({'x', 'o'}, 'X')
|
33
home-manager/neovim/lspconfig.lua
Normal file
33
home-manager/neovim/lspconfig.lua
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
local on_attach = function(_, bufnr)
|
||||||
|
|
||||||
|
local bufmap = function(keys, func)
|
||||||
|
vim.keymap.set('n', keys, func, { buffer = bufnr })
|
||||||
|
end
|
||||||
|
|
||||||
|
bufmap('<leader>r', vim.lsp.buf.rename)
|
||||||
|
bufmap('<leader>a', vim.lsp.buf.code_action)
|
||||||
|
|
||||||
|
bufmap('gd', vim.lsp.buf.definition)
|
||||||
|
bufmap('gD', vim.lsp.buf.declaration)
|
||||||
|
bufmap('gI', vim.lsp.buf.implementation)
|
||||||
|
bufmap('<leader>D', vim.lsp.buf.type_definition)
|
||||||
|
|
||||||
|
bufmap('gr', require('telescope.builtin').lsp_references)
|
||||||
|
bufmap('<leader>s', require('telescope.builtin').lsp_document_symbols)
|
||||||
|
bufmap('<leader>S', require('telescope.builtin').lsp_dynamic_workspace_symbols)
|
||||||
|
|
||||||
|
bufmap('K', vim.lsp.buf.hover)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
||||||
|
vim.lsp.buf.format()
|
||||||
|
end, {})
|
||||||
|
end
|
||||||
|
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||||
|
|
||||||
|
require('neodev').setup()
|
||||||
|
require'lspconfig'.nil_ls.setup{ on_attach = on_attach, capabilities = capabilities }
|
||||||
|
require'lspconfig'.pyright.setup{ on_attach = on_attach, capabilities = capabilities }
|
||||||
|
require'lspconfig'.gopls.setup{ on_attach = on_attach, capabilities = capabilities }
|
||||||
|
require'lspconfig'.terraformls.setup{ on_attach = on_attach, capabilities = capabilities }
|
|
@ -1,171 +0,0 @@
|
||||||
--[ GLOBAL ]--
|
|
||||||
|
|
||||||
vim.o.background = "dark"
|
|
||||||
vim.cmd([[colorscheme gruvbox]])
|
|
||||||
vim.g.mapleader = ";"
|
|
||||||
vim.o.signcolumn = "yes"
|
|
||||||
vim.wo.number = true
|
|
||||||
vim.wo.relativenumber = true
|
|
||||||
vim.wo.cursorline = true
|
|
||||||
vim.opt.termguicolors = true
|
|
||||||
vim.o.mousemoveevent = true
|
|
||||||
|
|
||||||
--[ LSPCONFIG ]--
|
|
||||||
|
|
||||||
local on_attach = function(_, bufnr)
|
|
||||||
|
|
||||||
local bufmap = function(keys, func)
|
|
||||||
vim.keymap.set('n', keys, func, { buffer = bufnr })
|
|
||||||
end
|
|
||||||
|
|
||||||
bufmap('<leader>r', vim.lsp.buf.rename)
|
|
||||||
bufmap('<leader>a', vim.lsp.buf.code_action)
|
|
||||||
|
|
||||||
bufmap('gd', vim.lsp.buf.definition)
|
|
||||||
bufmap('gD', vim.lsp.buf.declaration)
|
|
||||||
bufmap('gI', vim.lsp.buf.implementation)
|
|
||||||
bufmap('<leader>D', vim.lsp.buf.type_definition)
|
|
||||||
|
|
||||||
bufmap('gr', require('telescope.builtin').lsp_references)
|
|
||||||
bufmap('<leader>s', require('telescope.builtin').lsp_document_symbols)
|
|
||||||
bufmap('<leader>S', require('telescope.builtin').lsp_dynamic_workspace_symbols)
|
|
||||||
|
|
||||||
bufmap('K', vim.lsp.buf.hover)
|
|
||||||
|
|
||||||
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
|
||||||
vim.lsp.buf.format()
|
|
||||||
end, {})
|
|
||||||
end
|
|
||||||
|
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
|
||||||
|
|
||||||
require('neodev').setup()
|
|
||||||
require'lspconfig'.nil_ls.setup{ on_attach = on_attach, capabilities = capabilities }
|
|
||||||
require'lspconfig'.pyright.setup{ on_attach = on_attach, capabilities = capabilities }
|
|
||||||
require'lspconfig'.gopls.setup{ on_attach = on_attach, capabilities = capabilities }
|
|
||||||
require'lspconfig'.terraformls.setup{ on_attach = on_attach, capabilities = capabilities }
|
|
||||||
|
|
||||||
--[ LEAP ]--
|
|
||||||
|
|
||||||
require('leap').add_default_mappings()
|
|
||||||
-- Don't remap 'x' in visual mode.
|
|
||||||
vim.keymap.del({'x', 'o'}, 'x')
|
|
||||||
vim.keymap.del({'x', 'o'}, 'X')
|
|
||||||
|
|
||||||
--[ TELESCOPE ]--
|
|
||||||
|
|
||||||
local builtin = require('telescope.builtin')
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
|
||||||
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
|
||||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
|
||||||
vim.keymap.set('n', '<leader>fr', builtin.lsp_references, {})
|
|
||||||
vim.keymap.set('n', '<leader>fs', builtin.lsp_document_symbols, {})
|
|
||||||
|
|
||||||
require('telescope').setup{
|
|
||||||
pickers = {
|
|
||||||
find_files = {
|
|
||||||
theme = "dropdown"
|
|
||||||
},
|
|
||||||
live_grep = {
|
|
||||||
theme = "dropdown"
|
|
||||||
},
|
|
||||||
buffers = {
|
|
||||||
theme = "dropdown"
|
|
||||||
},
|
|
||||||
lsp_references = {
|
|
||||||
theme = "dropdown"
|
|
||||||
},
|
|
||||||
lsp_document_symbols = {
|
|
||||||
theme = "dropdown"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--[ COMMENTARY ]--
|
|
||||||
|
|
||||||
vim.cmd([[autocmd FileType nix setlocal commentstring=#\ %s]])
|
|
||||||
|
|
||||||
--[ GITSIGNS ]--
|
|
||||||
|
|
||||||
require("gitsigns").setup()
|
|
||||||
|
|
||||||
--[ CMP ]--
|
|
||||||
|
|
||||||
local cmp = require('cmp')
|
|
||||||
local luasnip = require('luasnip')
|
|
||||||
|
|
||||||
require('luasnip.loaders.from_vscode').lazy_load()
|
|
||||||
luasnip.config.setup {}
|
|
||||||
|
|
||||||
cmp.setup {
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
luasnip.lsp_expand(args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
mapping = cmp.mapping.preset.insert {
|
|
||||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
|
||||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
|
||||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
|
||||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
|
||||||
['<C-Space>'] = cmp.mapping.complete {},
|
|
||||||
['<CR>'] = cmp.mapping.confirm {
|
|
||||||
behavior = cmp.ConfirmBehavior.Replace,
|
|
||||||
select = true,
|
|
||||||
},
|
|
||||||
['<Tab>'] = cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_next_item()
|
|
||||||
elseif luasnip.expand_or_locally_jumpable() then
|
|
||||||
luasnip.expand_or_jump()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end, { 'i', 's' }),
|
|
||||||
['<S-Tab>'] = cmp.mapping(function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_prev_item()
|
|
||||||
elseif luasnip.locally_jumpable(-1) then
|
|
||||||
luasnip.jump(-1)
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end, { 'i', 's' }),
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
{ name = 'nvim_lsp' },
|
|
||||||
{ name = 'luasnip' },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
--[ TREESITTER ]--
|
|
||||||
|
|
||||||
require('nvim-treesitter.configs').setup {
|
|
||||||
ensure_installed = {},
|
|
||||||
|
|
||||||
auto_install = false,
|
|
||||||
|
|
||||||
highlight = { enable = true },
|
|
||||||
|
|
||||||
indent = { enable = true },
|
|
||||||
}
|
|
||||||
|
|
||||||
--[ BUFFERLINE ]--
|
|
||||||
|
|
||||||
require("bufferline").setup{
|
|
||||||
options = {
|
|
||||||
diagnostics = 'nvim_lsp',
|
|
||||||
diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
|
||||||
local icon = level:match("error") and " " or " "
|
|
||||||
return " " .. icon .. count
|
|
||||||
end,
|
|
||||||
separator_style = "slant",
|
|
||||||
hover = {
|
|
||||||
enabled = true,
|
|
||||||
reveal = {'close'},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
require("bufferline").seperator_style = "slanted"
|
|
27
home-manager/neovim/telescope.lua
Normal file
27
home-manager/neovim/telescope.lua
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
local builtin = require('telescope.builtin')
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||||
|
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||||
|
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||||
|
vim.keymap.set('n', '<leader>fr', builtin.lsp_references, {})
|
||||||
|
vim.keymap.set('n', '<leader>fs', builtin.lsp_document_symbols, {})
|
||||||
|
|
||||||
|
require('telescope').setup{
|
||||||
|
pickers = {
|
||||||
|
find_files = {
|
||||||
|
theme = "dropdown"
|
||||||
|
},
|
||||||
|
live_grep = {
|
||||||
|
theme = "dropdown"
|
||||||
|
},
|
||||||
|
buffers = {
|
||||||
|
theme = "dropdown"
|
||||||
|
},
|
||||||
|
lsp_references = {
|
||||||
|
theme = "dropdown"
|
||||||
|
},
|
||||||
|
lsp_document_symbols = {
|
||||||
|
theme = "dropdown"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
9
home-manager/neovim/treesitter.lua
Normal file
9
home-manager/neovim/treesitter.lua
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
require('nvim-treesitter.configs').setup {
|
||||||
|
ensure_installed = {},
|
||||||
|
|
||||||
|
auto_install = false,
|
||||||
|
|
||||||
|
highlight = { enable = true },
|
||||||
|
|
||||||
|
indent = { enable = true },
|
||||||
|
}
|
Loading…
Reference in a new issue