From 47cbb20f5203547957e2eb8daca266ed8953bb3a Mon Sep 17 00:00:00 2001 From: Simrat Grewal Date: Mon, 15 Aug 2022 14:59:40 -0700 Subject: [PATCH] feat: Bring back auto_preview --- lua/symbols-outline.lua | 15 +++++++++++++++ lua/symbols-outline/preview.lua | 23 +++++++++++------------ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lua/symbols-outline.lua b/lua/symbols-outline.lua index 814e492..83038ed 100644 --- a/lua/symbols-outline.lua +++ b/lua/symbols-outline.lua @@ -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) diff --git a/lua/symbols-outline/preview.lua b/lua/symbols-outline/preview.lua index 8b384dd..92556c2 100644 --- a/lua/symbols-outline/preview.lua +++ b/lua/symbols-outline/preview.lua @@ -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')