fix(ui): comprehensive UI fixes

- fix: sync on UI save (#377)
- fix: ensure buf is loaded on select (#383)
- fix: remove angle brackets from Escape mapping rhs (#379, #385)
- fix: incorrect function call in run_toggle_command (#379)
- refactor: use buf-local autocmds
- refactor: use Lua API to create BufModifiedSet autocmd

fixes #383, #385, #379, #377, #358
This commit is contained in:
Will Hopkins 2023-12-07 14:35:59 -08:00
parent 70703d6ce1
commit 515bdd0058
No known key found for this signature in database
GPG Key ID: 643B8C585BABBB68
3 changed files with 16 additions and 11 deletions

View File

@ -24,7 +24,7 @@ end
function M.run_toggle_command(key)
local harpoon = require("harpoon")
harpoon.logger:log("toggle by keymap '" .. key .. "'")
harpoon.ui:select_menu_item()
harpoon.ui:toggle_quick_menu()
end
---TODO: I don't know how to do what i want to do, but i want to be able to
@ -63,7 +63,7 @@ function M.setup_autocmds_and_keymaps(bufnr)
bufnr,
"n",
"<ESC>",
"<Cmd>lua require('harpoon.buffer').run_toggle_command('<ESC>')<CR>",
"<Cmd>lua require('harpoon.buffer').run_toggle_command('Esc')<CR>",
{ silent = true }
)
vim.api.nvim_buf_set_keymap(
@ -86,16 +86,17 @@ function M.setup_autocmds_and_keymaps(bufnr)
)
end
--]]
vim.cmd(
string.format(
"autocmd BufModifiedSet <buffer=%s> set nomodified",
bufnr
)
)
vim.api.nvim_create_autocmd("BufModifiedSet", {
buffer = bufnr,
group = HarpoonGroup,
callback = function()
vim.api.nvim_buf_set_option(bufnr, "modified", false)
end,
})
vim.api.nvim_create_autocmd({ "BufWriteCmd" }, {
group = HarpoonGroup,
pattern = "__harpoon*",
buffer = bufnr,
callback = function()
require("harpoon").ui:save()
vim.schedule(function()
@ -107,7 +108,7 @@ function M.setup_autocmds_and_keymaps(bufnr)
vim.api.nvim_create_autocmd({ "BufLeave" }, {
group = HarpoonGroup,
pattern = "__harpoon*",
buffer = bufnr,
callback = function()
require("harpoon").logger:log("toggle by BufLeave")
require("harpoon").ui:toggle_quick_menu()

View File

@ -117,6 +117,10 @@ function M.get_default_config()
set_position = true
bufnr = vim.fn.bufnr(list_item.value, true)
end
if not vim.api.nvim_buf_is_loaded(bufnr) then
vim.fn.bufload(bufnr)
vim.api.nvim_buf_set_option(bufnr, "buflisted", true)
end
if options.vsplit then
vim.cmd("vsplit")

View File

@ -107,7 +107,6 @@ end
---@param list? HarpoonList
function HarpoonUI:toggle_quick_menu(list)
if list == nil or self.win_id ~= nil then
Logger:log("ui#toggle_quick_menu#closing", list and list.name)
if self.settings.save_on_toggle then
@ -154,6 +153,7 @@ function HarpoonUI:save()
local list = Buffer.get_contents(self.bufnr)
Logger:log("ui#save", list)
self.active_list:resolve_displayed(list)
require("harpoon"):sync()
end
---@param settings HarpoonSettings