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