Cleanup, bugfixes
parent
3a2a09ea38
commit
c39b1a5e4e
|
|
@ -181,7 +181,8 @@ local _make_floating_popup_size = function(contents, opts)
|
||||||
return width, height
|
return width, height
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param content table window content
|
---@param sig_content table|nil signature window content
|
||||||
|
---@param doc_content table|nil documentation window content
|
||||||
---@param opts table window options
|
---@param opts table window options
|
||||||
---@returns (table) Options
|
---@returns (table) Options
|
||||||
local function _make_floating_popup_options(sig_content, doc_content, opts)
|
local function _make_floating_popup_options(sig_content, doc_content, opts)
|
||||||
|
|
@ -325,7 +326,9 @@ local function create_float_windows(result, syntax, opts)
|
||||||
|
|
||||||
local sig_content = make_signature_lines(result, opts.max_width)
|
local sig_content = make_signature_lines(result, opts.max_width)
|
||||||
local doc_content = make_doc_lines(result, syntax)
|
local doc_content = make_doc_lines(result, syntax)
|
||||||
|
---@diagnostic disable-next-line: param-type-mismatch
|
||||||
api.nvim_buf_set_lines(sig_bufnr, 0, -1, true, sig_content)
|
api.nvim_buf_set_lines(sig_bufnr, 0, -1, true, sig_content)
|
||||||
|
---@diagnostic disable-next-line: param-type-mismatch
|
||||||
api.nvim_buf_set_lines(doc_bufnr, 0, -1, true, doc_content)
|
api.nvim_buf_set_lines(doc_bufnr, 0, -1, true, doc_content)
|
||||||
|
|
||||||
local sig_float_options, doc_float_options = _make_floating_popup_options(sig_content, doc_content, opts)
|
local sig_float_options, doc_float_options = _make_floating_popup_options(sig_content, doc_content, opts)
|
||||||
|
|
@ -333,6 +336,7 @@ local function create_float_windows(result, syntax, opts)
|
||||||
local sig_winnr = api.nvim_open_win(sig_bufnr, false, sig_float_options)
|
local sig_winnr = api.nvim_open_win(sig_bufnr, false, sig_float_options)
|
||||||
vim.wo[sig_winnr].conceallevel = 2
|
vim.wo[sig_winnr].conceallevel = 2
|
||||||
vim.wo[sig_winnr].foldenable = false
|
vim.wo[sig_winnr].foldenable = false
|
||||||
|
vim.wo[sig_winnr].winblend = opts.winblend
|
||||||
vim.bo[sig_bufnr].modifiable = false
|
vim.bo[sig_bufnr].modifiable = false
|
||||||
vim.bo[sig_bufnr].bufhidden = "hide"
|
vim.bo[sig_bufnr].bufhidden = "hide"
|
||||||
-- save focus_id
|
-- save focus_id
|
||||||
|
|
@ -342,6 +346,7 @@ local function create_float_windows(result, syntax, opts)
|
||||||
local doc_winnr = api.nvim_open_win(doc_bufnr, false, doc_float_options)
|
local doc_winnr = api.nvim_open_win(doc_bufnr, false, doc_float_options)
|
||||||
vim.wo[doc_winnr].conceallevel = 2
|
vim.wo[doc_winnr].conceallevel = 2
|
||||||
vim.wo[doc_winnr].foldenable = false
|
vim.wo[doc_winnr].foldenable = false
|
||||||
|
vim.wo[doc_winnr].winblend = opts.winblend
|
||||||
vim.bo[doc_bufnr].modifiable = false
|
vim.bo[doc_bufnr].modifiable = false
|
||||||
vim.bo[doc_bufnr].bufhidden = "hide"
|
vim.bo[doc_bufnr].bufhidden = "hide"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ function SignatureHelp.new()
|
||||||
timer = nil,
|
timer = nil,
|
||||||
current_signatures = nil,
|
current_signatures = nil,
|
||||||
enabled = false,
|
enabled = false,
|
||||||
normal_mode_active = false,
|
|
||||||
current_signature_idx = nil,
|
current_signature_idx = nil,
|
||||||
|
|
||||||
doc_winnr = nil,
|
doc_winnr = nil,
|
||||||
|
|
@ -28,11 +27,12 @@ function SignatureHelp.new()
|
||||||
doc_win_showing = false,
|
doc_win_showing = false,
|
||||||
doc_win_focused = false,
|
doc_win_focused = false,
|
||||||
config = nil,
|
config = nil,
|
||||||
|
|
||||||
|
active_winnr = vim.api.nvim_get_current_win(),
|
||||||
}, SignatureHelp)
|
}, SignatureHelp)
|
||||||
|
|
||||||
instance._default_config = {
|
instance._default_config = {
|
||||||
silent = false,
|
silent = false,
|
||||||
number = true,
|
|
||||||
icons = {
|
icons = {
|
||||||
parameter = "",
|
parameter = "",
|
||||||
method = " ",
|
method = " ",
|
||||||
|
|
@ -53,11 +53,9 @@ function SignatureHelp.new()
|
||||||
border = "rounded",
|
border = "rounded",
|
||||||
winblend = 10,
|
winblend = 10,
|
||||||
zindex = 200,
|
zindex = 200,
|
||||||
focusable = false,
|
|
||||||
max_height = 20,
|
max_height = 20,
|
||||||
max_width = 80,
|
max_width = 80,
|
||||||
anchor_bias = "below", -- below|above|auto
|
anchor_bias = "below", -- below|above|auto
|
||||||
relative = "cursor",
|
|
||||||
offset_y = 0,
|
offset_y = 0,
|
||||||
offset_x = 0,
|
offset_x = 0,
|
||||||
},
|
},
|
||||||
|
|
@ -184,11 +182,10 @@ function SignatureHelp:display_doc_win()
|
||||||
self.doc_bufnr, self.doc_winnr = self._display_doc_win()
|
self.doc_bufnr, self.doc_winnr = self._display_doc_win()
|
||||||
self.doc_win_showing = true
|
self.doc_win_showing = true
|
||||||
self.doc_win_focused = true
|
self.doc_win_focused = true
|
||||||
local active_winnr = vim.api.nvim_get_current_win()
|
|
||||||
vim.api.nvim_set_current_win(self.doc_winnr)
|
vim.api.nvim_set_current_win(self.doc_winnr)
|
||||||
|
|
||||||
exit_docs = function()
|
exit_docs = function()
|
||||||
vim.api.nvim_set_current_win(active_winnr)
|
vim.api.nvim_set_current_win(self.active_winnr)
|
||||||
vim.fn.feedkeys("i", "t") --put us back into insert mode
|
vim.fn.feedkeys("i", "t") --put us back into insert mode
|
||||||
self.doc_win_focused = false
|
self.doc_win_focused = false
|
||||||
end
|
end
|
||||||
|
|
@ -267,14 +264,21 @@ function SignatureHelp:setup_autocmds()
|
||||||
api.nvim_create_autocmd({ "InsertEnter", "CursorMovedI" }, {
|
api.nvim_create_autocmd({ "InsertEnter", "CursorMovedI" }, {
|
||||||
group = group,
|
group = group,
|
||||||
callback = function()
|
callback = function()
|
||||||
-- local cmp_visible = require("cmp").visible()
|
|
||||||
-- if cmp_visible then
|
|
||||||
-- self:hide()
|
|
||||||
-- elseif vim.fn.pumvisible() == 0 then
|
|
||||||
debounced_trigger()
|
debounced_trigger()
|
||||||
-- else
|
end,
|
||||||
-- self:hide()
|
})
|
||||||
-- end
|
|
||||||
|
-- make sure signature help windows get closed if we switch out of the doc window
|
||||||
|
-- instead of exiting it using the exit keymaps
|
||||||
|
api.nvim_create_autocmd({ "WinEnter" }, {
|
||||||
|
group = group,
|
||||||
|
callback = function()
|
||||||
|
vim.defer_fn(function()
|
||||||
|
if self.active_winnr == vim.api.nvim_get_current_win() and vim.api.nvim_get_mode().mode == "n" then
|
||||||
|
self:hide_sig_win()
|
||||||
|
self:hide_doc_win()
|
||||||
|
end
|
||||||
|
end, 30)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -340,7 +344,6 @@ function SignatureHelp:prev_signature()
|
||||||
end
|
end
|
||||||
|
|
||||||
function SignatureHelp:toggle_docs()
|
function SignatureHelp:toggle_docs()
|
||||||
-- vim.notify("doc_win_showing: " .. vim.inspect(self.doc_win_showing))
|
|
||||||
if self.doc_win_showing then
|
if self.doc_win_showing then
|
||||||
self:hide_doc_win()
|
self:hide_doc_win()
|
||||||
elseif self.sig_win_showing then
|
elseif self.sig_win_showing then
|
||||||
|
|
@ -348,15 +351,6 @@ function SignatureHelp:toggle_docs()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function SignatureHelp:toggle_normal_mode()
|
|
||||||
self.normal_mode_active = not self.normal_mode_active
|
|
||||||
if self.normal_mode_active then
|
|
||||||
self:trigger()
|
|
||||||
else
|
|
||||||
self:hide_sig_win()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.setup(opts)
|
function M.setup(opts)
|
||||||
-- Ensure setup is called only once
|
-- Ensure setup is called only once
|
||||||
if M._initialized then
|
if M._initialized then
|
||||||
|
|
@ -408,10 +402,6 @@ function M.setup(opts)
|
||||||
signature_help:toggle_docs()
|
signature_help:toggle_docs()
|
||||||
end
|
end
|
||||||
|
|
||||||
M.toggle_normal_mode = function()
|
|
||||||
signature_help:toggle_normal_mode()
|
|
||||||
end
|
|
||||||
|
|
||||||
return signature_help
|
return signature_help
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue