From 045d9242bec6c67c789c2656943de3aa8640d54b Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sat, 22 Jun 2019 13:36:03 +1200 Subject: Flesh out fortune.vim a little more --- vim/autoload/fortune.vim | 48 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 15 deletions(-) (limited to 'vim/autoload') diff --git a/vim/autoload/fortune.vim b/vim/autoload/fortune.vim index 4fb1d0cd..dbb4c7c4 100644 --- a/vim/autoload/fortune.vim +++ b/vim/autoload/fortune.vim @@ -2,42 +2,60 @@ let s:paths = [ \ $HOME.'/.fortunes', \ $HOME.'/.local/share/games/fortunes', \] -highlight Fortune - \ term=NONE - \ cterm=NONE ctermfg=248 ctermbg=NONE + +let s:executables = [ + \ 'fortune', + \ 'timeout', + \] + +function! s:Highlight() abort + highlight Fortune + \ term=NONE + \ cterm=NONE ctermfg=248 ctermbg=NONE + \ gui=NONE guifg=#585858 guibg=NONE +endfunction +augroup fortune + autocmd! + autocmd ColorScheme * + \ call s:Highlight() +augroup END +doautocmd fortune ColorScheme function! fortune#() abort - if !has('unix') - echoerr 'Only works on *nix' - endif - if !executable('fortune') - echoerr 'Missing "fortune" executable' - endif - if !executable('timeout') - echoerr 'Missing "timeout" executable' - endif + + for executable in s:executables + if !executable(executable) + echoerr 'Missing executable "'.executable.'"' + endif + endfor + let limit = &columns - 1 + let command = [ \ 'timeout', \ '0.3s', \ 'fortune', - \ '-s', - \ '-n', + \ '-s', + \ '-n', \ limit, \] + for path in s:paths if isdirectory(path) call add(command, path) break endif endfor + let fortune = substitute( \ system(join(command)), - \ '[[:cntrl:]]\+', + \ '[[:cntrl:][:space:]]\+', \ ' ', \ 'g', \) + echohl Fortune echo fortune echohl None + endfunction -- cgit v1.2.3