mirror of
https://github.com/ThePrimeagen/harpoon.git
synced 2025-07-16 11:00:23 +00:00
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:
parent
70703d6ce1
commit
515bdd0058
@ -24,7 +24,7 @@ end
|
|||||||
function M.run_toggle_command(key)
|
function M.run_toggle_command(key)
|
||||||
local harpoon = require("harpoon")
|
local harpoon = require("harpoon")
|
||||||
harpoon.logger:log("toggle by keymap '" .. key .. "'")
|
harpoon.logger:log("toggle by keymap '" .. key .. "'")
|
||||||
harpoon.ui:select_menu_item()
|
harpoon.ui:toggle_quick_menu()
|
||||||
end
|
end
|
||||||
|
|
||||||
---TODO: I don't know how to do what i want to do, but i want to be able to
|
---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,
|
bufnr,
|
||||||
"n",
|
"n",
|
||||||
"<ESC>",
|
"<ESC>",
|
||||||
"<Cmd>lua require('harpoon.buffer').run_toggle_command('<ESC>')<CR>",
|
"<Cmd>lua require('harpoon.buffer').run_toggle_command('Esc')<CR>",
|
||||||
{ silent = true }
|
{ silent = true }
|
||||||
)
|
)
|
||||||
vim.api.nvim_buf_set_keymap(
|
vim.api.nvim_buf_set_keymap(
|
||||||
@ -86,16 +86,17 @@ function M.setup_autocmds_and_keymaps(bufnr)
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
--]]
|
--]]
|
||||||
vim.cmd(
|
vim.api.nvim_create_autocmd("BufModifiedSet", {
|
||||||
string.format(
|
buffer = bufnr,
|
||||||
"autocmd BufModifiedSet <buffer=%s> set nomodified",
|
group = HarpoonGroup,
|
||||||
bufnr
|
callback = function()
|
||||||
)
|
vim.api.nvim_buf_set_option(bufnr, "modified", false)
|
||||||
)
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "BufWriteCmd" }, {
|
vim.api.nvim_create_autocmd({ "BufWriteCmd" }, {
|
||||||
group = HarpoonGroup,
|
group = HarpoonGroup,
|
||||||
pattern = "__harpoon*",
|
buffer = bufnr,
|
||||||
callback = function()
|
callback = function()
|
||||||
require("harpoon").ui:save()
|
require("harpoon").ui:save()
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
@ -107,7 +108,7 @@ function M.setup_autocmds_and_keymaps(bufnr)
|
|||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "BufLeave" }, {
|
vim.api.nvim_create_autocmd({ "BufLeave" }, {
|
||||||
group = HarpoonGroup,
|
group = HarpoonGroup,
|
||||||
pattern = "__harpoon*",
|
buffer = bufnr,
|
||||||
callback = function()
|
callback = function()
|
||||||
require("harpoon").logger:log("toggle by BufLeave")
|
require("harpoon").logger:log("toggle by BufLeave")
|
||||||
require("harpoon").ui:toggle_quick_menu()
|
require("harpoon").ui:toggle_quick_menu()
|
||||||
|
@ -117,6 +117,10 @@ function M.get_default_config()
|
|||||||
set_position = true
|
set_position = true
|
||||||
bufnr = vim.fn.bufnr(list_item.value, true)
|
bufnr = vim.fn.bufnr(list_item.value, true)
|
||||||
end
|
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
|
if options.vsplit then
|
||||||
vim.cmd("vsplit")
|
vim.cmd("vsplit")
|
||||||
|
@ -107,7 +107,6 @@ end
|
|||||||
|
|
||||||
---@param list? HarpoonList
|
---@param list? HarpoonList
|
||||||
function HarpoonUI:toggle_quick_menu(list)
|
function HarpoonUI:toggle_quick_menu(list)
|
||||||
|
|
||||||
if list == nil or self.win_id ~= nil then
|
if list == nil or self.win_id ~= nil then
|
||||||
Logger:log("ui#toggle_quick_menu#closing", list and list.name)
|
Logger:log("ui#toggle_quick_menu#closing", list and list.name)
|
||||||
if self.settings.save_on_toggle then
|
if self.settings.save_on_toggle then
|
||||||
@ -154,6 +153,7 @@ function HarpoonUI:save()
|
|||||||
local list = Buffer.get_contents(self.bufnr)
|
local list = Buffer.get_contents(self.bufnr)
|
||||||
Logger:log("ui#save", list)
|
Logger:log("ui#save", list)
|
||||||
self.active_list:resolve_displayed(list)
|
self.active_list:resolve_displayed(list)
|
||||||
|
require("harpoon"):sync()
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param settings HarpoonSettings
|
---@param settings HarpoonSettings
|
||||||
|
Loading…
x
Reference in New Issue
Block a user