From 3a8f2a7cb6ef04526548398baee8d90c6f1c852a Mon Sep 17 00:00:00 2001 From: lambdalisue Date: Mon, 3 Aug 2020 22:34:08 +0900 Subject: [PATCH] Fix ambiguous cursor position Close #136 --- autoload/fern/helper/sync.vim | 1 + autoload/fern/internal/viewer.vim | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/autoload/fern/helper/sync.vim b/autoload/fern/helper/sync.vim index 3499e30a..d18eb4fa 100644 --- a/autoload/fern/helper/sync.vim +++ b/autoload/fern/helper/sync.vim @@ -81,6 +81,7 @@ function! s:sync_set_cursor(cursor) abort dict let helper = self.helper let fern = helper.fern call s:WindowCursor.set_cursor(helper.winid, a:cursor) + call setbufvar(helper.bufnr, 'fern_cursor', a:cursor) endfunction let s:sync.set_cursor = funcref('s:sync_set_cursor') diff --git a/autoload/fern/internal/viewer.vim b/autoload/fern/internal/viewer.vim index 6c499b54..a298707f 100644 --- a/autoload/fern/internal/viewer.vim +++ b/autoload/fern/internal/viewer.vim @@ -30,11 +30,11 @@ function! s:init() abort setlocal signcolumn=yes augroup fern_viewer_internal - autocmd! * + autocmd! autocmd BufEnter setlocal nobuflisted autocmd BufReadCmd ++nested call s:BufReadCmd() autocmd ColorScheme call s:ColorScheme() - autocmd CursorMoved,CursorMovedI let b:fern_cursor = getcurpos() + autocmd CursorMoved,CursorMovedI,BufLeave let b:fern_cursor = getcurpos()[1:2] augroup END " Add unique fragment to make each buffer uniq @@ -119,10 +119,10 @@ function! s:BufReadCmd() abort " Notify users doautocmd User FernSyntax let root = helper.sync.get_root_node() - let cursor = get(b:, 'fern_cursor', getcurpos()) + let cursor = get(b:, 'fern_cursor', getcurpos()[1:2]) call s:Promise.resolve() \.then({ -> helper.async.redraw() }) - \.then({ -> helper.sync.set_cursor(cursor[1:2]) }) + \.then({ -> helper.sync.set_cursor(cursor) }) \.then({ -> helper.async.reload_node(root.__key) }) \.then({ -> helper.async.redraw() }) \.then({ -> fern#hook#emit('viewer:ready', helper) })