return { 'neovim/nvim-lspconfig', dependencies = { 'saghen/blink.cmp' }, lazy = false, -- example using `opts` for defining servers opts = { inlay_hints = { enabled = true }, servers = { lua_ls = {} } }, config = function(_, opts) for server, config in pairs(opts.servers) do -- passing config.capabilities to blink.cmp merges with the capabilities in your -- `opts[server].capabilities, if you've defined it config.capabilities = require('blink.cmp').get_lsp_capabilities(config.capabilities) vim.lsp.config(server, config) end local capabilities = require('blink.cmp').get_lsp_capabilities() vim.lsp.config("clangd", { capabilities = capabilities, cmd = { vim.fn.stdpath("config") .. "/shell/clangd-direnv.sh" } }) -- vim.lsp.config("julials", { -- capabilities = capabilities, -- cmd = { "julia", "--startup-file=no", "--history-file=no", "-e", "using LanguageServer; runserver()" } -- }) local cmd = { 'julia', '--startup-file=no', '--history-file=no', '-e', [[ # Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig # with the regular load path as a fallback ls_install_path = joinpath( get(DEPOT_PATH, 1, joinpath(homedir(), ".julia")), "environments", "nvim-lspconfig" ) pushfirst!(LOAD_PATH, ls_install_path) using LanguageServer popfirst!(LOAD_PATH) depot_path = get(ENV, "JULIA_DEPOT_PATH", "") project_path = let dirname(something( ## 1. Finds an explicitly set project (JULIA_PROJECT) Base.load_path_expand(( p = get(ENV, "JULIA_PROJECT", nothing); p === nothing ? nothing : isempty(p) ? nothing : p )), ## 2. Look for a Project.toml file in the current working directory, ## or parent directories, with $HOME as an upper boundary Base.current_project(), ## 3. First entry in the load path get(Base.load_path(), 1, nothing), ## 4. Fallback to default global environment, ## this is more or less unreachable Base.load_path_expand("@v#.#"), )) end @info "Running language server" VERSION pwd() project_path depot_path server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path) server.runlinter = true run(server) ]], } vim.lsp.config("julials", { capabilities = capabilities, cmd = cmd, root_dir = function(bufnr, on_dir) local fname = vim.api.nvim_buf_get_name(bufnr) local root = vim.fs.root(fname, { "Project.toml", "JuliaProject.toml" }) on_dir(root or vim.fn.getcwd()) end, }) vim.lsp.enable("hls") vim.lsp.enable("julials") end, }