Vim に入った channel 機能を使ってテキスト編集中も流れる twitter タイムラインの表示を考えてみた。
function! s:append(line)
let wn = bufwinnr("tweets")
if wn == -1
return 0
endif
exe wn 'wincmd w'
try
let o = jsondecode(a:line)
let ts = type(o) == 3 ? o : [o]
for t in ts
1put!=t.user.screen_name . ': ' . t.text
endfor
finally
wincmd p
endtry
endfunction
if bufwinnr("tweets") == -1
10new tweets
setlocal buftype=nofile bufhidden=hide noswapfile
wincmd p
endif
function! TweetsCallback(handle, msg)
for line in split(a:msg, "\n")
call s:append(line)
endfor
redraw
endfunction
if exists('s:handle')
call ch_close(s:handle)
endif
let s:handle = ch_open("127.0.0.1:7777", "raw", "TweetsCallback")
こんな Vim script を用意しておき、別のターミナルで
$ twty -S -json | nc -l -p 7777
twty を -json
オプション付きでストリーミングさせる。
そして上記 Vim script を :so %
で実行すると、テキスト編集中もどんどん流れる twitter タイムラインが出来上がる。
※タイムラインの内容は公開出来ないので興味のある方はご自分でお試し下さい。