feat: Bring back auto_preview

This commit is contained in:
Simrat Grewal
2022-08-15 14:59:40 -07:00
parent ab3c25c3d9
commit 47cbb20f52
2 changed files with 26 additions and 12 deletions

View File

@@ -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)

View File

@@ -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')