lsp and cmd in canola

This commit is contained in:
Harivansh Rathi 2026-03-31 00:13:55 -04:00
parent 71e87d48fb
commit bdf91e1102
2 changed files with 27 additions and 2 deletions

View file

@ -1,4 +1,17 @@
local M = {}
local cached_capabilities
local function load_blink()
local ok_lz, lz = pcall(require, "lz.n")
if ok_lz then pcall(lz.trigger_load, "saghen/blink.cmp") end
local ok_blink, blink = pcall(require, "blink.cmp")
if ok_blink then return blink end
pcall(vim.cmd.packadd, "blink.cmp")
ok_blink, blink = pcall(require, "blink.cmp")
if ok_blink then return blink end
end
function M.on_attach(_, bufnr)
local function buf(mode, lhs, rhs) bmap(mode, lhs, rhs, { buffer = bufnr }) end
@ -14,6 +27,17 @@ function M.on_attach(_, bufnr)
buf("n", "<leader>f", function() vim.lsp.buf.format { async = true } end)
end
function M.capabilities() return vim.lsp.protocol.make_client_capabilities() end
function M.capabilities()
if cached_capabilities then return vim.deepcopy(cached_capabilities) end
local capabilities = vim.lsp.protocol.make_client_capabilities()
local blink = load_blink()
if blink and blink.get_lsp_capabilities then
capabilities = blink.get_lsp_capabilities(capabilities)
end
cached_capabilities = capabilities
return vim.deepcopy(cached_capabilities)
end
return M