TweetVim で自動ツイートする

書いてみました。
TweetVim 1.8 で非同期ツイート機能が実装されたのでレスポンスはさほど気になりません。

[ソース]

function! s:rotate(list)
    let result = a:list + [a:list[0]]
    unlet result[0]
    return result
endfunction


let s:latest_time = localtime()

" ツイートするテキスト
" わたしは複数のテキストを繰り返してツイートしている
let s:tweet_texts = [
\    "今年も Vim Advent Calendar をやります! [Vim Advent Calendar 2012 http://atnd.org/events/33746]",
\    "毎週土曜日 23時から vimrc 読書会を開催しています→ [vimrc読書会 http://vim-jp.org/reading-vimrc/]",
\    "11/17 20時から行います『C++11 Idioms @ Silicon Valley Code Camp 2012』の資料を読むよ! [C++オンライン読書会 https://sites.google.com/site/boostjp/cpp_online_reading]",
\    "12/01(土)19時に Boost.読書会を開催します。Boost.Variant 読みます→ [Boost.読書会 http://d.hatena.ne.jp/osyo-manga/20121013/1350061054]",
\]

function! s:tweet()
    let interval = 60 * 30
    let now = localtime()
    if (now - s:latest_time) > interval
        echom "auto-tweet"
        let text = s:tweet_texts[0]
        let s:tweet_texts = s:rotate(s:tweet_texts)

        execute "TweetVimCommandSay" text

        let s:latest_time = now
    endif

    " 自動で繰り返し CursorHold を呼ぶため
    call feedkeys(mode() ==# 'i' ? "\<C-g>\<ESC>" : "g\<ESC>", 'n')
endfunction


" 一定時間カーソルが押されなかった時にツイート
augroup vim-auto-tweet
    autocmd!
    autocmd CursorHold  * call s:tweet()
augroup END