| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- " Variables {{{1
- let s:cow = [
- \ ' o',
- \ ' o ^__^',
- \ ' o (oo)\_______',
- \ ' (__)\ )\/\',
- \ ' ||----w |',
- \ ' || ||',
- \ ]
- let s:quotes = exists('g:startify_custom_header_quotes')
- \ ? g:startify_custom_header_quotes
- \ : [
- \ ['Almost every programming language is overrated by its practitioners.', '', '- Larry Wall'],
- \ ]
- " Function: s:get_random_offset {{{1
- function! s:get_random_offset(max) abort
- return str2nr(matchstr(reltimestr(reltime()), '\.\zs\d\+')[1:]) % a:max
- endfunction
- " Function: s:draw_box {{{1
- function! s:draw_box(lines) abort
- let longest_line = max(map(copy(a:lines), 'strwidth(v:val)'))
- if &encoding == 'utf-8' && get(g:, 'startify_fortune_use_unicode')
- let top_left_corner = '╭'
- let top_right_corner = '╮'
- let bottom_left_corner = '╰'
- let bottom_right_corner = '╯'
- let side = '│'
- let top_bottom_side = '─'
- else
- let top_left_corner = '*'
- let top_right_corner = '*'
- let bottom_left_corner = '*'
- let bottom_right_corner = '*'
- let side = '|'
- let top_bottom_side = '-'
- endif
- let top = top_left_corner . repeat(top_bottom_side, longest_line + 2) . top_right_corner
- let bottom = bottom_left_corner . repeat(top_bottom_side, longest_line + 2) . bottom_right_corner
- let lines = [top]
- for l in a:lines
- let offset = longest_line - strwidth(l)
- let lines += [side . ' '. l . repeat(' ', offset) .' ' . side]
- endfor
- let lines += [bottom]
- return lines
- endfunction
- " Function: #quote {{{1
- function! startify#fortune#quote() abort
- return s:quotes[s:get_random_offset(len(s:quotes))]
- endfunction
- " Function: #boxed {{{1
- function! startify#fortune#boxed() abort
- let wrapped_quote = []
- let quote = startify#fortune#quote()
- for line in quote
- let wrapped_quote += split(line, '\%50c.\{-}\zs\s', 1)
- endfor
- let wrapped_quote = s:draw_box(wrapped_quote)
- return wrapped_quote
- endfunction
- " Function: #cowsay {{{1
- function! startify#fortune#cowsay() abort
- let boxed_quote = startify#fortune#boxed()
- let boxed_quote += s:cow
- return map(boxed_quote, '" ". v:val')
- endfunction
|