summaryrefslogtreecommitdiffstats
path: root/.config/nvim/lua/user/lsp
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/user/lsp')
-rw-r--r--.config/nvim/lua/user/lsp/bash.lua1
-rw-r--r--.config/nvim/lua/user/lsp/common.lua81
-rw-r--r--.config/nvim/lua/user/lsp/cxx.lua1
-rw-r--r--.config/nvim/lua/user/lsp/haskell.lua1
-rw-r--r--.config/nvim/lua/user/lsp/lua.lua1
-rw-r--r--.config/nvim/lua/user/lsp/python.lua1
-rw-r--r--.config/nvim/lua/user/lsp/rust.lua26
7 files changed, 112 insertions, 0 deletions
diff --git a/.config/nvim/lua/user/lsp/bash.lua b/.config/nvim/lua/user/lsp/bash.lua
new file mode 100644
index 0000000..5cd4a2e
--- /dev/null
+++ b/.config/nvim/lua/user/lsp/bash.lua
@@ -0,0 +1 @@
+lsp = require 'lspconfig'
diff --git a/.config/nvim/lua/user/lsp/common.lua b/.config/nvim/lua/user/lsp/common.lua
new file mode 100644
index 0000000..032cb7f
--- /dev/null
+++ b/.config/nvim/lua/user/lsp/common.lua
@@ -0,0 +1,81 @@
+-- this file contains setup for snippets and common LSP options
+
+local cmp_status, cmp = pcall(require, 'cmp')
+-- vim.api.nvim_echo({{"Hello!", "Normal"}}, true, {})
+if not cmp_status then
+ vim.api.nvim_err_writeln(string.format("shit! error status: %s", cmp_status))
+ return
+end
+luasnip = require 'luasnip'
+luasnip.setup()
+
+local expnoresilent = {expr = true, noremap = true, silent = true}
+local noresilent = {noremap = true, silent = true}
+
+-- stolen from https://github.com/hrsh7th/nvim-cmp/wiki/Menu-Appearance
+local kind_icons = {
+ Text = "", Method = "󰆧",
+ Function = "󰊕", Constructor = "",
+ Field = "󰇽", Variable = "󰂡",
+ Class = "󰠱", Interface = "",
+ Module = "", Property = "󰜢",
+ Unit = "", Value = "󰎠",
+ Enum = "", Keyword = "󰌋",
+ Snippet = "", Color = "󰏘",
+ File = "󰈙", Reference = "",
+ Folder = "󰉋", EnumMember = "",
+ Constant = "󰏿", Struct = "",
+ Event = "", Operator = "󰆕",
+ TypeParameter = "󰅲",
+}
+
+-- from https://github.com/hrsh7th/nvim-cmp/wiki/Example-mappings#luasnip
+local stolen_function = function() -- to check whether there are words before cursor
+ unpack = unpack or table.unpack
+ local line, col = unpack(vim.api.nvim_win_get_cursor(0))
+ return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
+end
+
+-- TODO: Finish
+cmp.setup {
+ snippet = {
+ expand = function(args)
+ vim.fn["vsnip#anonymous"](args.body) -- for vsnip (i left it)
+ luasnip.lsp_expand(args.body) -- for luasnip cause i like it more
+ end,
+ },
+ -- NOTE: ordering or this table affects completions ordering
+ sources = { -- TODO: Add keyword_length to some of them ??????
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ { name = 'buffer' },
+ { name = 'path' },
+ { name = 'calc' },
+ { name = 'nvim_lua' },
+ { name = 'nvim_lsp_signature_help' },
+ },
+ formatting = {
+ fields = { "kind", "abbr", "menu" },
+ -- the function is also half-stolen
+ format = function(entry, vim_item)
+ vim_item.kind = string.format("%s · |%s|", kind_icons[vim_item.kind], vim_item.kind)
+ vim_item.menu = ({
+ buffer = "[Buffer]",
+ nvim_lsp = "[Lsp]",
+ vsnip = "[Vsnip]",
+ luasnip = "[Luasnip]",
+ path = "[Path]",
+ nvim_lua = "[Lua]",
+ calc = "[󰊕(x)dx]",
+ nvim_lsp_signature_help = "[Lsp-help]",
+ })[entry.source.name]
+ return vim_item
+ end,
+ },
+ window = {
+ completion = cmp.config.window.bordered(),
+ documentation = cmp.config.window.bordered(),
+ },
+ experimental = { ghost_text = true },
+}
+
diff --git a/.config/nvim/lua/user/lsp/cxx.lua b/.config/nvim/lua/user/lsp/cxx.lua
new file mode 100644
index 0000000..5cd4a2e
--- /dev/null
+++ b/.config/nvim/lua/user/lsp/cxx.lua
@@ -0,0 +1 @@
+lsp = require 'lspconfig'
diff --git a/.config/nvim/lua/user/lsp/haskell.lua b/.config/nvim/lua/user/lsp/haskell.lua
new file mode 100644
index 0000000..5cd4a2e
--- /dev/null
+++ b/.config/nvim/lua/user/lsp/haskell.lua
@@ -0,0 +1 @@
+lsp = require 'lspconfig'
diff --git a/.config/nvim/lua/user/lsp/lua.lua b/.config/nvim/lua/user/lsp/lua.lua
new file mode 100644
index 0000000..5cd4a2e
--- /dev/null
+++ b/.config/nvim/lua/user/lsp/lua.lua
@@ -0,0 +1 @@
+lsp = require 'lspconfig'
diff --git a/.config/nvim/lua/user/lsp/python.lua b/.config/nvim/lua/user/lsp/python.lua
new file mode 100644
index 0000000..5cd4a2e
--- /dev/null
+++ b/.config/nvim/lua/user/lsp/python.lua
@@ -0,0 +1 @@
+lsp = require 'lspconfig'
diff --git a/.config/nvim/lua/user/lsp/rust.lua b/.config/nvim/lua/user/lsp/rust.lua
new file mode 100644
index 0000000..cfc5c2a
--- /dev/null
+++ b/.config/nvim/lua/user/lsp/rust.lua
@@ -0,0 +1,26 @@
+lsp = require 'lspconfig'
+
+vim.cmd [[
+ autocmd FileType rust highlight link rustLifetime SpecialComment
+]]
+
+vim.cmd [[
+ autocmd FileType rust setlocal inccommand=nosplit
+]]
+
+lsp.rust_analyzer.setup{
+ cmd = {"rust-analyzer"},
+ filetypes = {"rust", "rs"},
+ root_dir = lsp.util.root_pattern("Cargo.toml"),
+ -- fucking magic
+ capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()),
+ settings = {
+ ["rust-analyzer"] = {
+ disgnostics = { enable = false },
+ inlayHints = { typeHints = true },
+ },
+ },
+}
+
+
+