" ============================================================================= " Filename: autoload/screensaver/util.vim " Author: itchyny " License: MIT License " Last Change: 2015/03/29 07:26:31. " ============================================================================= let s:save_cpo = &cpo set cpo&vim function! screensaver#util#sum(xs) abort let n = 0 for i in range(len(a:xs)) let n += a:xs[i] endfor return n endfunction function! screensaver#util#message(msg) abort redraw echo '' for msg in split(a:msg, '\n') echom msg endfor endfunction function! screensaver#util#error(msg) abort redraw echo '' echohl ErrorMsg for msg in split(a:msg, '\n') echom msg endfor echohl None endfunction if exists('*strftime') function! screensaver#util#time() abort return [strftime('%H') * 1, strftime('%M') * 1, strftime('%S') * 1] endfunction else function! screensaver#util#time() abort return [system('date "+%H"') * 1, system('date "+%M"') * 1, system('date "+%S"') * 1] endfunction endif function! screensaver#util#nmapall(mapping) abort let save_cpo = &cpo set cpo&vim let nmaps = split(screensaver#util#capture('nmap'), '\n') let cs = map(filter(map(nmaps, 'v:val[3:]'), \ 'v:val !~# "screensaver\\|^\\|^<[-A-Z]\\+> " && v:val =~# "^\\S\\S\\+"'), \ 'substitute(v:val, "\\s.*", "", "")') for c in cs exec 'nmap ' . c . ' ' . a:mapping endfor let cs = range(0, 57) + range(59, 255) for c in cs exec 'nmap ' . a:mapping exec 'nmap ' . a:mapping exec 'nmap ' . a:mapping endfor let cs = [ 'Left', 'Right', 'Up', 'Down', 'Esc', 'Cr', 'Help', 'Undo', \ 'Home', 'End', 'Bs', 'Del', 'PageUp', 'PageDown', 'Bar', 'Insert', 'Mouse', \ 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12', \ ] for c in cs exec 'nmap <' . c . '> ' . a:mapping exec 'nmap ' . a:mapping exec 'nmap ' . a:mapping endfor let &cpo = save_cpo endfunction function! screensaver#util#capture(cmd) abort let [save_verbose, save_verbosefile] = [&verbose, &verbosefile] try set verbose=0 verbosefile= redir => res silent! execute a:cmd finally redir END let [&verbose, &verbosefile] = [save_verbose, save_verbosefile] endtry return res endfunction let &cpo = s:save_cpo unlet s:save_cpo