From 5e3b5e39f7d6b1573ef8005a5235837310669eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20H=C3=A5land?= Date: Thu, 18 Mar 2021 21:08:25 +0100 Subject: [PATCH 1/4] feat(ui): add BufWriteCmd to handle ":w" in quick menu Fix #36 --- lua/harpoon/ui.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lua/harpoon/ui.lua b/lua/harpoon/ui.lua index de3de3c..1c25ca1 100644 --- a/lua/harpoon/ui.lua +++ b/lua/harpoon/ui.lua @@ -42,7 +42,6 @@ end M.toggle_quick_menu = function() if win_id ~= nil and vim.api.nvim_win_is_valid(win_id) then - save_changes() vim.api.nvim_win_close(win_id, true) win_id = nil @@ -55,7 +54,7 @@ M.toggle_quick_menu = function() local contents = {} win_id = win_info.win_id - bufh = win_info.bufh + bufh = win_info.bufnr for idx = 1, Marked.get_length() do local file = Marked.get_marked_file(idx) @@ -65,8 +64,16 @@ M.toggle_quick_menu = function() contents[idx] = string.format("%d %s", idx, file) end + vim.api.nvim_buf_set_name(bufh, "harpoon-menu") vim.api.nvim_buf_set_lines(bufh, 0, #contents, false, contents) vim.api.nvim_buf_set_option(bufh, "filetype", "harpoon") + vim.api.nvim_buf_set_option(bufh, "buftype", "acwrite") + vim.cmd(string.format("autocmd BufWriteCmd :lua require('harpoon.ui').on_menu_save()", bufh)) +end + +M.on_menu_save = function() + save_changes() + vim.cmd("set nomodified") end M.nav_file = function(id) From c413edb1e8183bc34ce7feb3ab1b1fbb3c63f43a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20H=C3=A5land?= Date: Mon, 22 Mar 2021 18:48:12 +0100 Subject: [PATCH 2/4] feat(ui): delete quick_menu buffer on hidden --- lua/harpoon/ui.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/harpoon/ui.lua b/lua/harpoon/ui.lua index 1c25ca1..3525000 100644 --- a/lua/harpoon/ui.lua +++ b/lua/harpoon/ui.lua @@ -1,4 +1,3 @@ -local Path = require('plenary.path') local float = require('plenary.window.float') local Marked = require('harpoon.mark') @@ -68,6 +67,7 @@ M.toggle_quick_menu = function() vim.api.nvim_buf_set_lines(bufh, 0, #contents, false, contents) vim.api.nvim_buf_set_option(bufh, "filetype", "harpoon") vim.api.nvim_buf_set_option(bufh, "buftype", "acwrite") + vim.api.nvim_buf_set_option(bufh, "bufhidden", "delete") vim.cmd(string.format("autocmd BufWriteCmd :lua require('harpoon.ui').on_menu_save()", bufh)) end From 01996f45f65a3410e1775feff95dd4d9254338ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20H=C3=A5land?= Date: Mon, 22 Mar 2021 19:01:13 +0100 Subject: [PATCH 3/4] fix(ui): set the quick_menu initially to not modified --- lua/harpoon/ui.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/harpoon/ui.lua b/lua/harpoon/ui.lua index 3525000..5d50d95 100644 --- a/lua/harpoon/ui.lua +++ b/lua/harpoon/ui.lua @@ -68,6 +68,7 @@ M.toggle_quick_menu = function() vim.api.nvim_buf_set_option(bufh, "filetype", "harpoon") vim.api.nvim_buf_set_option(bufh, "buftype", "acwrite") vim.api.nvim_buf_set_option(bufh, "bufhidden", "delete") + vim.api.nvim_buf_set_option(bufh, "modified", false) vim.cmd(string.format("autocmd BufWriteCmd :lua require('harpoon.ui').on_menu_save()", bufh)) end From d0f4ad1e188d1e0bfb3488aedf66eb625e6ac25a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20H=C3=A5land?= Date: Tue, 23 Mar 2021 15:49:06 +0100 Subject: [PATCH 4/4] fix(ui): set nomodified then modified is set - ensures you always can close the quick_menu --- lua/harpoon/ui.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lua/harpoon/ui.lua b/lua/harpoon/ui.lua index 5d50d95..d9d9ae6 100644 --- a/lua/harpoon/ui.lua +++ b/lua/harpoon/ui.lua @@ -68,13 +68,12 @@ M.toggle_quick_menu = function() vim.api.nvim_buf_set_option(bufh, "filetype", "harpoon") vim.api.nvim_buf_set_option(bufh, "buftype", "acwrite") vim.api.nvim_buf_set_option(bufh, "bufhidden", "delete") - vim.api.nvim_buf_set_option(bufh, "modified", false) vim.cmd(string.format("autocmd BufWriteCmd :lua require('harpoon.ui').on_menu_save()", bufh)) + vim.cmd(string.format("autocmd BufModifiedSet set nomodified", bufh)) end M.on_menu_save = function() save_changes() - vim.cmd("set nomodified") end M.nav_file = function(id)