125 lines
3.3 KiB
Lua
125 lines
3.3 KiB
Lua
|
--[ 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
|
||
|
|
||
|
--[ 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 }
|
||
|
|
||
|
--[ 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 ]--
|
||
|
|
||
|
-- For snippets: look at https://github.com/vimjoyer/nvim-nix-video/blob/main/nvim/plugin/cmp.lua
|
||
|
|
||
|
local cmp = require('cmp')
|
||
|
|
||
|
cmp.setup {
|
||
|
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()
|
||
|
else
|
||
|
fallback()
|
||
|
end
|
||
|
end, { 'i', 's' }),
|
||
|
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||
|
if cmp.visible() then
|
||
|
cmp.select_prev_item()
|
||
|
else
|
||
|
fallback()
|
||
|
end
|
||
|
end, { 'i', 's' }),
|
||
|
},
|
||
|
sources = {
|
||
|
{ name = 'nvim_lsp' },
|
||
|
},
|
||
|
}
|