mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 20:50:04 +08:00
cd6ea298f2
* Add incsearch.vim into bundle dir * Fix java neoformat config close #3573 * Use echom instead in pull.vim
160 lines
3.9 KiB
VimL
160 lines
3.9 KiB
VimL
" ___vital___
|
|
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
|
|
" Do not mofidify the code nor insert new lines before '" ___vital___'
|
|
function! s:_SID() abort
|
|
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
|
|
endfunction
|
|
execute join(['function! vital#_incsearch#Gift#import() abort', printf("return map({'flatten': '', 'uniq_tabpagenr': '', 'tabpagewinnr_list': '', 'execute': '', 'getwinvar': '', 'winnr': '', 'jump_window': '', '_vital_depends': '', 'uniq_winnr': '', 'setwinvar': '', 'find': '', 'openable_bufnr_list': '', 'to_fullpath': '', 'bufnr': '', 'set_current_window': '', 'tabpagewinnr': '', 'close_window': '', 'close_window_by': '', 'uniq_winnr_list': '', '_vital_loaded': '', 'find_by': ''}, \"vital#_incsearch#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
|
|
delfunction s:_SID
|
|
" ___vital___
|
|
scriptencoding utf-8
|
|
let s:save_cpo = &cpo
|
|
set cpo&vim
|
|
|
|
|
|
function! s:_vital_loaded(V)
|
|
let s:V = a:V
|
|
let s:Window = s:V.import("Gift.Window")
|
|
let s:Tabpage = s:V.import("Gift.Tabpage")
|
|
endfunction
|
|
|
|
|
|
function! s:_vital_depends()
|
|
return [
|
|
\ "Gift.Window",
|
|
\ "Gift.Tabpage",
|
|
\ ]
|
|
endfunction
|
|
|
|
|
|
function! s:to_fullpath(filename)
|
|
let name = substitute(fnamemodify(a:filename, ":p"), '\', '/', "g")
|
|
if filereadable(name)
|
|
return name
|
|
else
|
|
return a:filename
|
|
endif
|
|
endfunction
|
|
|
|
|
|
function! s:flatten(list)
|
|
return eval(join(a:list, "+"))
|
|
endfunction
|
|
|
|
|
|
function! s:bufnr(expr)
|
|
return type(a:expr) == type([])
|
|
\ ? s:bufnr(s:uniq_winnr(a:expr[1], a:expr[0]))
|
|
\ : s:Window.bufnr(a:expr)
|
|
endfunction
|
|
|
|
|
|
function! s:openable_bufnr_list()
|
|
return map(s:tabpagewinnr_list(), "s:bufnr([v:val[0], v:val[1]])")
|
|
endfunction
|
|
|
|
|
|
function! s:tabpagewinnr(...)
|
|
return a:0 == 0 ? s:tabpagewinnr(s:uniq_winnr())
|
|
\ : s:Window.tabpagewinnr(a:1)
|
|
endfunction
|
|
|
|
|
|
function! s:tabpagewinnr_list()
|
|
return s:Window.tabpagewinnr_list()
|
|
" return s:flatten(map(range(1, tabpagenr("$")), "map(range(1, tabpagewinnr(v:val, '$')), '['.v:val.', v:val]')"))
|
|
endfunction
|
|
|
|
|
|
|
|
function! s:uniq_winnr(...)
|
|
return call(s:Window.uniq_nr, a:000, s:Window)
|
|
endfunction
|
|
|
|
|
|
function! s:winnr(uniqnr)
|
|
let [tabnr, winnr] = s:Window.tabpagewinnr(a:uniqnr)
|
|
return winnr
|
|
endfunction
|
|
|
|
|
|
function! s:uniq_winnr_list(...)
|
|
return map(s:tabpagewinnr_list(), "s:uniq_winnr(v:val[1], v:val[0])")
|
|
endfunction
|
|
|
|
|
|
|
|
function! s:find(expr)
|
|
let gift_find_result = []
|
|
for [tabnr, winnr] in s:tabpagewinnr_list()
|
|
let bufnr = s:bufnr([tabnr, winnr])
|
|
if eval(a:expr)
|
|
call add(gift_find_result, [tabnr, winnr])
|
|
endif
|
|
endfor
|
|
return gift_find_result
|
|
endfunction
|
|
|
|
|
|
function! s:find_by(expr)
|
|
if type(a:expr) == type(function("tr"))
|
|
return filter(s:tabpagewinnr_list(), "a:expr(s:bufnr([v:val[0], v:val[1]]), v:val[0], v:val[1])")
|
|
else
|
|
return s:find(a:expr)
|
|
endif
|
|
endfunction
|
|
|
|
|
|
function! s:jump_window(expr)
|
|
return type(a:expr) == type([])
|
|
\ ? s:jump_window(s:uniq_winnr(a:expr[1], a:expr[0]))
|
|
\ : s:Window.jump(a:expr)
|
|
endfunction
|
|
|
|
|
|
function! s:set_current_window(expr)
|
|
return s:jump_window(a:expr)
|
|
endfunction
|
|
|
|
|
|
function! s:close_window(expr, ...)
|
|
let close_cmd = get(a:, 1, "close")
|
|
return type(a:expr) == type([])
|
|
\ ? s:close_window(s:uniq_winnr(a:expr[1], a:expr[0]), close_cmd)
|
|
\ : s:Window.close(a:expr, close_cmd)
|
|
endfunction
|
|
|
|
|
|
function! s:close_window_by(expr, ...)
|
|
let close_cmd = get(a:, 1, "close")
|
|
return map(map(s:find(a:expr), "s:uniq_winnr(v:val[1], v:val[0])"), 's:close_window(v:val, close_cmd)')
|
|
endfunction
|
|
|
|
|
|
function! s:execute(expr, execute)
|
|
return type(a:expr) == type([])
|
|
\ ? s:execute(s:uniq_winnr(a:expr[1], a:expr[0]), a:execute)
|
|
\ : s:Window.execute(a:expr, a:execute)
|
|
endfunction
|
|
|
|
|
|
function! s:getwinvar(uniq_winnr, varname, ...)
|
|
let def = get(a:, 1, "")
|
|
return s:Window.getvar(a:uniq_winnr, a:varname, def)
|
|
endfunction
|
|
|
|
|
|
function! s:setwinvar(uniq_winnr, varname, val)
|
|
return s:Window.setvar(a:uniq_winnr, a:varname, a:val)
|
|
endfunction
|
|
|
|
|
|
function! s:uniq_tabpagenr(...)
|
|
return call(s:Tabpage.uniq_nr, a:000, s:Tabpage)
|
|
endfunction
|
|
|
|
|
|
|
|
let &cpo = s:save_cpo
|
|
unlet s:save_cpo
|