Initial commit

This commit is contained in:
Johannes Knopp
2024-10-29 14:10:21 +01:00
commit 133fc547dc
34 changed files with 952 additions and 0 deletions

View File

@ -0,0 +1,81 @@
return {
'neovim/nvim-lspconfig',
event = { 'BufReadPre', 'BufNewFile' },
dependencies = {
'williamboman/mason.nvim',
'hrsh7th/cmp-nvim-lsp',
{ 'antosha417/nvim-lsp-file-operations', config = true },
{ 'folke/neodev.nvim', opts = {} },
},
config = function()
local lspconfig = require('lspconfig')
local mason_lspconfig = require('mason-lspconfig')
local cmp_nvim_lsp = require('cmp_nvim_lsp')
local keymap = vim.keymap
local wk = require('which-key')
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
local function opts(desc)
return { desc = desc, buffer = ev.buf, silent = true }
end
keymap.set('n', 'K', vim.lsp.buf.hover, opts('Show documentation'))
keymap.set('n', 'gR', '<cmd>Telescope lsp_references<cr>', opts('Show LSP references'))
keymap.set('n', 'gD', vim.lsp.buf.declaration, opts('Go to declaration'))
keymap.set('n', 'gd', '<cmd>Telescope lsp_definitions<cr>', opts('Show LSP definitions'))
keymap.set('n', 'gi', '<cmd>Telescope lsp_implementations<cr>', opts('Show LSP implementations'))
keymap.set('n', 'gt', '<cmd>Telescope lsp_type_definitions<cr>', opts('Show LSP type definitions'))
keymap.set({ 'n', 'v' }, 'ga', vim.lsp.buf.code_action, opts('Show available code actions'))
wk.add({
{ '<leader>r', group = 'Rename' },
{ '<leader>rn', vim.lsp.buf.rename, desc = 'Smart Rename' },
})
end,
})
local capabilities = cmp_nvim_lsp.default_capabilities()
mason_lspconfig.setup_handlers({
-- default handler for installed servers
function(server_name)
lspconfig[server_name].setup({
capabilities = capabilities,
})
end,
-- TODO add lsp configs
['lua_ls'] = function()
lspconfig['lua_ls'].setup({
capabilities = capabilities,
settings = {
Lua = {
diagnostics = {
globals = { 'vim' },
},
completion = {
callSnippet = 'Replace'
},
}
}
})
end,
['emmet_ls'] = function()
-- capabilities.textDocument.completion.completionItem.snippetSupport = true
lspconfig['emmet_ls'].setup({
capabilities = capabilities,
filetypes = {
'html',
'css',
'sass',
'scss',
'less',
'javascript',
'javascriptreact',
'svelte',
'vue',
}
})
end,
})
end
}

View File

@ -0,0 +1,46 @@
return {
'williamboman/mason.nvim',
dependencies = {
'williamboman/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
},
config = function()
local mason = require('mason')
local mason_lspconfig = require('mason-lspconfig')
local mason_tool_installer = require('mason-tool-installer')
mason.setup({
ui = {
icons = {
package_installed = "",
package_pending = "",
package_uninstalled = "",
},
},
pip = {
upgrade_pip = true,
}
})
mason_lspconfig.setup({
ensure_installed = {
'lua_ls',
'html',
'cssls',
'pyright',
'emmet_ls',
'bashls',
},
})
mason_tool_installer.setup({
ensure_installed = {
'prettier',
'isort',
'black',
'pylint',
'eslint_d',
}
})
end,
}

View File

@ -0,0 +1,41 @@
return {
'nvimtools/none-ls.nvim',
dependencies = {
'nvimtools/none-ls-extras.nvim'
},
config = function()
local null_ls = require('null-ls')
local sources = {
null_ls.builtins.formatting.prettier.with({
filetypes = { 'javascript', 'typescript', 'css', 'html', 'json', 'markdown', 'yaml' }
}),
null_ls.builtins.formatting.black,
null_ls.builtins.formatting.djlint,
null_ls.builtins.formatting.isort,
null_ls.builtins.formatting.stylua,
require('none-ls.diagnostics.eslint_d'),
}
null_ls.setup({
sources = sources,
-- on_attach = function(client, bufnr)
-- if client.server_capabilities.documentFormattingProvider then
-- vim.
-- end
-- end,
})
local keymap = vim.keymap
local fmt_func = function()
vim.lsp.buf.format({ async = true })
end
keymap.set('n', '<leader>ii', fmt_func, { noremap = true, silent = true })
local wk = require('which-key')
wk.add({
{ '<leader>i', group = 'Formatting' },
{ '<leader>ii', desc = 'Format File' },
})
end,
}