From 433536db6a1d347fc15ed2a2dc77ac63aabe7d43 Mon Sep 17 00:00:00 2001 From: Martin Pander Date: Wed, 11 Mar 2026 09:31:56 +0100 Subject: [PATCH] Move lsp setup into filetype autocommands --- modules/nvim/lua/filetype.lua | 152 ++++++++++++++++++++++++---------- 1 file changed, 109 insertions(+), 43 deletions(-) diff --git a/modules/nvim/lua/filetype.lua b/modules/nvim/lua/filetype.lua index 8f456e8..99fbb8b 100644 --- a/modules/nvim/lua/filetype.lua +++ b/modules/nvim/lua/filetype.lua @@ -3,62 +3,128 @@ local capabilities = require('cmp_nvim_lsp').default_capabilities() vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }) vim.api.nvim_create_autocmd('FileType', { - group = 'FileTypeConfigs', + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), pattern = 'python', + once = true, callback = function() require('dap-python').setup() - -- lspconfig.pyright.setup({ capabilities = capabilities }) - -- require("conform").setup({ - -- python = {"black"}, - -- }) end, }) --- vim.api.nvim_create_autocmd('FileType', { --- group = 'FileTypeConfigs', --- pattern = 'go', --- callback = function() --- require('dap-python').setup() -require('dap-go').setup() +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = 'go', + once = true, + callback = function() + vim.lsp.enable('ty') + vim.lsp.enable('gopls') + require('dap-go').setup() + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = 'proto', + once = true, + callback = function() + vim.lsp.config('buf_ls', { + cmd = { 'buf', 'lsp', 'serve' }, + filetypes = { 'proto' }, + root_markers = { 'buf.yaml', '.git' }, + }) + + vim.lsp.enable('buf_ls') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = 'markdown', + once = true, + callback = function() + vim.lsp.enable('marksman') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = 'sql', + once = true, + callback = function() + vim.lsp.enable('sqls') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = { 'dockerfile', 'yaml.docker-compose' }, + once = true, + callback = function() + vim.lsp.enable('dockerls') + vim.lsp.enable('docker_compose_language_service') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = 'rust', + once = true, + callback = function() + vim.lsp.enable('rust_analyzer') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = { 'c', 'cpp' }, + once = true, + callback = function() + vim.lsp.enable('clangd') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = { 'zig' }, + pattern = 'sql', + once = true, + callback = function() + vim.lsp.enable('zls') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = { 'yaml' }, + pattern = 'sql', + once = true, + callback = function() + vim.lsp.enable('yamlls') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }), + pattern = { 'cs' }, + pattern = 'sql', + once = true, + callback = function() + vim.lsp.enable('omnisharp') + end, +}) + --- vim.lsp.enable('ruff') --- vim.lsp.config('ty') -vim.lsp.enable('ty') -vim.lsp.enable('gopls') -vim.lsp.enable('marksman') -vim.lsp.enable('rust_analyzer') -vim.lsp.enable('dockerls') -vim.lsp.enable('docker_compose_language_service') -vim.lsp.enable('clangd') -vim.lsp.enable('sqls') -vim.lsp.enable('zls') -vim.lsp.enable('omnisharp') -vim.lsp.enable('yamlls') --- lspconfig.gopls.setup({ capabilities = capabilities }) --- lspconfig.marksman.setup({ capabilities = capabilities }) --- lspconfig.rust_analyzer.setup({ --- capabilities = capabilities, --- settings = { --- ["rust-analyzer"] = { --- checkOnSave = { --- command = "clippy", --- }, --- }, --- }, --- }) --- lspconfig.dockerls.setup({ capabilities = capabilities }) --- lspconfig.docker_compose_language_service.setup({ capabilities = capabilities }) --- lspconfig.clangd.setup({ capabilities = capabilities }) --- lspconfig.sqls.setup({ capabilities = capabilities }) --- lspconfig.zls.setup({ capabilities = capabilities }) --- lspconfig.omnisharp.setup({ capabilities = capabilities }) --- lspconfig.yamlls.setup({ capabilities = capabilities }) require("conform").setup({ go = {"gofmt"}, python = {"black"}, rust = {"rustfmt"}, + + format_on_save = { + timeout_ms = 500, + lsp_fallback = true, + }, }) -- end, -- })