" speeddating.vim - Use CTRL-A/CTRL-X to increment dates, times, and more " Maintainer: Tim Pope " Version: 20150124 " GetLatestVimScripts: 2120 1 :AutoInstall: speeddating.vim " Initialization {{{1 if exists("g:loaded_speeddating") || &cp || v:version < 700 finish endif let g:loaded_speeddating = 1 let s:cpo_save = &cpo set cpo&vim let g:speeddating_handlers = [] " }}}1 " Time Handler {{{1 function! s:add_format(master,count,bang) " Calls with neither argument nor count are for information, " and so should be handled immediately. " Call loadformats to cause autoloading to happen if a:master == "" && !a:count call speeddating#loadformats() endif if exists("g:speeddating_loaded_formats") " Autoloading already done pass on request immediately call speeddating#adddate(a:master,a:count,a:bang) else " Defer handling of format specifications until autoloading is done let g:speeddating_formats += [[a:master,a:count,a:bang]] endif endfunction command! -bar -bang -count=0 -nargs=? SpeedDatingFormat :call s:add_format(,,0) " }}}1 " Maps {{{1 nnoremap SpeedDatingUp :call speeddating#increment(v:count1) nnoremap SpeedDatingDown :call speeddating#increment(-v:count1) xnoremap SpeedDatingUp :call speeddating#incrementvisual(v:count1) xnoremap SpeedDatingDown :call speeddating#incrementvisual(-v:count1) nnoremap SpeedDatingNowLocal :call speeddating#timestamp(0,v:count) nnoremap SpeedDatingNowUTC :call speeddating#timestamp(1,v:count) for [s:key, s:type] in [['', 'Up'], ['', 'Down']] let s:rhs = maparg(s:key, 'n') if !empty(maparg('SpeedDatingFallback'.s:type, 'n')) continue elseif s:rhs =~# '^$\|^SpeedDating' exe 'nnoremap SpeedDatingFallback'.s:type s:key else exe 'nmap SpeedDatingFallback'.s:type s:rhs endif endfor if !exists("g:speeddating_no_mappings") || !g:speeddating_no_mappings nmap SpeedDatingUp nmap SpeedDatingDown xmap SpeedDatingUp xmap SpeedDatingDown nmap d SpeedDatingNowUTC nmap d SpeedDatingNowLocal endif " }}}1 " Default Formats {{{1 if exists('g:speeddating_formats') finish endif let g:speeddating_formats = [] SpeedDatingFormat %i, %d %h %Y %H:%M:%S %z " RFC822 SpeedDatingFormat %i, %h %d, %Y at %I:%M:%S%^P %z " mutt default date format SpeedDatingFormat %a %b %_d %H:%M:%S %Z %Y " default date(1) format SpeedDatingFormat %a %h %-d %H:%M:%S %Y %z " git SpeedDatingFormat %h %_d %H:%M:%S " syslog SpeedDatingFormat %Y-%m-%d%[ T_-]%H:%M:%S %z SpeedDatingFormat %Y-%m-%d%[ T_-]%H:%M:%S%?[Z] " SQL, etc. SpeedDatingFormat %Y-%m-%d%[ T_-]%H:%M%z " date -Im SpeedDatingFormat %Y-%m-%d%[ T_-]%H:%M SpeedDatingFormat %Y-%m-%d SpeedDatingFormat %-I:%M:%S%?[ ]%^P SpeedDatingFormat %-I:%M%?[ ]%^P SpeedDatingFormat %-I%?[ ]%^P SpeedDatingFormat %H:%M:%S,%k " SRT file SpeedDatingFormat %H:%M:%S SpeedDatingFormat %B %o, %Y SpeedDatingFormat %d%[-/ ]%b%1%y SpeedDatingFormat %d%[-/ ]%b%1%Y " These three are common in the SpeedDatingFormat %Y %b %d " 'Last Change:' headers of SpeedDatingFormat %b %d, %Y " Vim runtime files SpeedDatingFormat %^v SpeedDatingFormat %v " }}}1 let &cpo = s:cpo_save " vim:set et sw=2 sts=2: