2016/01/29

Vim に入った channel 機能を使ってテキスト編集中も流れる twitter タイムラインの表示を考えてみた。

functions: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 タイムラインが出来上がる。

※タイムラインの内容は公開出来ないので興味のある方はご自分でお試し下さい。

Posted at 19:52 | WriteBacks () | Edit
Edit this entry...

wikieditish message: Ready to edit this entry.






















A quick preview will be rendered here when you click "Preview" button.