Skip to content

Commit 2dad1b1

Browse files
committed
Merge pull request easymotion#282 from easymotion/revitalizer
introduce revitalizer!
2 parents 649120e + 07e3665 commit 2dad1b1

39 files changed

+1285
-24
lines changed

autoload/EasyMotion/command_line.vim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ set cpo&vim
3030
" }}}
3131

3232
" CommandLine:
33-
let s:V = vital#of('easymotion')
33+
let s:V = vital#easymotion#of()
3434
let s:cmdline = s:V.import('Over.Commandline.Base')
3535
let s:modules = s:V.import("Over.Commandline.Modules")
3636
let s:search = s:cmdline.make()

autoload/EasyMotion/overwin.vim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
let s:V = vital#of('easymotion')
1+
let s:V = vital#easymotion#of()
22
let s:HitAHintMotion = s:V.import('HitAHint.Motion')
33

44
call EasyMotion#init()

autoload/vital/_easymotion.vim

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@ let s:cache_sid = {}
99
let s:_unify_path_cache = {}
1010

1111
function! s:plugin_name() abort
12-
let info_file = get(split(glob(s:base_dir . '/*.vital', 1), "\n"), 0, '')
13-
return fnamemodify(info_file, ':t:r')
12+
return s:self_version[1 :]
1413
endfunction
1514

1615
function! s:vital_files() abort
1716
if !exists('s:vital_files')
1817
let s:vital_files =
1918
\ map(
20-
\ s:plugin_name() ==# 'vital'
19+
\ s:plugin_name() ==# '_latest__'
2120
\ ? s:_global_vital_files()
2221
\ : s:_self_vital_files(),
2322
\ 'fnamemodify(v:val, ":p:gs?[\\\\/]?/?")')
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
" Utilities for dictionary.
2+
3+
let s:save_cpo = &cpo
4+
set cpo&vim
5+
6+
" Makes a dict from keys and values
7+
function! s:make(keys, values, ...) abort
8+
let dict = {}
9+
let fill = a:0 ? a:1 : 0
10+
for i in range(len(a:keys))
11+
let key = type(a:keys[i]) == type('') ? a:keys[i] : string(a:keys[i])
12+
if key ==# ''
13+
throw "vital: Data.Dict: Can't use an empty string for key."
14+
endif
15+
let dict[key] = get(a:values, i, fill)
16+
endfor
17+
return dict
18+
endfunction
19+
20+
" Swaps keys and values
21+
function! s:swap(dict) abort
22+
return s:make(values(a:dict), keys(a:dict))
23+
endfunction
24+
25+
" Makes a index dict from a list
26+
function! s:make_index(list, ...) abort
27+
let value = a:0 ? a:1 : 1
28+
return s:make(a:list, [], value)
29+
endfunction
30+
31+
function! s:pick(dict, keys) abort
32+
let new_dict = {}
33+
for key in a:keys
34+
if has_key(a:dict, key)
35+
let new_dict[key] = a:dict[key]
36+
endif
37+
endfor
38+
return new_dict
39+
endfunction
40+
41+
function! s:omit(dict, keys) abort
42+
let new_dict = copy(a:dict)
43+
for key in a:keys
44+
if has_key(a:dict, key)
45+
call remove(new_dict, key)
46+
endif
47+
endfor
48+
return new_dict
49+
endfunction
50+
51+
function! s:clear(dict) abort
52+
for key in keys(a:dict)
53+
call remove(a:dict, key)
54+
endfor
55+
return a:dict
56+
endfunction
57+
58+
function! s:_max_by(dict, expr) abort
59+
let dict = s:swap(map(copy(a:dict), a:expr))
60+
let key = dict[max(keys(dict))]
61+
return [key, a:dict[key]]
62+
endfunction
63+
64+
function! s:max_by(dict, expr) abort
65+
if empty(a:dict)
66+
throw 'vital: Data.Dict: Empty dictionary'
67+
endif
68+
return s:_max_by(a:dict, a:expr)
69+
endfunction
70+
71+
function! s:min_by(dict, expr) abort
72+
if empty(a:dict)
73+
throw 'vital: Data.Dict: Empty dictionary'
74+
endif
75+
return s:_max_by(a:dict, '-(' . a:expr . ')')
76+
endfunction
77+
78+
function! s:_foldl(f, init, xs) abort
79+
let memo = a:init
80+
for [k, v] in a:xs
81+
let expr = substitute(a:f, 'v:key', string(k), 'g')
82+
let expr = substitute(expr, 'v:val', string(v), 'g')
83+
let expr = substitute(expr, 'v:memo', string(memo), 'g')
84+
unlet memo
85+
let memo = eval(expr)
86+
endfor
87+
return memo
88+
endfunction
89+
90+
function! s:foldl(f, init, dict) abort
91+
return s:_foldl(a:f, a:init, items(a:dict))
92+
endfunction
93+
94+
function! s:foldr(f, init, dict) abort
95+
return s:_foldl(a:f, a:init, reverse(items(a:dict)))
96+
endfunction
97+
98+
let &cpo = s:save_cpo
99+
unlet s:save_cpo
100+
101+
" vim:set et ts=2 sts=2 sw=2 tw=0:
102+
" ___Revitalizer___
103+
" NOTE: below code is generated by :Revitalize.
104+
" Do not mofidify the code nor append new lines
105+
if v:version > 703 || v:version == 703 && has('patch1170')
106+
function! s:___revitalizer_function___(fstr) abort
107+
return function(a:fstr)
108+
endfunction
109+
else
110+
function! s:___revitalizer_SID() abort
111+
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze____revitalizer_SID$')
112+
endfunction
113+
let s:___revitalizer_sid = '<SNR>' . s:___revitalizer_SID() . '_'
114+
function! s:___revitalizer_function___(fstr) abort
115+
return function(substitute(a:fstr, 's:', s:___revitalizer_sid, 'g'))
116+
endfunction
117+
endif
118+
119+
let s:___revitalizer_functions___ = {'clear': s:___revitalizer_function___('s:clear'),'foldl': s:___revitalizer_function___('s:foldl'),'foldr': s:___revitalizer_function___('s:foldr'),'make': s:___revitalizer_function___('s:make'),'make_index': s:___revitalizer_function___('s:make_index'),'max_by': s:___revitalizer_function___('s:max_by'),'min_by': s:___revitalizer_function___('s:min_by'),'omit': s:___revitalizer_function___('s:omit'),'pick': s:___revitalizer_function___('s:pick'),'swap': s:___revitalizer_function___('s:swap')}
120+
121+
unlet! s:___revitalizer_sid
122+
delfunction s:___revitalizer_function___
123+
124+
function! vital#_easymotion#Data#Dict#import() abort
125+
return s:___revitalizer_functions___
126+
endfunction
127+
" ___Revitalizer___

autoload/vital/_easymotion/Data/List.vim

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,3 +440,29 @@ let &cpo = s:save_cpo
440440
unlet s:save_cpo
441441

442442
" vim:set et ts=2 sts=2 sw=2 tw=0:
443+
" ___Revitalizer___
444+
" NOTE: below code is generated by :Revitalize.
445+
" Do not mofidify the code nor append new lines
446+
if v:version > 703 || v:version == 703 && has('patch1170')
447+
function! s:___revitalizer_function___(fstr) abort
448+
return function(a:fstr)
449+
endfunction
450+
else
451+
function! s:___revitalizer_SID() abort
452+
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze____revitalizer_SID$')
453+
endfunction
454+
let s:___revitalizer_sid = '<SNR>' . s:___revitalizer_SID() . '_'
455+
function! s:___revitalizer_function___(fstr) abort
456+
return function(substitute(a:fstr, 's:', s:___revitalizer_sid, 'g'))
457+
endfunction
458+
endif
459+
460+
let s:___revitalizer_functions___ = {'all': s:___revitalizer_function___('s:all'),'and': s:___revitalizer_function___('s:and'),'any': s:___revitalizer_function___('s:any'),'binary_search': s:___revitalizer_function___('s:binary_search'),'break': s:___revitalizer_function___('s:break'),'char_range': s:___revitalizer_function___('s:char_range'),'clear': s:___revitalizer_function___('s:clear'),'combinations': s:___revitalizer_function___('s:combinations'),'concat': s:___revitalizer_function___('s:concat'),'conj': s:___revitalizer_function___('s:conj'),'cons': s:___revitalizer_function___('s:cons'),'find': s:___revitalizer_function___('s:find'),'find_index': s:___revitalizer_function___('s:find_index'),'find_indices': s:___revitalizer_function___('s:find_indices'),'find_last_index': s:___revitalizer_function___('s:find_last_index'),'flatten': s:___revitalizer_function___('s:flatten'),'foldl': s:___revitalizer_function___('s:foldl'),'foldl1': s:___revitalizer_function___('s:foldl1'),'foldr': s:___revitalizer_function___('s:foldr'),'foldr1': s:___revitalizer_function___('s:foldr1'),'group_by': s:___revitalizer_function___('s:group_by'),'has': s:___revitalizer_function___('s:has'),'has_common_items': s:___revitalizer_function___('s:has_common_items'),'has_index': s:___revitalizer_function___('s:has_index'),'intersect': s:___revitalizer_function___('s:intersect'),'map_accum': s:___revitalizer_function___('s:map_accum'),'max_by': s:___revitalizer_function___('s:max_by'),'min_by': s:___revitalizer_function___('s:min_by'),'or': s:___revitalizer_function___('s:or'),'partition': s:___revitalizer_function___('s:partition'),'permutations': s:___revitalizer_function___('s:permutations'),'pop': s:___revitalizer_function___('s:pop'),'product': s:___revitalizer_function___('s:product'),'push': s:___revitalizer_function___('s:push'),'shift': s:___revitalizer_function___('s:shift'),'sort': s:___revitalizer_function___('s:sort'),'sort_by': s:___revitalizer_function___('s:sort_by'),'span': s:___revitalizer_function___('s:span'),'take_while': s:___revitalizer_function___('s:take_while'),'uniq': s:___revitalizer_function___('s:uniq'),'uniq_by': s:___revitalizer_function___('s:uniq_by'),'unshift': s:___revitalizer_function___('s:unshift'),'with_index': s:___revitalizer_function___('s:with_index'),'zip': s:___revitalizer_function___('s:zip'),'zip_fill': s:___revitalizer_function___('s:zip_fill')}
461+
462+
unlet! s:___revitalizer_sid
463+
delfunction s:___revitalizer_function___
464+
465+
function! vital#_easymotion#Data#List#import() abort
466+
return s:___revitalizer_functions___
467+
endfunction
468+
" ___Revitalizer___

autoload/vital/_easymotion/Data/Set.vim

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,3 +267,29 @@ endfunction
267267

268268
let &cpo = s:save_cpo
269269
unlet s:save_cpo
270+
" ___Revitalizer___
271+
" NOTE: below code is generated by :Revitalize.
272+
" Do not mofidify the code nor append new lines
273+
if v:version > 703 || v:version == 703 && has('patch1170')
274+
function! s:___revitalizer_function___(fstr) abort
275+
return function(a:fstr)
276+
endfunction
277+
else
278+
function! s:___revitalizer_SID() abort
279+
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze____revitalizer_SID$')
280+
endfunction
281+
let s:___revitalizer_sid = '<SNR>' . s:___revitalizer_SID() . '_'
282+
function! s:___revitalizer_function___(fstr) abort
283+
return function(substitute(a:fstr, 's:', s:___revitalizer_sid, 'g'))
284+
endfunction
285+
endif
286+
287+
let s:___revitalizer_functions___ = {'frozenset': s:___revitalizer_function___('s:frozenset'),'set': s:___revitalizer_function___('s:set')}
288+
289+
unlet! s:___revitalizer_sid
290+
delfunction s:___revitalizer_function___
291+
292+
function! vital#_easymotion#Data#Set#import() abort
293+
return s:___revitalizer_functions___
294+
endfunction
295+
" ___Revitalizer___

autoload/vital/_easymotion/HitAHint/Hint.vim

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,29 @@ function! s:_keys_count(targets_len, keys_len) abort
109109
exe s:assert('len(_keys_count) is# a:keys_len')
110110
return _keys_count
111111
endfunction
112+
" ___Revitalizer___
113+
" NOTE: below code is generated by :Revitalize.
114+
" Do not mofidify the code nor append new lines
115+
if v:version > 703 || v:version == 703 && has('patch1170')
116+
function! s:___revitalizer_function___(fstr) abort
117+
return function(a:fstr)
118+
endfunction
119+
else
120+
function! s:___revitalizer_SID() abort
121+
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze____revitalizer_SID$')
122+
endfunction
123+
let s:___revitalizer_sid = '<SNR>' . s:___revitalizer_SID() . '_'
124+
function! s:___revitalizer_function___(fstr) abort
125+
return function(substitute(a:fstr, 's:', s:___revitalizer_sid, 'g'))
126+
endfunction
127+
endif
128+
129+
let s:___revitalizer_functions___ = {'_vital_loaded': s:___revitalizer_function___('s:_vital_loaded'),'create': s:___revitalizer_function___('s:create')}
130+
131+
unlet! s:___revitalizer_sid
132+
delfunction s:___revitalizer_function___
133+
134+
function! vital#_easymotion#HitAHint#Hint#import() abort
135+
return s:___revitalizer_functions___
136+
endfunction
137+
" ___Revitalizer___

autoload/vital/_easymotion/HitAHint/Motion.vim

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ let s:overwin = {
7272
\ 'cursor': 'HitAHintCursor',
7373
\ },
7474
\ 'jump_first_target_keys': [],
75-
\ 'do_shade': s:TRUE,
75+
\ 'do_shade': s:FALSE,
7676
\ }
7777
\ }
7878

@@ -539,11 +539,10 @@ function! s:Hinter._show_hint_for_line(winnr, lnum, col2hint) abort
539539
let is_consecutive = cnum is# prev_cnum + 1
540540
if !is_consecutive
541541
let col_num += next_offset
542-
else
543-
let save_next_offset = next_offset
544542
endif
543+
let save_next_offset = next_offset
545544

546-
let [line, offset, next_offset] = self._replace_line_for_hint(a:lnum, col_num, line, hint)
545+
let [line, offset, next_offset] = self._replace_line_for_hint(col_num, line, hint)
547546

548547
if is_consecutive
549548
let col_offset += save_next_offset
@@ -570,7 +569,7 @@ endfunction
570569
" depends on the col number of next hint in the same line, so it returns
571570
" `next_offset` instead of returning offset all at once.
572571
" @return {(string, number, number)} (line, offset, next_offset)
573-
function! s:Hinter._replace_line_for_hint(lnum, col_num, line, hint) abort
572+
function! s:Hinter._replace_line_for_hint(col_num, line, hint) abort
574573
let line = a:line
575574
let col_num = a:col_num
576575
let do_replace_target = !(self.config.do_shade || s:can_preserve_syntax)
@@ -585,9 +584,9 @@ function! s:Hinter._replace_line_for_hint(lnum, col_num, line, hint) abort
585584

586585
let offset = 0
587586
if target is# "\t"
588-
let [line, offset] = self._replace_tab_target(a:lnum, col_num, line)
587+
let [line, offset] = self._replace_tab_target(col_num, line)
589588
elseif strdisplaywidth(target) > 1
590-
let line = self._replace_text_to_space(line, a:lnum, col_num, strdisplaywidth(target))
589+
let line = self._replace_text_to_space(line, col_num, strdisplaywidth(target))
591590
let offset = strdisplaywidth(target) - len(target)
592591
else
593592
if do_replace_target
@@ -602,19 +601,19 @@ function! s:Hinter._replace_line_for_hint(lnum, col_num, line, hint) abort
602601
let next_offset = 0
603602
if len(a:hint) > 1 && target isnot# "\t"
604603
" pass [' '] as hint to stop recursion.
605-
let [line, next_offset, _] = self._replace_line_for_hint(a:lnum, col_num + offset + 1, line, [' '])
604+
let [line, next_offset, _] = self._replace_line_for_hint(col_num + offset + 1, line, [' '])
606605
endif
607606
return [line, offset, next_offset]
608607
endfunction
609608

610609
" @return {(line, offset)}
611-
function! s:Hinter._replace_tab_target(lnum, col_num, line) abort
610+
function! s:Hinter._replace_tab_target(col_num, line) abort
612611
let space_len = s:tab2spacelen(a:line, a:col_num)
613-
let line = self._replace_text_to_space(a:line, a:lnum, a:col_num, space_len)
612+
let line = self._replace_text_to_space(a:line, a:col_num, space_len)
614613
return [line, space_len - 1]
615614
endfunction
616615

617-
function! s:Hinter._replace_text_to_space(line, lnum, col_num, len) abort
616+
function! s:Hinter._replace_text_to_space(line, col_num, len) abort
618617
let target = printf('\%%%dc.', a:col_num)
619618
let line = substitute(a:line, target, repeat(' ', a:len), '')
620619
return line
@@ -790,3 +789,29 @@ function! s:throw(message) abort
790789
throw 'vital: HitAHint.Motion: ' . a:message
791790
endfunction
792791

792+
" ___Revitalizer___
793+
" NOTE: below code is generated by :Revitalize.
794+
" Do not mofidify the code nor append new lines
795+
if v:version > 703 || v:version == 703 && has('patch1170')
796+
function! s:___revitalizer_function___(fstr) abort
797+
return function(a:fstr)
798+
endfunction
799+
else
800+
function! s:___revitalizer_SID() abort
801+
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze____revitalizer_SID$')
802+
endfunction
803+
let s:___revitalizer_sid = '<SNR>' . s:___revitalizer_SID() . '_'
804+
function! s:___revitalizer_function___(fstr) abort
805+
return function(substitute(a:fstr, 's:', s:___revitalizer_sid, 'g'))
806+
endfunction
807+
endif
808+
809+
let s:___revitalizer_functions___ = {'_vital_depends': s:___revitalizer_function___('s:_vital_depends'),'_vital_loaded': s:___revitalizer_function___('s:_vital_loaded'),'create_win2pos2hint': s:___revitalizer_function___('s:create_win2pos2hint'),'deepextend': s:___revitalizer_function___('s:deepextend'),'gather_poses': s:___revitalizer_function___('s:gather_poses'),'gather_visible_matched_poses': s:___revitalizer_function___('s:gather_visible_matched_poses'),'has_patch': s:___revitalizer_function___('s:has_patch'),'is_in_fold': s:___revitalizer_function___('s:is_in_fold'),'move': s:___revitalizer_function___('s:move'),'move_f': s:___revitalizer_function___('s:move_f'),'move_f2': s:___revitalizer_function___('s:move_f2'),'move_to_win': s:___revitalizer_function___('s:move_to_win'),'move_to_winpos': s:___revitalizer_function___('s:move_to_winpos'),'new_overwin': s:___revitalizer_function___('s:new_overwin'),'pos2hint_to_line2col2hint': s:___revitalizer_function___('s:pos2hint_to_line2col2hint'),'pos2poskey': s:___revitalizer_function___('s:pos2poskey'),'poskey2pos': s:___revitalizer_function___('s:poskey2pos'),'setline': s:___revitalizer_function___('s:setline'),'tab2spacelen': s:___revitalizer_function___('s:tab2spacelen'),'throw': s:___revitalizer_function___('s:throw'),'win2pos2hint_to_w2l2c2h': s:___revitalizer_function___('s:win2pos2hint_to_w2l2c2h'),'wincall': s:___revitalizer_function___('s:wincall'),'winnr2poses_to_list': s:___revitalizer_function___('s:winnr2poses_to_list')}
810+
811+
unlet! s:___revitalizer_sid
812+
delfunction s:___revitalizer_function___
813+
814+
function! vital#_easymotion#HitAHint#Motion#import() abort
815+
return s:___revitalizer_functions___
816+
endfunction
817+
" ___Revitalizer___

autoload/vital/_easymotion/Over/Commandline/Base.vim

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,3 +589,29 @@ endfunction
589589

590590
let &cpo = s:save_cpo
591591
unlet s:save_cpo
592+
" ___Revitalizer___
593+
" NOTE: below code is generated by :Revitalize.
594+
" Do not mofidify the code nor append new lines
595+
if v:version > 703 || v:version == 703 && has('patch1170')
596+
function! s:___revitalizer_function___(fstr) abort
597+
return function(a:fstr)
598+
endfunction
599+
else
600+
function! s:___revitalizer_SID() abort
601+
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze____revitalizer_SID$')
602+
endfunction
603+
let s:___revitalizer_sid = '<SNR>' . s:___revitalizer_SID() . '_'
604+
function! s:___revitalizer_function___(fstr) abort
605+
return function(substitute(a:fstr, 's:', s:___revitalizer_sid, 'g'))
606+
endfunction
607+
endif
608+
609+
let s:___revitalizer_functions___ = {'_vital_depends': s:___revitalizer_function___('s:_vital_depends'),'_vital_loaded': s:___revitalizer_function___('s:_vital_loaded'),'is_input_waiting': s:___revitalizer_function___('s:is_input_waiting'),'make': s:___revitalizer_function___('s:make'),'make_plain': s:___revitalizer_function___('s:make_plain')}
610+
611+
unlet! s:___revitalizer_sid
612+
delfunction s:___revitalizer_function___
613+
614+
function! vital#_easymotion#Over#Commandline#Base#import() abort
615+
return s:___revitalizer_functions___
616+
endfunction
617+
" ___Revitalizer___

0 commit comments

Comments
 (0)