diff --git a/lua/plugins/hover.lua b/lua/plugins/hover.lua index f63b4d0..2275821 100644 --- a/lua/plugins/hover.lua +++ b/lua/plugins/hover.lua @@ -1,21 +1,25 @@ --- @type LazySpec | LazySpec[] return { 'lewis6991/hover.nvim', + event = 'VeryLazy', keys = { { 'K', desc = 'Hover documentation' }, { 'gK', desc = 'Hover select provider' }, { '', mode = 'n', desc = 'Hover previous source' }, { '', mode = 'n', desc = 'Hover next source' }, - { '', mode = 'n', desc = 'Hover mouse' }, + -- { '', mode = 'n', desc = 'Hover mouse' }, + { 'H', desc = 'Toggle [H]over' }, }, config = function() - require('hover').config { + local hover = require 'hover' + hover.setup { -- Require providers --- @type (string|Hover.Config.Provider)[] providers = { 'hover.providers.lsp', 'hover.providers.diagnostic', 'hover.providers.dap', + 'hover.providers.dictionary', -- require('hover.providers.gh') -- require('hover.providers.gh_user') -- require('hover.providers.jira') @@ -30,7 +34,7 @@ return { -- Whether the contents of a currently open hover window should be moved -- to a :h preview-window when pressing the hover keymap. preview_window = true, - title = true, + title = false, mouse_providers = { -- 'hover.providers.highlight', 'hover.providers.lsp', @@ -41,25 +45,41 @@ return { } -- Setup keymaps - vim.keymap.set('n', 'K', require('hover').open, { desc = 'hover.nvim' }) - vim.keymap.set('n', 'gK', require('hover').select, { desc = 'hover.nvim (select)' }) + vim.keymap.set('n', 'K', hover.open, { desc = 'hover.nvim' }) + -- vim.keymap.set('n', 'gK', function() + -- hover.select {} + -- end, { desc = 'hover.nvim (select)' }) vim.keymap.set('n', '', function() - require('hover').switch 'previous' + hover.switch 'previous' end, { desc = 'hover.nvim (previous source)' }) vim.keymap.set('n', '', function() - require('hover').switch 'next' + hover.switch 'next' end, { desc = 'hover.nvim (next source)' }) + local hover_enabled = true + vim.keymap.set('n', 'H', function() + hover_enabled = not hover_enabled + vim.notify('Hover ' .. (hover_enabled and 'Enabled' or 'Disabled')) + end, { desc = 'Toggle [H]over' }) + -- Mouse support - vim.keymap.set('n', '', require('hover').mouse, { desc = 'hover.nvim (mouse)' }) + -- vim.keymap.set('n', '', require('hover').mouse, { desc = 'hover.nvim (mouse)' }) - vim.o.mousemoveevent = true + -- vim.o.mousemoveevent = true -- Auto open docs on hover, but only for LSP-attached buffers vim.api.nvim_create_autocmd('CursorHold', { group = vim.api.nvim_create_augroup('hover_auto_open', { clear = true }), callback = function() + if not hover_enabled then + return + end local bufnr = vim.api.nvim_get_current_buf() + -- Only trigger automatically if a hover window isn't already open + local hover_win = vim.b[bufnr].hover_preview + if hover_win and vim.api.nvim_win_is_valid(hover_win) then + return + end if vim.api.nvim_buf_is_loaded(bufnr) and #vim.lsp.get_clients { bufnr = bufnr } > 0 then require('hover').open() end