diff --git a/lua/harpoon2/buffer.lua b/lua/harpoon2/buffer.lua index 6df7c6a7..b09d34e3 100644 --- a/lua/harpoon2/buffer.lua +++ b/lua/harpoon2/buffer.lua @@ -91,7 +91,6 @@ function M.setup_autocmds_and_keymaps(bufnr) vim.cmd( "autocmd BufLeave ++nested ++once silent lua require('harpoon2').ui:toggle_quick_menu()" ) - end ---@param bufnr number diff --git a/lua/harpoon2/config.lua b/lua/harpoon2/config.lua index d05c98dd..3355cbca 100644 --- a/lua/harpoon2/config.lua +++ b/lua/harpoon2/config.lua @@ -42,7 +42,6 @@ local M = {} ---@field settings? HarpoonPartialSettings ---@field [string] HarpoonPartialConfigItem - ---@return HarpoonPartialConfigItem function M.get_config(config, name) return vim.tbl_extend("force", {}, config.default, config[name] or {}) @@ -104,7 +103,7 @@ function M.get_default_config() if set_position then vim.api.nvim_win_set_cursor(0, { file_item.context.row or 1, - file_item.context.col or 0 + file_item.context.col or 0, }) end end, @@ -122,17 +121,17 @@ function M.get_default_config() ---@param name any ---@return HarpoonListItem add = function(name) - name = name or + name = name -- TODO: should we do path normalization??? -- i know i have seen sometimes it becoming an absolute -- path, if that is the case we can use the context to -- store the bufname and then have value be the normalized -- value - vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()) + or vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()) local bufnr = vim.fn.bufnr(name, false) - local pos = {1, 0} + local pos = { 1, 0 } if bufnr ~= -1 then pos = vim.api.nvim_win_get_cursor(0) end @@ -142,13 +141,13 @@ function M.get_default_config() context = { row = pos[1], col = pos[2], - } + }, } end, BufLeave = function(arg, list) - local bufnr = arg.buf; - local bufname = vim.api.nvim_buf_get_name(bufnr); + local bufnr = arg.buf + local bufname = vim.api.nvim_buf_get_name(bufnr) local item = list:get_by_display(bufname) if item then @@ -158,8 +157,8 @@ function M.get_default_config() end end, - autocmds = {"BufLeave"}, - } + autocmds = { "BufLeave" }, + }, } end diff --git a/lua/harpoon2/data.lua b/lua/harpoon2/data.lua index 577b6ff1..2bf5e453 100644 --- a/lua/harpoon2/data.lua +++ b/lua/harpoon2/data.lua @@ -40,7 +40,6 @@ end --- @field has_error boolean local Data = {} - -- 1. load the data -- 2. keep track of the lists requested -- 3. sync save @@ -49,7 +48,7 @@ Data.__index = Data ---@return HarpoonRawData local function read_data() - local path = Path:new(full_data_path) + local path = Path:new(full_data_path) local exists = path:exists() if not exists then @@ -68,9 +67,8 @@ function Data:new() return setmetatable({ _data = data, has_error = not ok, - seen = {} + seen = {}, }, self) - end ---@param key string @@ -89,7 +87,9 @@ end ---@return string[] function Data:data(key, name) if self.has_error then - error("Harpoon: there was an error reading the data file, cannot read data") + error( + "Harpoon: there was an error reading the data file, cannot read data" + ) end if not self.seen[key] then @@ -105,7 +105,9 @@ end ---@param values string[] function Data:update(key, name, values) if self.has_error then - error("Harpoon: there was an error reading the data file, cannot update") + error( + "Harpoon: there was an error reading the data file, cannot update" + ) end self:_get_data(key, name) self._data[key][name] = values @@ -136,7 +138,6 @@ function Data:sync() end end - M.Data = Data return M diff --git a/lua/harpoon2/init.lua b/lua/harpoon2/init.lua index 60246ed2..c2e8c40f 100644 --- a/lua/harpoon2/init.lua +++ b/lua/harpoon2/init.lua @@ -49,14 +49,13 @@ function Harpoon:setup(partial_config) if self.hooks_setup == false then local augroup = vim.api.nvim_create_augroup - local HarpoonGroup = augroup('Harpoon', {}) + local HarpoonGroup = augroup("Harpoon", {}) - vim.api.nvim_create_autocmd({"BufLeave", "VimLeavePre"}, { + vim.api.nvim_create_autocmd({ "BufLeave", "VimLeavePre" }, { group = HarpoonGroup, - pattern = '*', + pattern = "*", callback = function(ev) self:_for_each_list(function(list, config) - local fn = config[ev.event] if fn ~= nil then fn(ev, list) diff --git a/lua/harpoon2/list.lua b/lua/harpoon2/list.lua index 1e60cc4c..6c527067 100644 --- a/lua/harpoon2/list.lua +++ b/lua/harpoon2/list.lua @@ -1,7 +1,10 @@ local Listeners = require("harpoon2.listeners") local function index_of(items, element, config) - local equals = config and config.equals or function(a, b) return a == b end + local equals = config and config.equals + or function(a, b) + return a == b + end local index = -1 for i, item in ipairs(items) do if equals(element, item) then @@ -45,7 +48,10 @@ function HarpoonList:append(item) local index = index_of(self.items, item, self.config) if index == -1 then - Listeners.listeners:emit(Listeners.event_names.ADD, {list = self, item = item, idx = #self.items + 1}) + Listeners.listeners:emit( + Listeners.event_names.ADD, + { list = self, item = item, idx = #self.items + 1 } + ) table.insert(self.items, item) end @@ -57,7 +63,10 @@ function HarpoonList:prepend(item) item = item or self.config.add() local index = index_of(self.items, item, self.config) if index == -1 then - Listeners.listeners:emit(Listeners.event_names.ADD, {list = self, item = item, idx = 1}) + Listeners.listeners:emit( + Listeners.event_names.ADD, + { list = self, item = item, idx = 1 } + ) table.insert(self.items, 1, item) end @@ -68,7 +77,10 @@ end function HarpoonList:remove(item) for i, v in ipairs(self.items) do if self.config.equals(v, item) then - Listeners.listeners:emit(Listeners.event_names.REMOVE, {list = self, item = item, idx = i}) + Listeners.listeners:emit( + Listeners.event_names.REMOVE, + { list = self, item = item, idx = i } + ) table.remove(self.items, i) break end @@ -78,7 +90,10 @@ end ---@return HarpoonList function HarpoonList:removeAt(index) - Listeners.listeners:emit(Listeners.event_names.REMOVE, {list = self, item = self.items[index], idx = index}) + Listeners.listeners:emit( + Listeners.event_names.REMOVE, + { list = self, item = self.items[index], idx = index } + ) table.remove(self.items, index) return self end @@ -96,7 +111,6 @@ function HarpoonList:get_by_display(name) return self.items[index] end - --- much inefficiencies. dun care ---@param displayed string[] function HarpoonList:resolve_displayed(displayed) @@ -107,17 +121,24 @@ function HarpoonList:resolve_displayed(displayed) for i, v in ipairs(list_displayed) do local index = index_of(list_displayed, v) if index == -1 then - Listeners.listeners:emit(Listeners.event_names.REMOVE, {list = self, item = v, idx = i}) + Listeners.listeners:emit( + Listeners.event_names.REMOVE, + { list = self, item = v, idx = i } + ) end end for i, v in ipairs(displayed) do local index = index_of(list_displayed, v) if index == -1 then - Listeners.listeners:emit(Listeners.event_names.ADD, {list = self, item = v, idx = i}) + Listeners.listeners:emit( + Listeners.event_names.ADD, + { list = self, item = v, idx = i } + ) new_list[i] = self.config.add(v) else - local index_in_new_list = index_of(new_list, self.items[index], self.config) + local index_in_new_list = + index_of(new_list, self.items[index], self.config) if index_in_new_list == -1 then new_list[i] = self.items[index] end @@ -130,7 +151,10 @@ end function HarpoonList:select(index, options) local item = self.items[index] if item then - Listeners.listeners:emit(Listeners.event_names.SELECT, {list = self, item = item, idx = index}) + Listeners.listeners:emit( + Listeners.event_names.SELECT, + { list = self, item = item, idx = index } + ) self.config.select(item, options) end end @@ -187,6 +211,4 @@ function HarpoonList.decode(list_config, name, items) return HarpoonList:new(list_config, name, list_items) end - return HarpoonList - diff --git a/lua/harpoon2/listeners.lua b/lua/harpoon2/listeners.lua index 0a0a08f2..c079b633 100644 --- a/lua/harpoon2/listeners.lua +++ b/lua/harpoon2/listeners.lua @@ -1,4 +1,3 @@ - ---@alias HarpoonListener fun(type: string, args: any[] | any | nil): nil ---@class HarpoonListeners @@ -11,14 +10,14 @@ HarpoonListeners.__index = HarpoonListeners function HarpoonListeners:new() return setmetatable({ listeners = {}, - listenersByType = {} + listenersByType = {}, }, self) end ---@param cbOrType HarpoonListener | string ---@param cbOrNil HarpoonListener | string function HarpoonListeners:add_listener(cbOrType, cbOrNil) - if (type(cbOrType) == "string") then + if type(cbOrType) == "string" then if not self.listenersByType[cbOrType] then self.listenersByType[cbOrType] = {} end diff --git a/lua/harpoon2/scratch/toggle.lua b/lua/harpoon2/scratch/toggle.lua index 93c25c37..74859844 100644 --- a/lua/harpoon2/scratch/toggle.lua +++ b/lua/harpoon2/scratch/toggle.lua @@ -1,6 +1,3 @@ - local harpoon = require("harpoon2") harpoon.ui:toggle_quick_menu(harpoon:list()) - - diff --git a/lua/harpoon2/test/config_spec.lua b/lua/harpoon2/test/config_spec.lua index c81f99e1..b28a4a0c 100644 --- a/lua/harpoon2/test/config_spec.lua +++ b/lua/harpoon2/test/config_spec.lua @@ -14,9 +14,9 @@ describe("config", function() "foo", "bar", "baz", - "qux" + "qux", }) - vim.api.nvim_win_set_cursor(0, {3, 1}) + vim.api.nvim_win_set_cursor(0, { 3, 1 }) local item = config_item.add() eq(item, { @@ -24,9 +24,7 @@ describe("config", function() context = { row = 3, col = 1, - } + }, }) end) end) - - diff --git a/lua/harpoon2/test/harpoon_spec.lua b/lua/harpoon2/test/harpoon_spec.lua index 66889d4e..dca68f65 100644 --- a/lua/harpoon2/test/harpoon_spec.lua +++ b/lua/harpoon2/test/harpoon_spec.lua @@ -6,7 +6,6 @@ local eq = assert.are.same local be = utils.before_each(os.tmpname()) describe("harpoon", function() - before_each(function() be() harpoon = require("harpoon2") @@ -20,7 +19,7 @@ describe("harpoon", function() "foo", "bar", "baz", - "qux" + "qux", }, row, col) local list = harpoon:list():append() @@ -28,19 +27,18 @@ describe("harpoon", function() "foo", "bar", "baz", - "qux" + "qux", }, row, col) vim.api.nvim_set_current_buf(target_buf) - vim.api.nvim_win_set_cursor(0, {row + 1, col}) + vim.api.nvim_win_set_cursor(0, { row + 1, col }) vim.api.nvim_set_current_buf(other_buf) local expected = { - {value = file_name, context = {row = row + 1, col = col}}, + { value = file_name, context = { row = row + 1, col = col } }, } eq(expected, list.items) - end) it("full harpoon add sync cycle", function() @@ -52,7 +50,7 @@ describe("harpoon", function() "foo", "bar", "baz", - "qux" + "qux", }, row, col) local list = harpoon:list() @@ -61,8 +59,8 @@ describe("harpoon", function() eq(harpoon:dump(), { testies = { - [default_list_name] = list:encode() - } + [default_list_name] = list:encode(), + }, }) end) @@ -88,13 +86,13 @@ describe("harpoon", function() eq(harpoon:dump(), { testies = { - [default_list_name] = list:encode() - } + [default_list_name] = list:encode(), + }, }) eq(list.items, { - {value = file_name_2, context = {row = row_2, col = col_2}}, - {value = file_name_1, context = {row = row_1, col = col_1}}, + { value = file_name_2, context = { row = row_2, col = col_2 } }, + { value = file_name_1, context = { row = row_1, col = col_1 } }, }) harpoon:list():append() @@ -102,10 +100,9 @@ describe("harpoon", function() harpoon:list():prepend() eq(list.items, { - {value = file_name_2, context = {row = row_2, col = col_2}}, - {value = file_name_1, context = {row = row_1, col = col_1}}, + { value = file_name_2, context = { row = row_2, col = col_2 } }, + { value = file_name_1, context = { row = row_1, col = col_1 } }, }) - end) it("ui - display resolve", function() @@ -115,8 +112,8 @@ describe("harpoon", function() -- split string on / local parts = vim.split(item.value, "/") return parts[#parts] - end - } + end, + }, }) local file_names = { @@ -149,8 +146,8 @@ describe("harpoon", function() list:resolve_displayed(displayed) eq(list.items, { - {value = file_names[1], context = {row = 4, col = 2}}, - {value = file_names[4], context = {row = 4, col = 2}}, + { value = file_names[1], context = { row = 4, col = 2 } }, + { value = file_names[4], context = { row = 4, col = 2 } }, }) end) @@ -188,10 +185,16 @@ describe("harpoon", function() list:resolve_displayed(displayed) eq({ - {value = file_names[1], context = {row = 4, col = 2}}, - {value = file_names[4], context = {row = 4, col = 2}}, - {value = "/tmp/harpoon-test-other-file-1", context = {row = 1, col = 0}}, - {value = "/tmp/harpoon-test-other-file-2", context = {row = 1, col = 0}}, + { value = file_names[1], context = { row = 4, col = 2 } }, + { value = file_names[4], context = { row = 4, col = 2 } }, + { + value = "/tmp/harpoon-test-other-file-1", + context = { row = 1, col = 0 }, + }, + { + value = "/tmp/harpoon-test-other-file-2", + context = { row = 1, col = 0 }, + }, }, list.items) table.remove(displayed, 3) @@ -199,10 +202,12 @@ describe("harpoon", function() list:resolve_displayed(displayed) eq({ - {value = file_names[1], context = {row = 4, col = 2}}, - {value = file_names[4], context = {row = 4, col = 2}}, - {value = "/tmp/harpoon-test-other-file-2", context = {row = 1, col = 0}}, + { value = file_names[1], context = { row = 4, col = 2 } }, + { value = file_names[4], context = { row = 4, col = 2 } }, + { + value = "/tmp/harpoon-test-other-file-2", + context = { row = 1, col = 0 }, + }, }, list.items) end) end) - diff --git a/lua/harpoon2/test/list_spec.lua b/lua/harpoon2/test/list_spec.lua index bf99690a..8407d3e1 100644 --- a/lua/harpoon2/test/list_spec.lua +++ b/lua/harpoon2/test/list_spec.lua @@ -4,7 +4,6 @@ local eq = assert.are.same describe("list", function() it("decode", function() - local config = Config.merge_config({ foo = { decode = function(item) @@ -18,12 +17,12 @@ describe("list", function() display = function(item) return table.concat(item.value, "---") - end - } + end, + }, }) local list_config = Config.get_config(config, "foo") - local list = List.decode(list_config, "foo", {"foo:bar", "baz:qux"}) + local list = List.decode(list_config, "foo", { "foo:bar", "baz:qux" }) local displayed = list:display() eq(displayed, { @@ -32,4 +31,3 @@ describe("list", function() }) end) end) - diff --git a/lua/harpoon2/test/ui_spec.lua b/lua/harpoon2/test/ui_spec.lua index de21eb86..bc2dd0c3 100644 --- a/lua/harpoon2/test/ui_spec.lua +++ b/lua/harpoon2/test/ui_spec.lua @@ -3,7 +3,6 @@ local utils = require("harpoon2.test.utils") local eq = assert.are.same describe("harpoon", function() - before_each(utils.before_each(os.tmpname())) it("open the ui without any items in the list", function() @@ -24,5 +23,3 @@ describe("harpoon", function() eq(harpoon.ui.win_id, nil) end) end) - - diff --git a/lua/harpoon2/test/utils.lua b/lua/harpoon2/test/utils.lua index d7cfc165..59268539 100644 --- a/lua/harpoon2/test/utils.lua +++ b/lua/harpoon2/test/utils.lua @@ -21,15 +21,15 @@ function M.before_each(name) settings = { key = function() return "testies" - end - } + end, + }, }) end end function M.clean_files() for _, bufnr in ipairs(M.created_files) do - vim.api.nvim_buf_delete(bufnr, {force = true}) + vim.api.nvim_buf_delete(bufnr, { force = true }) end M.created_files = {} @@ -42,7 +42,7 @@ function M.create_file(name, contents, row, col) vim.api.nvim_set_current_buf(bufnr) vim.api.nvim_buf_set_text(0, 0, 0, 0, 0, contents) if row then - vim.api.nvim_win_set_cursor(0, {row, col}) + vim.api.nvim_win_set_cursor(0, { row, col }) end table.insert(M.created_files, bufnr) diff --git a/lua/harpoon2/ui.lua b/lua/harpoon2/ui.lua index 9ea84f9f..98cc4260 100644 --- a/lua/harpoon2/ui.lua +++ b/lua/harpoon2/ui.lua @@ -56,7 +56,8 @@ function HarpoonUI:_create_window() end local height = 8 - local borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" } + local borderchars = + { "─", "│", "─", "│", "╭", "╮", "╯", "╰" } local bufnr = vim.api.nvim_create_buf(false, false) local _, popup_info = popup.create(bufnr, { title = "Harpoon", @@ -73,11 +74,7 @@ function HarpoonUI:_create_window() self.win_id = win_id vim.api.nvim_win_set_option(self.win_id, "number", true) - vim.api.nvim_win_set_option( - win_id, - "winhl", - "Normal:HarpoonBorder" - ) + vim.api.nvim_win_set_option(win_id, "winhl", "Normal:HarpoonBorder") return win_id, bufnr end @@ -86,7 +83,6 @@ local count = 0 ---@param list? HarpoonList function HarpoonUI:toggle_quick_menu(list) - count = count + 1 if list == nil or self.win_id ~= nil then