reduced dependencies
This commit is contained in:
1 parent
085031114f
commit
d5654a2d29
4 files changed
+179
-28
No files matched your search
+1
-7
@@ -243,13 +243,7 @@ RUN \
|
||||
|
||||
RUN \
|
||||
if [ "$NV_DARCULA_ENABLE_COC" = "false" ]; then \
|
||||
nvim --headless "+MasonToolsInstallSync" "+qall" && \
|
||||
nvim --headless "+LspInstall bashls" "+qall" && \
|
||||
nvim --headless "+LspInstall clangd" "+qall" && \
|
||||
nvim --headless "+LspInstall cspell_ls" "+qall" && \
|
||||
nvim --headless "+LspInstall gopls" "+qall" && \
|
||||
nvim --headless "+LspInstall lua_ls" "+qall" && \
|
||||
nvim --headless "+LspInstall vimls" "+qall"; \
|
||||
nvim --headless "+MasonToolsInstallSync" "+qall"; \
|
||||
fi
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
-- The MIT License (MIT)
|
||||
--
|
||||
-- Copyright © 2026 Scott E. Graves <scott.e.graves@protonmail.com>
|
||||
--
|
||||
-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
-- and associated documentation files (the “Software”), to deal in the Software without restriction,
|
||||
-- including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
-- sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
-- furnished to do so, subject to the following conditions:
|
||||
--
|
||||
-- The above copyright notice and this permission notice shall be included in all copies or
|
||||
-- substantial portions of the Software.
|
||||
--
|
||||
-- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
-- BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--
|
||||
local M = {}
|
||||
|
||||
local namespace = vim.api.nvim_create_namespace("DarculaLightbulb")
|
||||
local requests = {}
|
||||
local revisions = {}
|
||||
|
||||
local config = {
|
||||
priority = 10,
|
||||
sign = {
|
||||
enabled = true,
|
||||
text = "💡",
|
||||
hl = "DiagnosticSignInfo"
|
||||
},
|
||||
virtual_text = {
|
||||
enabled = false,
|
||||
text = "💡",
|
||||
hl = "DiagnosticVirtualTextInfo"
|
||||
}
|
||||
}
|
||||
|
||||
local function cancel_request(bufnr)
|
||||
local cancel = requests[bufnr]
|
||||
requests[bufnr] = nil
|
||||
if cancel then
|
||||
pcall(cancel)
|
||||
end
|
||||
end
|
||||
|
||||
local function clear_indicator(bufnr)
|
||||
if vim.api.nvim_buf_is_valid(bufnr) then
|
||||
vim.api.nvim_buf_clear_namespace(bufnr, namespace, 0, -1)
|
||||
end
|
||||
end
|
||||
|
||||
local function render(bufnr, line)
|
||||
clear_indicator(bufnr)
|
||||
if not vim.api.nvim_buf_is_valid(bufnr) then
|
||||
return
|
||||
end
|
||||
|
||||
line = math.max(0, math.min(line, vim.api.nvim_buf_line_count(bufnr) - 1))
|
||||
|
||||
vim.api.nvim_buf_set_extmark(
|
||||
bufnr,
|
||||
namespace,
|
||||
line,
|
||||
0,
|
||||
{
|
||||
strict = false,
|
||||
priority = config.priority,
|
||||
sign_text = config.sign.enabled and config.sign.text or nil,
|
||||
sign_hl_group = config.sign.enabled and config.sign.hl or nil,
|
||||
virt_text = config.virtual_text.enabled and
|
||||
{{config.virtual_text.text, config.virtual_text.hl}} or
|
||||
nil,
|
||||
virt_text_pos = config.virtual_text.enabled and "eol" or nil,
|
||||
hl_mode = config.virtual_text.enabled and "combine" or nil
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
function M.clear(bufnr)
|
||||
bufnr = bufnr or vim.api.nvim_get_current_buf()
|
||||
revisions[bufnr] = (revisions[bufnr] or 0) + 1
|
||||
cancel_request(bufnr)
|
||||
clear_indicator(bufnr)
|
||||
end
|
||||
|
||||
function M.update()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local win = vim.api.nvim_get_current_win()
|
||||
local cursor = vim.api.nvim_win_get_cursor(win)
|
||||
local line = cursor[1] - 1
|
||||
local revision = (revisions[bufnr] or 0) + 1
|
||||
revisions[bufnr] = revision
|
||||
|
||||
cancel_request(bufnr)
|
||||
|
||||
local clients = vim.lsp.get_clients(
|
||||
{bufnr = bufnr, method = "textDocument/codeAction"}
|
||||
)
|
||||
if #clients == 0 then
|
||||
clear_indicator(bufnr)
|
||||
return
|
||||
end
|
||||
|
||||
local diagnostics = vim.lsp.diagnostic.from(
|
||||
vim.diagnostic.get(bufnr, {lnum = line})
|
||||
)
|
||||
|
||||
requests[bufnr] = vim.lsp.buf_request_all(
|
||||
bufnr,
|
||||
"textDocument/codeAction",
|
||||
function(client)
|
||||
local params = vim.lsp.util.make_range_params(win, client.offset_encoding)
|
||||
params.context = {diagnostics = diagnostics}
|
||||
return params
|
||||
end,
|
||||
function(responses)
|
||||
if
|
||||
revisions[bufnr] ~= revision or
|
||||
not vim.api.nvim_buf_is_valid(bufnr)
|
||||
then
|
||||
return
|
||||
end
|
||||
requests[bufnr] = nil
|
||||
|
||||
local has_actions = false
|
||||
for _, response in pairs(responses) do
|
||||
if response.result ~= nil and not vim.tbl_isempty(response.result) then
|
||||
has_actions = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if has_actions then
|
||||
render(bufnr, line)
|
||||
else
|
||||
clear_indicator(bufnr)
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
function M.setup(opts)
|
||||
config = vim.tbl_deep_extend("force", config, opts or {})
|
||||
|
||||
local group = vim.api.nvim_create_augroup("DarculaLightbulb", {clear = true})
|
||||
vim.api.nvim_create_autocmd(
|
||||
{"CursorHold", "CursorHoldI"},
|
||||
{
|
||||
callback = M.update,
|
||||
group = group
|
||||
}
|
||||
)
|
||||
vim.api.nvim_create_autocmd(
|
||||
"WinLeave",
|
||||
{
|
||||
callback = function(args)
|
||||
M.clear(args.buf)
|
||||
end,
|
||||
group = group
|
||||
}
|
||||
)
|
||||
vim.api.nvim_create_autocmd(
|
||||
"BufWipeout",
|
||||
{
|
||||
callback = function(args)
|
||||
cancel_request(args.buf)
|
||||
requests[args.buf] = nil
|
||||
revisions[args.buf] = nil
|
||||
end,
|
||||
group = group
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -85,7 +85,6 @@ else
|
||||
{src = "https://github.com/rafamadriz/friendly-snippets"},
|
||||
{src = "https://github.com/neovim/nvim-lspconfig"},
|
||||
{src = "https://github.com/akinsho/flutter-tools.nvim"},
|
||||
{src = "https://github.com/kosayoda/nvim-lightbulb"},
|
||||
{src = "https://github.com/ray-x/lsp_signature.nvim"}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -23,10 +23,8 @@ end
|
||||
|
||||
local symbols = require("darcula.utils.symbols")
|
||||
|
||||
require("nvim-lightbulb").setup(
|
||||
require("darcula.lsp.lightbulb").setup(
|
||||
{
|
||||
hide_in_unfocused_buffer = true,
|
||||
link_highlights = false,
|
||||
sign = {
|
||||
enabled = not NV_DARCULA_ENABLE_VIRTUAL_TEXT,
|
||||
text = symbols.status.info,
|
||||
@@ -36,23 +34,6 @@ require("nvim-lightbulb").setup(
|
||||
enabled = NV_DARCULA_ENABLE_VIRTUAL_TEXT,
|
||||
text = symbols.status.info,
|
||||
hl = "DiagnosticVirtualTextInfo"
|
||||
},
|
||||
float = {
|
||||
enabled = false
|
||||
},
|
||||
status_text = {
|
||||
enabled = false
|
||||
},
|
||||
number = {
|
||||
enabled = false
|
||||
},
|
||||
line = {
|
||||
enabled = false
|
||||
},
|
||||
autocmd = {
|
||||
enabled = true,
|
||||
events = {"CursorHold", "CursorHoldI"},
|
||||
pattern = {"*"}
|
||||
}
|
||||
}
|
||||
)
|
||||
Reference in new issue
Block a user