updates
This commit is contained in:
@@ -74,17 +74,3 @@ vim.api.nvim_create_autocmd({ "User" }, {
|
||||
end,
|
||||
})
|
||||
-- }}}
|
||||
|
||||
-- {{{ Hyprlang LSP
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
pattern = { "*.hl", "hypr*.conf" },
|
||||
callback = function(event)
|
||||
print(string.format("starting hyprls for %s", vim.inspect(event)))
|
||||
vim.lsp.start({
|
||||
name = "hyprlang",
|
||||
cmd = { "hyprls" },
|
||||
root_dir = vim.fn.getcwd(),
|
||||
})
|
||||
end,
|
||||
})
|
||||
--}}}
|
||||
|
||||
@@ -29,6 +29,20 @@ return {
|
||||
},
|
||||
})
|
||||
end,
|
||||
llama_cpp = function()
|
||||
return require("codecompanion.adapters").extend("openai_compatible", {
|
||||
name = "llama-cpp",
|
||||
schema = {
|
||||
model = {
|
||||
default = "qwen2.5-coder-14b-instruct",
|
||||
},
|
||||
},
|
||||
env = {
|
||||
url = "http://localhost:8888",
|
||||
chat_url = "/v1/chat/completions",
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
strategies = {
|
||||
chat = {
|
||||
|
||||
@@ -48,7 +48,7 @@ function M:pop_progress_handle(id)
|
||||
end
|
||||
|
||||
function M:create_progress_handle(request)
|
||||
local title = " Requesting assistance"
|
||||
local title = " Requesting assistance"
|
||||
.. " ("
|
||||
.. request.data.strategy
|
||||
.. ") from "
|
||||
@@ -56,7 +56,9 @@ function M:create_progress_handle(request)
|
||||
.. " using "
|
||||
.. request.data.adapter.model
|
||||
local idx = 1
|
||||
local notification_id = notify(spinner_frames[idx] .. " In progress...", "info", { title = title, timeout = false })
|
||||
local start_time = os.time()
|
||||
local notification_id =
|
||||
notify(spinner_frames[idx] .. " In progress (" .. "0s" .. ")...", "info", { title = title, timeout = false })
|
||||
local handle = { notification_id = notification_id, title = title, finished = false }
|
||||
local timer = vim.loop.new_timer()
|
||||
timer:start(
|
||||
@@ -67,13 +69,17 @@ function M:create_progress_handle(request)
|
||||
return
|
||||
end -- stop updating if finished
|
||||
idx = idx % spinner_len + 1
|
||||
local elapsed = os.difftime(os.time(), start_time)
|
||||
local opts = { replace = handle.notification_id, title = title, timeout = false }
|
||||
local ok, new_id = safe_notify(spinner_frames[idx] .. " In progress...", "info", opts)
|
||||
local ok, new_id = safe_notify(spinner_frames[idx] .. " In progress (" .. elapsed .. "s)...", "info", opts)
|
||||
if ok then
|
||||
handle.notification_id = new_id
|
||||
else
|
||||
handle.notification_id =
|
||||
notify(spinner_frames[idx] .. " In progress...", "info", { title = title, timeout = false })
|
||||
handle.notification_id = notify(
|
||||
spinner_frames[idx] .. " In progress (" .. elapsed .. "s)...",
|
||||
"info",
|
||||
{ title = title, timeout = false }
|
||||
)
|
||||
end
|
||||
end)
|
||||
)
|
||||
|
||||
@@ -7,7 +7,7 @@ return {
|
||||
"bashls",
|
||||
"jedi_language_server",
|
||||
"jsonls",
|
||||
"yamlls",
|
||||
-- "yamlls",
|
||||
"vimls",
|
||||
"dotls",
|
||||
"dockerls",
|
||||
@@ -18,6 +18,7 @@ return {
|
||||
"ts_ls",
|
||||
"angularls",
|
||||
"ansiblels",
|
||||
"docker_compose_language_service",
|
||||
}
|
||||
|
||||
for _, lsp in ipairs(servers) do
|
||||
@@ -65,6 +66,13 @@ return {
|
||||
Lua = {},
|
||||
},
|
||||
})
|
||||
elseif lsp == "docker_compose_language_service" then
|
||||
lspconfig[lsp].setup({
|
||||
filetypes = { "dockerfile", "docker-compose", "yaml", "yml" },
|
||||
on_attach = function()
|
||||
vim.notify("Docker Compose LSP attached", nil, { title = "LSP" })
|
||||
end,
|
||||
})
|
||||
else
|
||||
lspconfig[lsp].setup({
|
||||
on_attach = function()
|
||||
|
||||
102
lua/utils/hyprland/lsp/init.lua
Normal file
102
lua/utils/hyprland/lsp/init.lua
Normal file
@@ -0,0 +1,102 @@
|
||||
vim.notify = require("notify")
|
||||
|
||||
local client_notifs = {}
|
||||
|
||||
local function get_notif_data(client_id, token)
|
||||
if not client_notifs[client_id] then
|
||||
client_notifs[client_id] = {}
|
||||
end
|
||||
|
||||
if not client_notifs[client_id][token] then
|
||||
client_notifs[client_id][token] = {}
|
||||
end
|
||||
|
||||
return client_notifs[client_id][token]
|
||||
end
|
||||
|
||||
local spinner_frames = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" }
|
||||
|
||||
local function update_spinner(client_id, token)
|
||||
local notif_data = get_notif_data(client_id, token)
|
||||
|
||||
if notif_data.spinner then
|
||||
local new_spinner = (notif_data.spinner + 1) % #spinner_frames
|
||||
notif_data.spinner = new_spinner
|
||||
|
||||
notif_data.notification = vim.notify("", nil, {
|
||||
hide_from_history = true,
|
||||
icon = spinner_frames[new_spinner],
|
||||
replace = notif_data.notification,
|
||||
})
|
||||
|
||||
vim.defer_fn(function()
|
||||
update_spinner(client_id, token)
|
||||
end, 100)
|
||||
end
|
||||
end
|
||||
|
||||
local function format_title(title, client_name)
|
||||
return client_name .. (#title > 0 and ": " .. title or "")
|
||||
end
|
||||
|
||||
local function format_message(message, percentage)
|
||||
return (percentage and percentage .. "%\t" or "") .. (message or "")
|
||||
end
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
pattern = { "*.hl", "hypr*.conf" },
|
||||
callback = function(event)
|
||||
-- print(string.format("starting hyprls for %s", vim.inspect(event)))
|
||||
vim.lsp.start({
|
||||
name = "hyprlang",
|
||||
cmd = { "hyprls" },
|
||||
root_dir = vim.fn.getcwd(),
|
||||
on_attach = function()
|
||||
vim.notify("Hyprlang LSP attached", "info")
|
||||
end,
|
||||
on_init = function()
|
||||
vim.notify("Hyprlang LSP initialized", "info")
|
||||
end,
|
||||
handlers = {
|
||||
["$/progress"] = function(_, result, ctx)
|
||||
local client_id = ctx.client_id
|
||||
|
||||
local val = result.value
|
||||
|
||||
if not val.kind then
|
||||
return
|
||||
end
|
||||
|
||||
local notif_data = get_notif_data(client_id, result.token)
|
||||
|
||||
if val.kind == "begin" then
|
||||
local message = format_message(val.message, val.percentage)
|
||||
|
||||
notif_data.notification = vim.notify(message, "info", {
|
||||
title = format_title(val.title, vim.lsp.get_client_by_id(client_id).name),
|
||||
icon = spinner_frames[1],
|
||||
timeout = false,
|
||||
hide_from_history = false,
|
||||
})
|
||||
|
||||
notif_data.spinner = 1
|
||||
update_spinner(client_id, result.token)
|
||||
elseif val.kind == "report" and notif_data then
|
||||
notif_data.notification = vim.notify(format_message(val.message, val.percentage), "info", {
|
||||
replace = notif_data.notification,
|
||||
hide_from_history = false,
|
||||
})
|
||||
elseif val.kind == "end" and notif_data then
|
||||
notif_data.notification =
|
||||
vim.notify(val.message and format_message(val.message) or "Complete", "info", {
|
||||
icon = "",
|
||||
replace = notif_data.notification,
|
||||
timeout = 3000,
|
||||
})
|
||||
|
||||
notif_data.spinner = nil
|
||||
end
|
||||
end,
|
||||
},
|
||||
})
|
||||
end,
|
||||
})
|
||||
@@ -10,3 +10,6 @@ parser_config.hyprlang = {
|
||||
},
|
||||
filetype = "conf", -- if filetype does not match the parser name
|
||||
}
|
||||
vim.filetype.add({
|
||||
pattern = { [".*/hypr/.*%.conf"] = "hyprlang" },
|
||||
})
|
||||
Reference in New Issue
Block a user