From 51744212482b304dd84554a8c3157b8e1c61f129 Mon Sep 17 00:00:00 2001 From: Joshua Yin <56745535+Subjective@users.noreply.github.com> Date: Fri, 8 Sep 2023 19:11:44 -0700 Subject: [PATCH 1/2] fix(qfwin): add nil check for object in winleave autocmd --- lua/bqf/qfwin/session.lua | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lua/bqf/qfwin/session.lua b/lua/bqf/qfwin/session.lua index b705ae8..5d50bb9 100644 --- a/lua/bqf/qfwin/session.lua +++ b/lua/bqf/qfwin/session.lua @@ -1,11 +1,11 @@ local api = vim.api local fn = vim.fn -local list = require('bqf.qfwin.list') -local utils = require('bqf.utils') +local list = require("bqf.qfwin.list") +local utils = require("bqf.utils") local function isNormalWinType(winid) - return fn.win_gettype(winid) == '' + return fn.win_gettype(winid) == "" end --- @@ -14,14 +14,14 @@ end ---@return number local function getPwinid(winid, qlist) local pwinid - if qlist.type == 'loc' then + if qlist.type == "loc" then pwinid = qlist.filewinid > 0 and qlist.filewinid or -1 else local function isValid(wid) return wid > 0 and isNormalWinType(wid) end - pwinid = fn.win_getid(fn.winnr('#')) + pwinid = fn.win_getid(fn.winnr("#")) if not isValid(pwinid) then local tabpage = api.nvim_win_get_tabpage(winid) for _, owinid in ipairs(api.nvim_tabpage_list_wins(tabpage)) do @@ -44,14 +44,14 @@ end ---@field private _list BqfQfList ---@field private _pwinid number ---@field winid number -local QfSession = {pool = {}} +local QfSession = { pool = {} } function QfSession:list() return self._list end function QfSession:previousWinid() - if not utils.isWinValid(self._pwinid) or fn.win_gettype(self._pwinid) ~= '' then + if not utils.isWinValid(self._pwinid) or fn.win_gettype(self._pwinid) ~= "" then self._pwinid = getPwinid(self.winid, self._list) end return utils.isWinValid(self._pwinid) and self._pwinid or -1 @@ -59,7 +59,7 @@ end function QfSession:validate() local winType = fn.win_gettype(self.winid) - return winType == 'quickfix' or winType == 'loclist' + return winType == "quickfix" or winType == "loclist" end --- @@ -92,7 +92,9 @@ function QfSession:saveWinView(winid) if winid then local obj = self.pool[winid] local wv = utils.winCall(winid, fn.winsaveview) - obj:list():setWinView(wv) + if obj ~= nil then + obj:list():setWinView(wv) + end end end From cf8b8ceffe4a8536a23c94c001da436c428a7220 Mon Sep 17 00:00:00 2001 From: Josh <56745535+Subjective@users.noreply.github.com> Date: Wed, 8 Nov 2023 22:02:31 -0800 Subject: [PATCH 2/2] Revert style changes --- lua/bqf/qfwin/session.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lua/bqf/qfwin/session.lua b/lua/bqf/qfwin/session.lua index 5d50bb9..140c6b6 100644 --- a/lua/bqf/qfwin/session.lua +++ b/lua/bqf/qfwin/session.lua @@ -1,11 +1,11 @@ local api = vim.api local fn = vim.fn -local list = require("bqf.qfwin.list") -local utils = require("bqf.utils") +local list = require('bqf.qfwin.list') +local utils = require('bqf.utils') local function isNormalWinType(winid) - return fn.win_gettype(winid) == "" + return fn.win_gettype(winid) == '' end --- @@ -14,14 +14,14 @@ end ---@return number local function getPwinid(winid, qlist) local pwinid - if qlist.type == "loc" then + if qlist.type == 'loc' then pwinid = qlist.filewinid > 0 and qlist.filewinid or -1 else local function isValid(wid) return wid > 0 and isNormalWinType(wid) end - pwinid = fn.win_getid(fn.winnr("#")) + pwinid = fn.win_getid(fn.winnr('#')) if not isValid(pwinid) then local tabpage = api.nvim_win_get_tabpage(winid) for _, owinid in ipairs(api.nvim_tabpage_list_wins(tabpage)) do @@ -44,14 +44,14 @@ end ---@field private _list BqfQfList ---@field private _pwinid number ---@field winid number -local QfSession = { pool = {} } +local QfSession = {pool = {}} function QfSession:list() return self._list end function QfSession:previousWinid() - if not utils.isWinValid(self._pwinid) or fn.win_gettype(self._pwinid) ~= "" then + if not utils.isWinValid(self._pwinid) or fn.win_gettype(self._pwinid) ~= '' then self._pwinid = getPwinid(self.winid, self._list) end return utils.isWinValid(self._pwinid) and self._pwinid or -1 @@ -59,7 +59,7 @@ end function QfSession:validate() local winType = fn.win_gettype(self.winid) - return winType == "quickfix" or winType == "loclist" + return winType == 'quickfix' or winType == 'loclist' end ---