summary refs log tree commit diff
path: root/.vim/lua/conf/lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.vim/lua/conf/lsp.lua51
1 files changed, 51 insertions, 0 deletions
diff --git a/.vim/lua/conf/lsp.lua b/.vim/lua/conf/lsp.lua
new file mode 100644
index 0000000..4249de5
--- /dev/null
+++ b/.vim/lua/conf/lsp.lua
@@ -0,0 +1,51 @@
+-- lsp config
+
+local lsp     = require 'lspconfig'
+local util    = require 'lspconfig.util'
+
+local function my_attach(client)
+	-- attach completion
+	require 'completion'.on_attach(client)
+
+	-- do lsp mappings
+	vim.fn.nvim_buf_set_keymap(0, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>',
+		{noremap=true, silent=true})
+	vim.fn.nvim_buf_set_keymap(0, 'n', '<c-]>', '<cmd>lua vim.lsp.buf.definition()<cr>',
+		{noremap=true, silent=true})
+	vim.fn.nvim_buf_set_keymap(0, 'n', 'grr', '<cmd>lua vim.lsp.buf.rename()<cr>',
+		{noremap=true, silent=true})
+	vim.fn.nvim_buf_set_keymap(0, 'i', '<c-h>', '<cmd>lua vim.lsp.buf.signature_help()<cr>',
+		{noremap=true, silent=true})
+
+	-- nnoremap <silent> gD <cmd> lua vim.lsp.buf.declaration()<CR>
+	-- nnoremap <silent> gd <cmd> lua vim.lsp.buf.definition()<CR>
+	-- nnoremap <silent> gT <cmd> lua vim.lsp.buf.type_definition()<CR>
+	-- nnoremap <silent> gI <cmd> lua vim.lsp.buf.implementation()<CR>
+	-- nnoremap <silent> gr <cmd> lua vim.lsp.buf.references()<CR>
+	-- nnoremap <silent> g0 <cmd> lua vim.lsp.buf.document_symbol()<CR>
+	-- nnoremap <silent> gW <cmd> lua vim.lsp.buf.workspace_symbol()<CR>
+	-- nnoremap <silent> ;h <cmd> lua vim.lsp.buf.hover()<CR>
+	-- nnoremap <silent> ;s <cmd> lua vim.lsp.buf.signature_help()<CR>
+end
+
+-- lsp.ccls.setup{
+-- 	on_attach = my_attach,
+-- }
+
+lsp.gopls.setup{
+	on_attach = my_attach,
+	root_dir = util.root_pattern('go.mod', '.git'),
+	-- NOTE: this is done to avoid the gopls warning about being outside gopath
+	-- message_level = vim.lsp.protocol.MessageType.Error,
+}
+
+lsp.sumneko_lua.setup{
+	cmd = { 'lua-language-server' };
+	on_attach = my_attach;
+}
+
+lsp.rust_analyzer.setup{
+	cmd = { 'env', 'CARGO_TARGET_DIR=/tmp', 'rust-analyzer' },
+	on_attach = my_attach,
+
+}