local use_google = require("utils").use_google local deps = { "hrsh7th/nvim-cmp", "nvim-lua/lsp-status.nvim", "VonHeikemen/lsp-zero.nvim", "rcarriga/nvim-notify", "ray-x/go.nvim", "ray-x/guihua.lua", } return { { "L3MON4D3/LuaSnip", build = "make install_jsregexp", config = function() require("luasnip.loaders.from_vscode").lazy_load() end, dependencies = { "rafamadriz/friendly-snippets" }, }, { "hinell/lsp-timeout.nvim", dependencies = { "neovim/nvim-lspconfig" }, cond = not use_google(), config = function() vim.g.lspTimeoutConfig = { filetypes = { ignore = { -- filetypes to ignore; empty by default "gdscript", }, -- for these filetypes }, } end, }, { "neovim/nvim-lspconfig", dependencies = deps, keys = { { "rn", "lua vim.lsp.buf.rename()" }, { "ca", "lua vim.lsp.buf.code_action()" }, { "L", "lua vim.lsp.buf.hover()" }, { "g0", "lua vim.lsp.buf.document_symbol()" }, { "gr", "Telescope lsp_references" }, { "gW", "lua vim.lsp.buf.workspace_symbol()" }, { "gd", "lua vim.lsp.buf.definition()" }, { "gD", "tab split | lua vim.lsp.buf.definition()" }, { "gi", "lua vim.lsp.buf.implementation()" }, { "gI", "lua vim.lsp.buf.implementation()" }, { "gR", "lua vim.lsp.buf.references()" }, { "", "lua vim.lsp.buf.signature_help()" }, { "gt", "lua vim.lsp.buf.type_definition()" }, { "", "lua vim.lsp.buf.signature_help()", mode = "i" }, { "ca", "lua vim.lsp.buf.code_action()", mode = "v" }, }, config = function() local lsp_status = require("lsp-status") lsp_status.register_progress() vim.opt.spell = true vim.opt.spelllang = { "en_us" } local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) capabilities = vim.tbl_extend("keep", capabilities or {}, lsp_status.capabilities) local lspconfig = require("lspconfig") local configs = require("lspconfig.configs") require("config.lsp-google").setup(capabilities) -- Godot lspconfig.gdscript.setup({ flags = { debounce_text_changes = 2000, -- Wait 5 seconds before sending didChange }, }) vim.cmd([[autocmd FileType gdscript setlocal commentstring=#\ %s]]) vim.cmd([[autocmd FileType gdscript setlocal autoindent noexpandtab tabstop=4 shiftwidth=4]]) -- Golang require("go").setup({ lsp_cfg = { capabilities = capabilities, }, }) local format_sync_grp = vim.api.nvim_create_augroup("GoFormat", {}) vim.api.nvim_create_autocmd("BufWritePre", { pattern = "*.go", callback = function() require("go.format").goimport() end, group = format_sync_grp, }) end, }, }