2016/01/29

Recent entries from same category

  1. vim-soundcloud 作った。
  2. Software Design 2016年5月号 Vim 「実戦」投入
  3. Re: ちょっと使えるかも(?)しれない、正規表現
  4. 仕事ですぐ役立つ Vim&Emacsエキスパート活用術
  5. Vim にchannel(ソケット通信機能)が付いた。

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

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


blog comments powered by Disqus