Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
83 lines
2.4 KiB
VimL
83 lines
2.4 KiB
VimL
"=============================================================================
|
|
" history.vim --- history manager
|
|
" Copyright (c) 2016-2019 Wang Shidong & Contributors
|
|
" Author: Wang Shidong < wsdjeg@outlook.com >
|
|
" URL: https://spacevim.org
|
|
" License: GPLv3
|
|
"=============================================================================
|
|
|
|
let s:FILE = SpaceVim#api#import('file')
|
|
let s:JSON = SpaceVim#api#import('data#json')
|
|
let s:LOG = SpaceVim#logger#derive('history')
|
|
let s:BUF = SpaceVim#api#import('vim#buffer')
|
|
let s:history_cache_path = s:FILE.unify_path(g:spacevim_data_dir, ':p') . 'SpaceVim/nvim_history.json'
|
|
let s:filepos = {}
|
|
|
|
function! SpaceVim#plugins#history#readcache() abort
|
|
call s:LOG.debug('read cache')
|
|
call s:read_cache()
|
|
endfunction
|
|
function! SpaceVim#plugins#history#writecache() abort
|
|
call s:LOG.debug('write cache')
|
|
call s:write_cache()
|
|
endfunction
|
|
|
|
function! SpaceVim#plugins#history#jumppos() abort
|
|
" nvim filename
|
|
" BufReadPost event before VimEnter
|
|
if empty(s:filepos)
|
|
call s:read_cache()
|
|
endif
|
|
let [l, c] = get(s:filepos, expand('%:p'), [0, 0])
|
|
call s:LOG.debug(printf('jump to pos: [%s, %s]', l, c))
|
|
if l != 0 && c != 0
|
|
call cursor(l, c)
|
|
endif
|
|
endfunction
|
|
|
|
function! SpaceVim#plugins#history#savepos() abort
|
|
if empty(s:BUF.bufname()) || &buftype == 'nofile'
|
|
return
|
|
endif
|
|
call s:LOG.debug('save pos for:' . s:BUF.bufname())
|
|
let [_, l, c, _] = getpos('.')
|
|
call s:LOG.debug(printf('line %d, col %d', l, c))
|
|
if l != 0 && c != 0 && filereadable(s:BUF.bufname())
|
|
let s:filepos[expand('%:p')] = [l, c]
|
|
endif
|
|
endfunction
|
|
|
|
|
|
|
|
function! s:read_cache() abort
|
|
if filereadable(s:history_cache_path)
|
|
let his = s:JSON.json_decode(join(readfile(s:history_cache_path, ''), ''))
|
|
if type(his) ==# type({})
|
|
call map(deepcopy(his.cmd), 'histadd("cmd", v:val)')
|
|
call map(deepcopy(his.search), 'histadd("search", v:val)')
|
|
let s:filepos = get(his, 'filepos', {})
|
|
endif
|
|
endif
|
|
endfunction
|
|
|
|
function! s:write_cache() abort
|
|
let his = { 'cmd' : [], 'filepos' : s:filepos, 'search' : []}
|
|
for i in range(1, 100)
|
|
let cmd = histget('cmd', 0 - i)
|
|
if empty(cmd)
|
|
break
|
|
endif
|
|
call insert(his.cmd, cmd)
|
|
endfor
|
|
for i in range(1, 100)
|
|
let search = histget('search', 0 - i)
|
|
if empty(search)
|
|
break
|
|
endif
|
|
call insert(his.search, search)
|
|
endfor
|
|
call writefile([s:JSON.json_encode(his)], s:history_cache_path)
|
|
endfunction
|
|
|
|
|