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 で投稿できてるみたいだし…。
ネットで調べても問題が出ているという情報はない。手詰りになってしまったので、なんとなく .vimrc
に let 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
はコメントアウトした。
Windows と iBook
Windows と iBook の 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 を設定しただけで動くようになった。原因は確定ではないけど、パスに日本語が入っているのが悪いのだと推測する。