feat: Bring back auto_preview
This commit is contained in:
@@ -36,6 +36,20 @@ local function setup_global_autocmd()
|
||||
})
|
||||
end
|
||||
|
||||
local function setup_buffer_autocmd()
|
||||
if config.options.auto_preview then
|
||||
vim.api.nvim_create_autocmd('CursorHold', {
|
||||
buffer = 0,
|
||||
callback = require('symbols-outline.preview').show,
|
||||
})
|
||||
else
|
||||
vim.api.nvim_create_autocmd('CursorMoved', {
|
||||
buffer = 0,
|
||||
callback = require('symbols-outline.preview').close,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-------------------------
|
||||
-- STATE
|
||||
-------------------------
|
||||
@@ -188,6 +202,7 @@ local function handler(response)
|
||||
})
|
||||
|
||||
setup_keymaps(M.view.bufnr)
|
||||
setup_buffer_autocmd()
|
||||
|
||||
local items = parser.parse(response)
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
local vim = vim
|
||||
local main = require 'symbols-outline'
|
||||
local so = require 'symbols-outline'
|
||||
local config = require 'symbols-outline.config'
|
||||
|
||||
local M = {}
|
||||
@@ -13,21 +12,21 @@ local state = {
|
||||
|
||||
local function is_current_win_outline()
|
||||
local curwin = vim.api.nvim_get_current_win()
|
||||
return curwin == main.state.outline_win
|
||||
return curwin == so.view.winnr
|
||||
end
|
||||
|
||||
local function has_code_win()
|
||||
local isWinValid = vim.api.nvim_win_is_valid(main.state.code_win)
|
||||
local isWinValid = vim.api.nvim_win_is_valid(so.state.code_win)
|
||||
if not isWinValid then
|
||||
return false
|
||||
end
|
||||
local bufnr = vim.api.nvim_win_get_buf(main.state.code_win)
|
||||
local bufnr = vim.api.nvim_win_get_buf(so.state.code_win)
|
||||
local isBufValid = vim.api.nvim_buf_is_valid(bufnr)
|
||||
return isBufValid
|
||||
end
|
||||
|
||||
local function get_offset()
|
||||
local outline_winnr = main.state.outline_win
|
||||
local outline_winnr = so.view.winnr
|
||||
local width = 53
|
||||
local height = 0
|
||||
|
||||
@@ -49,13 +48,13 @@ local function get_height()
|
||||
end
|
||||
|
||||
local function get_hovered_node()
|
||||
local hovered_line = vim.api.nvim_win_get_cursor(main.state.outline_win)[1]
|
||||
local node = main.state.outline_items[hovered_line]
|
||||
local hovered_line = vim.api.nvim_win_get_cursor(so.view.winnr)[1]
|
||||
local node = so.state.outline_items[hovered_line]
|
||||
return node
|
||||
end
|
||||
|
||||
local function update_preview(code_buf)
|
||||
code_buf = code_buf or vim.api.nvim_win_get_buf(main.state.code_win)
|
||||
code_buf = code_buf or vim.api.nvim_win_get_buf(so.state.code_win)
|
||||
|
||||
local node = get_hovered_node()
|
||||
if not node then
|
||||
@@ -73,7 +72,7 @@ local function update_preview(code_buf)
|
||||
end
|
||||
|
||||
local function setup_preview_buf()
|
||||
local code_buf = vim.api.nvim_win_get_buf(main.state.code_win)
|
||||
local code_buf = vim.api.nvim_win_get_buf(so.state.code_win)
|
||||
local ft = vim.api.nvim_buf_get_option(code_buf, 'filetype')
|
||||
|
||||
local function treesitter_attach()
|
||||
@@ -113,7 +112,7 @@ local function update_hover()
|
||||
end
|
||||
|
||||
local provider = _G._symbols_outline_current_provider
|
||||
local params = get_hover_params(node, main.state.code_win)
|
||||
local params = get_hover_params(node, so.state.code_win)
|
||||
|
||||
provider.hover_info(params.bufnr, params, function(err, result)
|
||||
if err then
|
||||
@@ -146,7 +145,7 @@ local function setup_hover_buf()
|
||||
if not has_code_win() then
|
||||
return
|
||||
end
|
||||
local code_buf = vim.api.nvim_win_get_buf(main.state.code_win)
|
||||
local code_buf = vim.api.nvim_win_get_buf(so.state.code_win)
|
||||
local ft = vim.api.nvim_buf_get_option(code_buf, 'filetype')
|
||||
vim.api.nvim_buf_set_option(state.hover_buf, 'syntax', ft)
|
||||
vim.api.nvim_buf_set_option(state.hover_buf, 'bufhidden', 'delete')
|
||||
|
||||
Reference in New Issue
Block a user