diff --git a/autoload/vital/_easymotion/HitAHint/Motion.vim b/autoload/vital/_easymotion/HitAHint/Motion.vim index 4ec38d6..2887e50 100644 --- a/autoload/vital/_easymotion/HitAHint/Motion.vim +++ b/autoload/vital/_easymotion/HitAHint/Motion.vim @@ -135,7 +135,7 @@ function! s:move_to_winpos(winpos) abort let is_win_moved = !(winnr is# winnr()) if is_win_moved if exists('#WinLeave') - doautocmd WinLeave * + doautocmd WinLeave endif call s:move_to_win(winnr) else @@ -143,7 +143,7 @@ function! s:move_to_winpos(winpos) abort endif call cursor(pos) if is_win_moved && exists('#WinEnter') - doautocmd WinEnter * + doautocmd WinEnter endif endfunction diff --git a/autoload/vital/_easymotion/Prelude.vim b/autoload/vital/_easymotion/Prelude.vim index 6eed3c8..f123dc6 100644 --- a/autoload/vital/_easymotion/Prelude.vim +++ b/autoload/vital/_easymotion/Prelude.vim @@ -39,21 +39,37 @@ else endif " Wrapper functions for type(). -let [ -\ s:__TYPE_NUMBER, -\ s:__TYPE_STRING, -\ s:__TYPE_FUNCREF, -\ s:__TYPE_LIST, -\ s:__TYPE_DICT, -\ s:__TYPE_FLOAT] = [ - \ type(3), - \ type(''), - \ type(function('tr')), - \ type([]), - \ type({}), - \ has('float') ? type(str2float('0')) : -1] -" __TYPE_FLOAT = -1 when -float -" This doesn't match to anything. +" NOTE: __TYPE_FLOAT = -1 when -float. +" this doesn't match to anything. +if has('patch-7.4.2071') + let [ + \ s:__TYPE_NUMBER, + \ s:__TYPE_STRING, + \ s:__TYPE_FUNCREF, + \ s:__TYPE_LIST, + \ s:__TYPE_DICT, + \ s:__TYPE_FLOAT] = [ + \ v:t_number, + \ v:t_string, + \ v:t_func, + \ v:t_list, + \ v:t_dict, + \ v:t_float] +else + let [ + \ s:__TYPE_NUMBER, + \ s:__TYPE_STRING, + \ s:__TYPE_FUNCREF, + \ s:__TYPE_LIST, + \ s:__TYPE_DICT, + \ s:__TYPE_FLOAT] = [ + \ type(3), + \ type(''), + \ type(function('tr')), + \ type([]), + \ type({}), + \ has('float') ? type(str2float('0')) : -1] +endif " Number or Float function! s:is_numeric(Value) abort @@ -67,27 +83,32 @@ function! s:is_number(Value) abort return type(a:Value) ==# s:__TYPE_NUMBER endfunction -" Float -function! s:is_float(Value) abort - return type(a:Value) ==# s:__TYPE_FLOAT -endfunction " String function! s:is_string(Value) abort return type(a:Value) ==# s:__TYPE_STRING endfunction + " Funcref function! s:is_funcref(Value) abort return type(a:Value) ==# s:__TYPE_FUNCREF endfunction + " List function! s:is_list(Value) abort return type(a:Value) ==# s:__TYPE_LIST endfunction + " Dictionary function! s:is_dict(Value) abort return type(a:Value) ==# s:__TYPE_DICT endfunction +" Float +function! s:is_float(Value) abort + return type(a:Value) ==# s:__TYPE_FLOAT +endfunction + + function! s:truncate_skipping(str, max, footer_width, separator) abort call s:_warn_deprecated('truncate_skipping', 'Data.String.truncate_skipping') diff --git a/autoload/vital/_easymotion/Vim/Buffer.vim b/autoload/vital/_easymotion/Vim/Buffer.vim index 145c1d3..a4c3db5 100644 --- a/autoload/vital/_easymotion/Vim/Buffer.vim +++ b/autoload/vital/_easymotion/Vim/Buffer.vim @@ -3,13 +3,13 @@ " Do not mofidify the code nor insert new lines before '" ___vital___' if v:version > 703 || v:version == 703 && has('patch1170') function! vital#_easymotion#Vim#Buffer#import() abort - return map({'_vital_depends': '', 'read_content': '', 'get_selected_text': '', 'is_cmdwin': '', 'edit_content': '', 'open': '', 'get_last_selected': '', '_vital_loaded': ''}, 'function("s:" . v:key)') + return map({'parse_cmdarg': '', '_vital_depends': '', 'read_content': '', 'get_selected_text': '', 'is_cmdwin': '', 'edit_content': '', 'open': '', 'get_last_selected': '', '_vital_loaded': ''}, 'function("s:" . v:key)') endfunction else function! s:_SID() abort return matchstr(expand(''), '\zs\d\+\ze__SID$') endfunction - execute join(['function! vital#_easymotion#Vim#Buffer#import() abort', printf("return map({'_vital_depends': '', 'read_content': '', 'get_selected_text': '', 'is_cmdwin': '', 'edit_content': '', 'open': '', 'get_last_selected': '', '_vital_loaded': ''}, \"function('%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n") + execute join(['function! vital#_easymotion#Vim#Buffer#import() abort', printf("return map({'parse_cmdarg': '', '_vital_depends': '', 'read_content': '', 'get_selected_text': '', 'is_cmdwin': '', 'edit_content': '', 'open': '', 'get_last_selected': '', '_vital_loaded': ''}, \"function('%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n") delfunction s:_SID endif " ___vital___ @@ -114,6 +114,7 @@ function! s:read_content(content, ...) abort \ 'nobinary': 0, \ 'bad': '', \ 'edit': 0, + \ 'line': '', \}, get(a:000, 0, {})) let tempfile = empty(options.tempfile) ? tempname() : options.tempfile let optnames = [ @@ -127,7 +128,8 @@ function! s:read_content(content, ...) abort let optname = join(filter(optnames, '!empty(v:val)')) try call writefile(a:content, tempfile) - execute printf('keepalt keepjumps read %s%s', + execute printf('keepalt keepjumps %sread %s%s', + \ options.line, \ empty(optname) ? '' : optname . ' ', \ fnameescape(tempfile), \) @@ -155,6 +157,30 @@ function! s:edit_content(content, ...) abort setlocal nomodified endfunction +function! s:parse_cmdarg(...) abort + let cmdarg = get(a:000, 0, v:cmdarg) + let options = {} + if cmdarg =~# '++enc=' + let options.encoding = matchstr(cmdarg, '++enc=\zs[^ ]\+\ze') + endif + if cmdarg =~# '++ff=' + let options.fileformat = matchstr(cmdarg, '++ff=\zs[^ ]\+\ze') + endif + if cmdarg =~# '++bad=' + let options.bad = matchstr(cmdarg, '++bad=\zs[^ ]\+\ze') + endif + if cmdarg =~# '++bin' + let options.binary = 1 + endif + if cmdarg =~# '++nobin' + let options.nobinary = 1 + endif + if cmdarg =~# '++edit' + let options.edit = 1 + endif + return options +endfunction + let &cpo = s:save_cpo unlet s:save_cpo diff --git a/autoload/vital/_easymotion/Vim/Guard.vim b/autoload/vital/_easymotion/Vim/Guard.vim index 1df8343..6b46c77 100644 --- a/autoload/vital/_easymotion/Vim/Guard.vim +++ b/autoload/vital/_easymotion/Vim/Guard.vim @@ -100,7 +100,12 @@ function! s:_new_register(name) abort return register endfunction function! s:register.restore() abort - call setreg(self.name, self.value, self.type) + " https://github.com/vim/vim/commit/5a50c2255c447838d08d3b4895a3be3a41cd8eda + if has('patch-7.4.243') || self.name !=# '=' + call setreg(self.name, self.value, self.type) + else + let @= = self.value + endif endfunction let s:environment = {} diff --git a/autoload/vital/easymotion.vital b/autoload/vital/easymotion.vital index 3ce5e05..82ea097 100644 --- a/autoload/vital/easymotion.vital +++ b/autoload/vital/easymotion.vital @@ -1,5 +1,5 @@ easymotion -3404e200ca6b5f371811606e8399fefdf4595529 +882de6964d10595e839ccbcc0fb20b7ff14e43cb Over.Commandline.Base Over.Commandline.Modules.Cancel