Vim から Outputz に文字数を投げる
EmacsからOutputzに文字数を投げる - antipop
Outputz の流れに乗りたかったので、vim 用のプラグインを作ってみました。
さきほどプラグイン検索してみると、Outputz 用のプラグインが登録されていました。
outputz - outputz interface for Vim : vim online
でも、一応公開しておきます。文字数のカウントと HTTP 通信は Ruby でやっています。
まぁ、注意点は、
- どのファイルに対してもカウントするので、ファイルサイズの大きいものを読み込んでしまうと遅くなってしまうかも
- URI のデフォルト値は "http://localhost/vim"。集計したときに分かりづらい
- Windows でしか動作確認をしていない
なところ。
" vim: set sts=2 sw=2 " vim:fdm=marker " " Outputz for vim plugin " " Maintainer: gtaka555 " Last Modify: 2008-11-22 " Since: 2008-11-22 " Version: 0.0.1 " if exists("b:outputz_plugin") finish endif let b:outputz_plugin = 1 " valuables : {{{1 if !exists('g:outputz_key') finish endif if !exists('g:outputz_uri') let g:outputz_uri = 'http://localhost/vim/' endif " }}} " autocommands : {{{1 au BufNewFile,BufReadPost * :call <SID>Init() au BufWritePost * :call <SID>ReCalc() " }}} " commands : {{{1 command! OutputzWc call <SID>CountChar() " }}} " functions : {{{1 func! s:Init() let b:file_size = s:CountChar() endfun func! s:ReCalc() let s:new_file_size = s:CountChar() if s:new_file_size > b:file_size call s:Send(s:new_file_size - b:file_size) endif let b:file_size = s:new_file_size endfun func! s:Send(size) " TODO: let s:cmd = "ruby -e \"" let s:cmd = s:cmd . "key='" . g:outputz_key . "';size='" . a:size . "';uri='" . g:outputz_uri . "';" " let s:cmd = s:cmd . "require 'net/http'; Net::HTTP.start('localhost', 8080)" let s:cmd = s:cmd . "require 'net/http'; Net::HTTP.start('outputz.com', 80)" let s:cmd = s:cmd . "{|http| response = http.post('/api/post'," let s:cmd = s:cmd . "'key='+URI.encode(key)+'&uri='+URI.encode(uri)+'&size='+URI.encode(size));" let s:cmd = s:cmd . "puts response.code }\"" " echo s:cmd silent call system(s:cmd) return endfun fun! s:CountChar() let s:total = 0 if has('ruby') ruby << RUBY_SRC # TODO: $KCODE = 'SJIS' total = 0 cb = VIM::Buffer.current (1..cb.count).each do |i| total = total + cb[i].split(//).size end # puts "#{total}" VIM::command("let s:total = #{total}") RUBY_SRC endif " echo s:total return s:total endfun " }}}