49 howm-mode.vim (2-26) :HowmSchedule の追加
以前書いた calendar.vim との連携の話。さっさと実装したいんだけど、howm_vim には指定した日時を表示する機能がない。howm_vim 側に変更が必要なわけ。というわけで、ちょいちょいとユーザ定義コマンドを追加する。
目標としては、予定一覧(
まずは s:ShowSchedule() を可変長引数にしてやる。引数は文字列で、g:howm_date_pattern にしたがって指定できる。ただ動作だけが変わっても分かりにくいので、シンタックスのほうも syntax/howm_importantdate.vim から移動した。
function! s:ShowSchedule(...) " ... let today_s = exists('a:1') && (a:1 =~ '\v' . pattern_date) ? a:1 : strftime(g:howm_date_pattern) let today = HowmDate2Int(today_s, g:howm_date_pattern) let today_i = (today - HowmDate2Int('1970-01-01', '%Y-%m-%d')) * 86400 if g:howm_reminder_old_format exe 'syntax match howmToday display "\(@\[' . strftime(g:howm_date_pattern, today_i) . '\]\(-\d\+\|[!@+.]\d*\)\?\)\@<=.*$"' exe 'syntax match howmTomorrow display "\(@\[' . strftime(g:howm_date_pattern, today_i + 86400) . '\]\(-\d\+\|[!@+.]\d*\)\?\)\@<=.*$"' else exe 'syntax match howmToday display "\%(\[' . strftime(g:howm_date_pattern, today_i) . '\][-!@+.]\d*\)\@<=.*$"' exe 'syntax match howmTomorrow display "\%(\[' . strftime(g:howm_date_pattern, today_i + 86400) . '\][-!@+.]\d*\)\@<=.*$"' endif " ... endfunction
exe 'syntax match howmNote display "\['.s:pattern_date.'\]-\d*"' exe 'syntax match howmTodo display "\['.s:pattern_date.'\]+\d*"' exe 'syntax match howmDeadline display "\['.s:pattern_date.'\]!\d*"' exe 'syntax match howmSchedule display "\['.s:pattern_date.'\]@"' exe 'syntax match howmFinished display "\['.s:pattern_date.'\]\."' " howmToday, howmTomorrow は howm-mode.vim の ShowSchedule で match if g:howm_reminder_old_format != 0 exe 'syntax match howmNote display "@\['.s:pattern_date.'\]\(-\d\+\)\?"' exe 'syntax match howmTodo display "@\['.s:pattern_date.'\]+\d*"' exe 'syntax match howmDeadline display "@\['.s:pattern_date.'\]!\d*"' exe 'syntax match howmSchedule display "@\['.s:pattern_date.'\]@"' exe 'syntax match howmFinished display "@\['.s:pattern_date.'\]\."' " howmToday, howmTomorrow は howm-mode.vim の ShowSchedule で match endif
最後にユーザ定義コマンドを定義する。
" commands {{{ command! -nargs=? HowmSchedule :call <SID>ShowSchedule(<f-args>) " commands }}}
これで準備完了。 :HowmSchedule 2008-02-14 としてやれば(この場合 g:howm_date_pattern は %Y-%m-%d)、2008-02-14 を基準日とした予定一覧を表示してくれる。