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

View file

@ -3,8 +3,9 @@ local augroup = api.nvim_create_augroup("UserAutocmds", { clear = true })
local function maybe_load_canola(bufnr)
local name = api.nvim_buf_get_name(bufnr)
if name == "" or vim.fn.isdirectory(name) == 0 then return end
if name == "" or vim.bo[bufnr].filetype == "canola" or vim.fn.isdirectory(name) == 0 then return end
pcall(vim.cmd.packadd, "canola.nvim")
pcall(vim.cmd, "silent keepalt Canola " .. vim.fn.fnameescape(name))
end