Skip to content

Commit

Permalink
refactor: move from lspinstaller to mason
Browse files Browse the repository at this point in the history
Still need to add `null-ls`, I think, to be able to format code. See the
help page for mason on how to use the installed linters.
  • Loading branch information
Eirik Rolland Enger committed Dec 9, 2022
1 parent 2fd9843 commit 4f556e7
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 27 deletions.
2 changes: 1 addition & 1 deletion nvim_lua/.config/nvim/lua/engeir/cmp.lua
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ cmp.setup({
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
}),
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<CR>"] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<C-n>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
Expand Down
2 changes: 1 addition & 1 deletion nvim_lua/.config/nvim/lua/engeir/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ require("engeir.alpha")
require("engeir.autocommands")
require("engeir.boole")
require("engeir.bufferline")
require("engeir.cmp")
-- require("engeir.cmp")
require("engeir.cmp_gh_source")
require("engeir.color-picker")
require("engeir.colorschemes")
Expand Down
128 changes: 121 additions & 7 deletions nvim_lua/.config/nvim/lua/engeir/lsp/init.lua
Original file line number Diff line number Diff line change
@@ -1,10 +1,124 @@
local status_ok, _ = pcall(require, "lspconfig")
if not status_ok then
local lsp = require("lsp-zero")

lsp.preset("recommended")
lsp.nvim_workspace()
local ok, cmp = pcall(require, "cmp")
if not ok then
return
end
local cmp_select = { behavior = cmp.SelectBehavior.Select }
-- local cmp_mappings = lsp.defaults.cmp_mappings({
-- ["<C-d>"] = cmp.mapping.scroll_docs(-4),
-- ["<C-f>"] = cmp.mapping.scroll_docs(4),
-- ["<C-p>"] = cmp.mapping.select_prev_item(cmp_select),
-- ["<C-n>"] = cmp.mapping.select_next_item(cmp_select),
-- ["<C-y>"] = cmp.mapping.confirm({ select = true }),
-- ["<C-Space>"] = cmp.mapping.complete(),
-- ["<CR>"] = cmp.config.disable,
-- })
--
-- lsp.setup_nvim_cmp({
-- mapping = cmp_mappings
-- })

-- lsp.on_attach(function(client, bufnr)
-- local opts = { buffer = bufnr, remap = false }
-- local keymap = vim.keymap.set
-- -- keymap("n", "<leader>gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
-- keymap("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
-- -- keymap("n", "<leader>gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
-- keymap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
-- keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
-- keymap("n", "<leader>gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
-- -- keymap("n", "gI", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
-- keymap("i", "<C-h>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
-- -- keymap("n", "<leader>ls", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
-- keymap("n", "<leader>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>", opts)
-- keymap("n", "<leader>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>", opts)
-- keymap("n", "<leader>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>", opts)
-- keymap("n", "<leader>vws", "<cmd>lua vim.lsp.buf.workspace_symbol()<CR>", opts)
-- keymap("n", "<leader>D", "<cmd>lua vim.lsp.buf.type_definition()<CR>", opts)
-- keymap('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
-- -- keymap("n", "<leader>lr", "<cmd>lua vim.lsp.buf.rename()<cr>", opts)
-- -- keymap("n", "<space>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
-- -- keymap("n", "<leader>la", "<cmd>lua vim.lsp.buf.code_action()<cr>", opts)
-- keymap("n", "<leader>gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
-- -- keymap("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
-- keymap("n", "<leader>e", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
-- -- keymap("n", "gl", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
-- keymap("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts)
-- -- keymap("n", "<leader>lk", "<cmd>lua vim.diagnostic.goto_prev({buffer=0})<cr>", opts)
-- keymap("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts)
-- -- keymap("n", "<leader>lj", "<cmd>lua vim.diagnostic.goto_next({buffer=0})<cr>", opts)
-- keymap("n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
-- -- keymap("n", "<leader>lq", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
-- keymap("n", "<leader>s", "<cmd>lua vim.lsp.buf.format({ async=true})<CR>", opts)
-- -- keymap("n", "<leader>lf", "<cmd>lua vim.lsp.buf.formatting()<cr>", opts)
-- keymap("n", "<leader>li", "<cmd>LspInfo<cr>", opts)
-- keymap("n", "<leader>lI", "<cmd>LspInstallInfo<cr>", opts)
-- end)
lsp.on_attach(function(_, bufnr)
-- NOTE: Remember that lua is a real programming language, and as such it is possible
-- to define small helper and utility functions so you don't have to repeat yourself
-- many times.
--
-- In this case, we create a function that lets us more easily define mappings specific
-- for LSP related items. It sets the mode, buffer and description for us each time.
local nmap = function(keys, func, desc)
if desc then
desc = 'LSP: ' .. desc
end

vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
end

nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')

nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
nmap('gi', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')

-- See `:help K` for why this keymap
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
vim.keymap.set('i', "<C-k>", vim.lsp.buf.signature_help, { buffer = bufnr, desc = "Signature Documentation" })

-- Lesser used LSP functionality
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
nmap("<leader>ws", vim.lsp.buf.workspace_symbol, "[W]orkspace [S]ymbol")
nmap('<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, '[W]orkspace [L]ist Folders')

-- Create a command `:Format` local to the LSP buffer
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
if vim.lsp.buf.format then
vim.lsp.buf.format()
elseif vim.lsp.buf.formatting then
vim.lsp.buf.formatting()
end
end, { desc = 'Format current buffer with LSP' })
end)

lsp.setup()

require("engeir.lsp.lsp-installer")
require("engeir.lsp.handlers").setup()
require("engeir.lsp.null-ls")
require("engeir.lsp.lsp-signature")
-- require "engeir.lsp.lspsaga"
cmp.setup({
completion = {
completeopt = 'menu,menuone,noinsert,noselect'
},
mapping = lsp.defaults.cmp_mappings({
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-p>"] = cmp.mapping.select_prev_item(cmp_select),
["<C-n>"] = cmp.mapping.select_next_item(cmp_select),
["<C-y>"] = cmp.mapping.confirm({ select = true }),
["<C-Space>"] = cmp.mapping.complete(),
["<CR>"] = cmp.mapping.confirm({ select = false }),
})
})
52 changes: 34 additions & 18 deletions nvim_lua/.config/nvim/lua/engeir/plugins.lua
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,27 @@ return packer.startup(function(use)
end

-- LSP ========================================================================== --
use("neovim/nvim-lspconfig") -- enable LSP
use("williamboman/nvim-lsp-installer") -- simple to use language server installer
use("jose-elias-alvarez/null-ls.nvim") -- for formatters and linters
use("tami5/lspsaga.nvim")
use("ray-x/lsp_signature.nvim")
use({
"VonHeikemen/lsp-zero.nvim",
requires = {
-- LSP Support
{ "neovim/nvim-lspconfig" },
{ "williamboman/mason.nvim" },
{ "williamboman/mason-lspconfig.nvim" },

-- Autocompletion
{ "hrsh7th/nvim-cmp" },
{ "hrsh7th/cmp-buffer" },
{ "hrsh7th/cmp-path" },
{ "saadparwaiz1/cmp_luasnip" },
{ "hrsh7th/cmp-nvim-lsp" },
{ "hrsh7th/cmp-nvim-lua" },

-- Snippets
{ "L3MON4D3/LuaSnip" },
{ "rafamadriz/friendly-snippets" },
},
})

-- Telescope ==================================================================== --
use("nvim-telescope/telescope.nvim")
Expand Down Expand Up @@ -128,19 +144,19 @@ return packer.startup(function(use)
end,
})

-- cmp / completions ============================================================ --
use("hrsh7th/nvim-cmp") -- The completion plugin
use("hrsh7th/cmp-buffer") -- Buffer completions
use("hrsh7th/cmp-path") -- Path completions
use("saadparwaiz1/cmp_luasnip") -- Snippet completions
use("hrsh7th/cmp-nvim-lsp")
use("hrsh7th/cmp-nvim-lua")

-- snippets ===================================================================== --
use("L3MON4D3/LuaSnip")
if IS_KNOWN then
use("rafamadriz/friendly-snippets")
end
-- -- cmp / completions ============================================================ --
-- use("hrsh7th/nvim-cmp") -- The completion plugin
-- use("hrsh7th/cmp-buffer") -- Buffer completions
-- use("hrsh7th/cmp-path") -- Path completions
-- use("saadparwaiz1/cmp_luasnip") -- Snippet completions
-- use("hrsh7th/cmp-nvim-lsp")
-- use("hrsh7th/cmp-nvim-lua")

-- -- snippets ===================================================================== --
-- use("L3MON4D3/LuaSnip")
-- if IS_KNOWN then
-- use("rafamadriz/friendly-snippets")
-- end

-- Git some shit done =========================================================== --
use({
Expand Down

0 comments on commit 4f556e7

Please sign in to comment.