summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/code.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/code.lua')
-rw-r--r--.config/nvim/lua/code.lua63
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>'"},
+ }
+})