sci

最果て風呂

Twitter の仕様変更で TwitVim に問題発生

Vim と TwitVim

Vim で TwitVim を使っているのだけど、いつものように :CPosttoTwitter をしてもタイムラインに反映されていなかった。サーバが重くなってるのかなぁと思っていたのだけれど、一向に更新されない。

:UserTwitter をしてみるとエラーが出て何かがおかしくなっているみたい。ということで :message で流れてしまったエラーを見てるみことにする。

JSON parse error: Vim(let):E15: Invalid expression: 
Error detected while processing function <SNR>11_get_timeline..<SNR>11_show_time
line_json:
line   44:
E714: List required
Press ENTER or type command to continue

JSON 関係らしいけど、最近のパッチでこれに関するものは無いから Vim 本体の問題ではないのかなぁ。そもそも mattn さんは問題なく TwitVim で投稿できてるみたいだし…。

ネットで調べても問題が出ているという情報はない。手詰りになってしまったので、なんとなく .vimrclet twitvim_enable_python3 = 1 を設定して使ってみることにした。すると下記のエラーが出ていた。

Error getting user timeline: HTTP Error 403: Forbidden

あ〜、なんかこれ、ついっぷるとかで不具合が出ているというニュースがあったなぁ。Twitter 側の API 仕様変更が原因だとか。http アクセスが出来ないようになって、https のみになったというやつ。

TwitVim を最新版の 0.8.1 にしても変化なし。以前から https 接続をしているのだと思っていたのだけど、twitvim.vim のソースを見てみると、http のままになっていた。ということなので、40 行目から 44 行目までの http を https に修正することで問題は解決した。

ちなみに let twitvim_enable_python3 = 1コメントアウトした。

WindowsiBook

WindowsiBook の TwitVim も修正したのだけれど、こちらはエラーのままになってしまう。試行錯誤した結果、Windows の方は curl へのパスが通っていなかった、iBook の方は OpenSSL のバージョンが古かった、のが原因だった。両方ともメイン環境ではないので、手を入れるのが面倒。幸いにして python3 を有効にしてビルドしているので、let twitvim_enable_python3 = 1 を設定して使うようにした。

追記

iBook の方は OpenSSL や curl のバージョンが古いからだと思っていたけれども、SSL認証時の証明書のエラーが原因で、それ以降の処理がなされなかったみたい。TwitVim のエラーメッセージにちょろっと出力されていたけれど、無視させるオプションをつけると良いみたい。

twitvim.vim のソースを眺めてみると、該当するものがあった。

if s:get_twitvim_cert_insecure()
    let curlcmd .= "-k "
endif

.vimrc に下記を記述して問題は解決した。

let twitvim_cert_insecure = 1

Windows の方まだ解決していないが、curl にはパスが通っていた。何が原因なんだろう?

追記(解決)

Windows では(英数字のみの)新規ユーザを作成して、環境変数の HOME を設定しただけで動くようになった。原因は確定ではないけど、パスに日本語が入っているのが悪いのだと推測する。