local on_attach = require('myConfig.exports').on_attach vim.g.rustaceanvim = { -- Plugin configuration tools = { }, -- LSP configuration server = { on_attach = function(client, bufnr) on_attach(client, bufnr) vim.keymap.set( -- {"n", "v"}, "n", "J", function() vim.cmd.RustLsp('joinLines') end, { silent = true, buffer = bufnr, desc = "rust-analyzer join lines", } ) vim.keymap.set( "n", "", function() vim.cmd.RustLsp({ "moveItem", "up" }) end, { silent = true, buffer = bufnr, desc = "rust-analyzer move item up", } ) vim.keymap.set( "n", "", function() vim.cmd.RustLsp({ "moveItem", "down" }) end, { silent = true, buffer = bufnr, desc = "rust-analyzer move item down", } ) vim.keymap.set( "n", "sR", function() vim.cmd.RustLsp('runnables') end, { silent = true, buffer = bufnr, desc = "rust-analyzer runnables", } ) vim.keymap.set( "n", "sx", function() vim.cmd.RustLsp('explainError') end, { silent = true, buffer = bufnr, desc = "rust-analyzer explain error", } ) end, settings = { ['rust-analyzer'] = { checkOnSave = { command = "clippy", }, experimental = { procAttrMacros = true, }, }, }, }, } -- clangd require("clangd_extensions.inlay_hints").setup_autocmd() require("clangd_extensions.inlay_hints").set_inlay_hints() require("neodev").setup({}) -- Refactoring require("refactoring").setup {} -- Null LSP local null_ls = require("null-ls") null_ls.setup({ sources = { null_ls.builtins.code_actions.gitrebase, null_ls.builtins.code_actions.gitsigns, null_ls.builtins.code_actions.refactoring.with { filetypes = { "typescript", "javascript", "lua", "c", "cpp", "go", "python", "java", "php", "ruby" }, }, null_ls.builtins.code_actions.statix, null_ls.builtins.diagnostics.deadnix, null_ls.builtins.diagnostics.statix, null_ls.builtins.diagnostics.vale.with { filetypes = { "markdown", "pandoc", "rst", "tex", "asciidoc" }, }, null_ls.builtins.formatting.alejandra, null_ls.builtins.formatting.shfmt, }, on_attach = on_attach, }) -- Vim Pandoc vim.g["pandoc#formatting#equalprg"] = "pandoc -t markdown --wrap=preserve" -- standalone needed to keep the YAML metadata block vim.g["pandoc#formatting#extra_equalprg"] = "--standalone --reference-links --reference-location=section" -- Actions preview require("actions-preview").setup() -- DAP require("dapui").setup() require("nvim-dap-virtual-text").setup() require('telescope').load_extension('dap') -- LTex local function set_ltex_lang(lang) local ltex = vim.lsp.get_active_clients({ name = "ltex" })[1] if ltex == nil then return end if lang == nil then lang = vim.opt_local.spelllang:get()[1] end if lang == "en" then lang = "en-US" end ltex.config.settings.ltex.language = lang end vim.api.nvim_create_user_command( "LTeXSetLang", function(opts) local lang = opts.fargs[1] set_ltex_lang(lang) end, { nargs = 1, complete = function() return { "en", "fr" } end, } ) vim.api.nvim_create_autocmd("OptionSet", { desc = "Set LTex language on spell change", callback = function(ev) if ev.match ~= "spelllang" then return end set_ltex_lang() end, }) vim.api.nvim_create_autocmd("LspAttach", { desc = "Set LTex language on attach", callback = function(ev) local client = vim.lsp.get_client_by_id(ev.data.client_id) if client.config.name ~= "ltex" then return end set_ltex_lang() end, }) -- TODO: implement custom client-side commands like: -- -- vim.lsp.commands["_ltex.addToDictionary"] = function(params) -- print(vim.inspect(params)) -- end -- -- See: https://valentjn.github.io/ltex/ltex-ls/server-usage.html#commands