From d5229fb085e381dca54cc4f172d3f3aab5350374 Mon Sep 17 00:00:00 2001 From: ThePrimeagen Date: Tue, 23 Mar 2021 10:56:19 -0600 Subject: [PATCH] feat(offsets): Harp**n offsets --- lua/harpoon/mark.lua | 3 ++- lua/harpoon/ui.lua | 17 +++++++---------- plugin/mark.vim | 7 ++++++- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/lua/harpoon/mark.lua b/lua/harpoon/mark.lua index 5223b09..214e5ec 100644 --- a/lua/harpoon/mark.lua +++ b/lua/harpoon/mark.lua @@ -149,7 +149,8 @@ M.store_offset = function() return end - local row, col = vim.api.nvim_eval("line('.')"); + harpoon.get_mark_config().marks[idx].row = + vim.fn.line("."); end) if not ok then diff --git a/lua/harpoon/ui.lua b/lua/harpoon/ui.lua index 7cb2a57..da9df21 100644 --- a/lua/harpoon/ui.lua +++ b/lua/harpoon/ui.lua @@ -9,7 +9,7 @@ local M = {} win_id = nil bufh = nil -function create_window() +local function create_window() local win_info = float.percentage_range_window( factorw, factorh, @@ -82,16 +82,13 @@ M.nav_file = function(id) return end - local buf_id = vim.fn.bufnr(Marked.get_marked_file_name(idx)) + local mark = Marked.get_marked_file(idx) + local buf_id = vim.fn.bufnr(mark.filename) + local set_row = not vim.api.nvim_buf_is_loaded(buf_id) - if vim.api.nvim_win_is_valid(buf_id) then - vim.api.nvim_win_close(win_id) - end - - if buf_id ~= nil and buf_id ~= -1 then - vim.api.nvim_set_current_buf(buf_id) - else - vim.cmd(string.format("e %s", Marked.get_marked_file(idx))) + vim.api.nvim_set_current_buf(buf_id) + if set_row and mark.row then + vim.cmd(string.format(":%d", mark.row)) end end diff --git a/plugin/mark.vim b/plugin/mark.vim index ad61764..f301ad7 100644 --- a/plugin/mark.vim +++ b/plugin/mark.vim @@ -1,5 +1,10 @@ +fun! HarpoonLeave() + lua require('harpoon.mark').store_offset() + lua require('harpoon').save() +endfun + augroup THE_PRIMEAGEN_HARPOON autocmd! - autocmd VimLeavePre * :lua require('harpoon').save() + autocmd VimLeavePre * :call HarpoonLeave() autocmd BufLeave * :lua require('harpoon.mark').store_offset() augroup END