diff options
Diffstat (limited to '.config/nvim/lua/code.lua')
-rw-r--r-- | .config/nvim/lua/code.lua | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/.config/nvim/lua/code.lua b/.config/nvim/lua/code.lua new file mode 100644 index 0000000..4b20290 --- /dev/null +++ b/.config/nvim/lua/code.lua @@ -0,0 +1,63 @@ +local lsp = require('lspconfig') +local git = require('neogit') +local gitdiff = require('diffview') +local gitsigns = require('gitsigns') + +-------------------------------------------------------------------------- +-- lsp + +local setup = function(client, buffer) + local function set_keymap(...) vim.api.nvim_buf_set_keymap(buffer, ...) end + local function set_option(...) vim.api.nvim_buf_set_option(buffer, ...) end + + set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + local opts = { noremap=true, silent=true } + + set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) + set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) + set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) + set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) + set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts) + set_keymap('n', '[c', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts) + set_keymap('n', ']c', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts) + + set_keymap('n', '<Leader><Leader>r', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) +end + +local servers = { 'clangd', 'tsserver' } +for _, s in ipairs(servers) do + lsp[s].setup { + on_attach=setup, + flags = { + debounce_text_changes = 150, + } + } +end + +vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, { + virtual_text = false + } +) + +-------------------------------------------------------------------------- +-- neogit + +git.setup({}) + +-------------------------------------------------------------------------- +-- diffview + +gitdiff.setup({}) + +-------------------------------------------------------------------------- +-- gitsigns + +gitsigns.setup({ + keymaps = { + noremap = true, + ['n ]d'] = { expr = true, "&diff ? ']c' : '<cmd>lua require\"gitsigns.actions\".next_hunk()<CR>'"}, + ['n [d'] = { expr = true, "&diff ? '[c' : '<cmd>lua require\"gitsigns.actions\".prev_hunk()<CR>'"}, + } +}) |