From 0572fa81d37cac88c04627722bed0e63c6a12e76 Mon Sep 17 00:00:00 2001 From: ThePrimeagen Date: Tue, 11 May 2021 10:11:46 -0600 Subject: [PATCH] fix(ui): Navigation with enter on menu --- lua/harpoon/term.lua | 5 ----- lua/harpoon/ui.lua | 33 ++++++++++++++++++++------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/lua/harpoon/term.lua b/lua/harpoon/term.lua index 6051851..90c4268 100644 --- a/lua/harpoon/term.lua +++ b/lua/harpoon/term.lua @@ -1,5 +1,4 @@ local harpoon = require("harpoon") -local Path = require("plenary.path") local log = require("harpoon.dev").log local M = {} @@ -28,10 +27,6 @@ local function create_terminal() return buf_id, term_id end -function getCmd(idx) - return -end - local function find_terminal(idx) log.trace("_find_terminal(): Terminal:", idx) local term_handle = terminals[idx] diff --git a/lua/harpoon/ui.lua b/lua/harpoon/ui.lua index f1fe388..78c331a 100644 --- a/lua/harpoon/ui.lua +++ b/lua/harpoon/ui.lua @@ -8,6 +8,22 @@ local M = {} Harpoon_win_id = nil Harpoon_bufh = nil +-- We save before we close because we use the state of the buffer as the list +-- of items. +local function close_menu(force_save) + force_save = force_save or false + local global_config = harpoon.get_global_settings() + + if global_config.save_on_toggle or force_save then + require("harpoon.ui").on_menu_save() + end + + vim.api.nvim_win_close(Harpoon_win_id, true) + + Harpoon_win_id = nil + Harpoon_bufh = nil +end + local function create_window() log.trace("_create_window()") local config = harpoon.get_menu_config() @@ -54,17 +70,7 @@ end M.toggle_quick_menu = function() log.trace("toggle_quick_menu()") if Harpoon_win_id ~= nil and vim.api.nvim_win_is_valid(Harpoon_win_id) then - local global_config = harpoon.get_global_settings() - - if global_config.save_on_toggle then - require("harpoon.ui").on_menu_save() - end - - vim.api.nvim_win_close(Harpoon_win_id, true) - - Harpoon_win_id = nil - Harpoon_bufh = nil - + close_menu() return end @@ -87,13 +93,14 @@ M.toggle_quick_menu = function() vim.api.nvim_buf_set_option(Harpoon_bufh, "filetype", "harpoon") vim.api.nvim_buf_set_option(Harpoon_bufh, "buftype", "acwrite") vim.api.nvim_buf_set_option(Harpoon_bufh, "bufhidden", "delete") - vim.api.nvim_buf_set_keymap(Harpoon_bufh, "n", "", ":lua require('harpoon.ui').on_norm_enter()", {}) + vim.api.nvim_buf_set_keymap(Harpoon_bufh, "n", "", ":lua require('harpoon.ui').select_menu_item()", {}) vim.cmd(string.format("autocmd BufWriteCmd :lua require('harpoon.ui').on_menu_save()", Harpoon_bufh)) vim.cmd(string.format("autocmd BufModifiedSet set nomodified", Harpoon_bufh)) end -M.on_norm_enter = function() +M.select_menu_item = function() local idx = vim.fn.line('.') + close_menu(true) M.nav_file(idx) end