Files
Nvim/lua/plugins/lsp.lua

81 lines
3.0 KiB
Lua

return { -- adds lsp functionality and api for included languages
{
"neovim/nvim-lspconfig",
dependencies = {
{ "mason-org/mason.nvim", config = true }, -- The "App Store"
{ "mason-org/mason-lspconfig.nvim", config = true }, -- The "Bridge"
{
'saghen/blink.cmp',
version = '*', -- Downloads pre-built binaries (fast!)
opts =
{
keymap = {
preset = 'none',
['<Down>'] = { 'select_next', 'fallback' },
['<Up>'] = { 'select_prev', 'fallback' },
['<Tab>'] = { 'accept', 'fallback' },
['<C-space>'] = { 'show', 'show_documentation', 'hide_documentation' },
},
sources = {
default = { 'lsp', 'path', 'snippets', 'buffer' },
},
},
},
{
'MeanderingProgrammer/render-markdown.nvim',
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim' }, -- if you use the mini.nvim suite
---@module 'render-markdown'
},
config = function()
local lspconfig = require('lspconfig')
-- Since you are using blink.cmp, extract its capabilities
local capabilities = require('blink.cmp').get_lsp_capabilities()
-- Configure OmniSharp for C# / nanoFramework development
lspconfig.omnisharp.setup({
capabilities = capabilities,
cmd = { "omnisharp" },
settings = {
FormattingOptions = {
EnableEditorConfigSupport = true,
},
MsBuild = {
LoadProjectsOnDemand = false,
},
},
on_attach = function(client, bufnr)
local opts = { buffer = bufnr, remap = false }
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
vim.keymap.set("n", "<leader>ca", function() vim.lsp.buf.code_action() end, opts)
end,
})
end
},
},
{
"folke/lazydev.nvim",
ft = "lua", -- only load on lua files
opts = {
library = {
-- Only load luvit types when the `vim.uv` word is found
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
-- always load the LazyVim library
"LazyVim",
-- Only load the lazyvim library when the `LazyVim` global is found
{ path = "LazyVim", words = { "LazyVim" } },
-- Load the wezterm types when the `wezterm` module is required
-- Needs `DrKJeff16/wezterm-types` to be installed
{ path = "wezterm-types", mods = { "wezterm" } },
-- Load the xmake types when opening file named `xmake.lua`
-- Needs `LelouchHe/xmake-luals-addon` to be installed
{ path = "xmake-luals-addon/library", files = { "xmake.lua" } },
},
-- disable when a .luarc.json file is found
enabled = function(root_dir)
return not vim.uv.fs_stat(root_dir .. "/.luarc.json")
end,
},
},
}