物置き

TwitVim

TwitVim 使用後ウィンドウを移動しないようにした - hkn?

上記の記事にてTwitVimというスクリプトの存在を知り、面白そうなので入れてみたところ
確かに元記事に書かれている通り、Windows版では文字化けするので調べてみました。


以下、文字化けの原因と対処


1292行目の数値文字参照をデコードする部分で、
submatch(1)で切り出した数値を、nr2char関数に渡してます。

Windows版だと&encodingがcp932なので、
nr2char関数に渡される数値はcp932であるものとして処理されます。
が、元データはUTF-8なので誤変換が行われてしまっているようです。


これが期待通りに動作するのは&encがutf-8な環境だけじゃないでしょうか。たぶん。


ということでためしに、下記の様にencodingを一時的に変更する処理をいれてみたところ、
WindowsGVimでも文字化けせずに表示できるようになりました。
(FriendsTwitterコマンドの出力結果のみ確認)

+   let [_, &encoding] = [ &encoding, 'utf-8']
    let s = substitute(s, '&#\(\d\+\);','\=nr2char(submatch(1))', 'g')
+   let &encoding=_

とはいえ

ヘルプみると「encoding変えるな」みたいなこと書いてある。
もうちょっとましなやり方ありそうだけど・・

あと、なんかFriendTwitterコマンドでTimeline表示した後で、新しいバッファ作るとnomodifiableになる。なして?
グローバルオプション変更してんのかしら。ぐえっ