diff --git a/lua/outline/highlight.lua b/lua/outline/highlight.lua index 514c1f3..2fcddb1 100644 --- a/lua/outline/highlight.lua +++ b/lua/outline/highlight.lua @@ -9,13 +9,17 @@ local M = { ---Clear all highlights in buffer ---@param bufnr integer function M.clear_all_ns(bufnr) - vim.api.nvim_buf_clear_namespace(bufnr, -1, 0, -1) + if vim.api.nvim_buf_is_valid(bufnr) then + vim.api.nvim_buf_clear_namespace(bufnr, -1, 0, -1) + end end ---Clear hover highlights in buffer ---@param bufnr integer function M.clear_hovers(bufnr) - vim.api.nvim_buf_clear_namespace(bufnr, M.ns.hover, 0, -1) + if vim.api.nvim_buf_is_valid(bufnr) then + vim.api.nvim_buf_clear_namespace(bufnr, M.ns.hover, 0, -1) + end end ---Add single hover highlights diff --git a/lua/outline/view.lua b/lua/outline/view.lua index 6067e77..a790d2a 100644 --- a/lua/outline/view.lua +++ b/lua/outline/view.lua @@ -87,13 +87,15 @@ end ---Replace all lines in buffer with given new `lines` ---@param lines string[] function View:rewrite_lines(lines) - vim.api.nvim_buf_set_option(self.buf, 'modifiable', true) - vim.api.nvim_buf_set_lines(self.buf, 0, -1, false, lines) - vim.api.nvim_buf_set_option(self.buf, 'modifiable', false) + if vim.api.nvim_buf_is_valid(self.buf) then + vim.api.nvim_buf_set_option(self.buf, 'modifiable', true) + vim.api.nvim_buf_set_lines(self.buf, 0, -1, false, lines) + vim.api.nvim_buf_set_option(self.buf, 'modifiable', false) + end end function View:clear_all_ns() - highlight.clear_all_ns(self.buf) + pcall(function() highlight.clear_all_ns(self.buf) end) end ---Ensure all existing highlights are already cleared before calling!