88 lines
3.4 KiB
Lua
88 lines
3.4 KiB
Lua
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,
|
|
}
|