gVim でフォントサイズを変えるプラグインを作った、んだけど…

知っている人は知っていると思うけど、実はこの手のプラグインはすでに何個かある。と言うか今回のこれも実は最初は既存のをちょっと直しただけのものだった。経緯を書くと、

  1. zoom.vim : 「+」、「-」キーで文字の大きさを変更 — 名無しのvim使い の存在を知る。 (今年の1月ごろ)
  2. が、使ってみたら動かなくて、ソースを見てみたら実装があまりにもアレだったので書き直した。
  3. 公開しようかとも思ったけど、実装部分は丸々書き換えたけどインターフェースやプラグイン名はそのままだったのと、元のスクリプトのライセンスが不明で確認するのも面倒だったので放置。
  4. そして…11か月の月日が流れた…。
  5. 最近になってこういう話題を見てふと思い出して、なんとなくソース眺めてた。
  6. 気付いたらコマンド名が :Fontsize に変わって使い方も変わっててプラグイン名も fontsize.vim になってた。
  7. 元々実装部分は完全に別物でこれでプラグインとしては完全に書き直したものになったので、これで公開してしまおうかなぁと思った後類似のスクリプトがないか確認してみた。
  8. そしたらなんかいっぱい出てきた…。
  9. おいおい、みんな考えることは同じか。こんだけあるし同名のもあるし、今更私が公開する意味あるのか?
  10. いまここ

とは言ったものの

私の作ったバージョンにもアドバンテージはある。

[count] が使える

少なくとも私の見つけたスクリプトでは [count] が使えなかった。つまりフォントサイズは1ptずつしか変化させられない。私のは 10+ とかやると 10pt 大きくなる。

'lines' と 'columns' を記憶する

既存のスクリプトは初期フォントサイズを記憶して元に戻す機能まではあるが、それだと微妙に問題がある。
フォントサイズを非常に大きくしてディスプレイサイズより大きくなると Vim は代わりに 'lines' と 'columns' を減らして画面内に収まるサイズに調整する。そのままフォントサイズだけ元に戻してもウィンドウは小さくなってしまう。
私はこれが耐えられなかったので、'lines' と 'columns' も保存してリセット時に復元するようにした。
フォントサイズ変更後に 'lines' と 'columns' を自分で変えてた場合は余計なお世話なんだけど、今まで使ってたの自分だけだったので今のところ特に対策してない。

フォントサイズのパターンをオプション化

この手のスクリプトはどれも 'guifont' オプションを見て、その文字列からフォントサイズ部分を抜き出して変更して再設定、と言う事をしているんだけど、既存のは環境ごとに固定でパターンを設定してる。
大抵の場合はそれで問題ないんだけど、なにしろ Vim は色んな環境で動くので私の知らないフォント名の設定があるかもと思い、パターン部分を外部で設定できるオプションにしてデフォルト値を可能な限りよしなにするようにした。
念のためとも言うしユーザに丸投げとも言う。

てわけで

リリースするとしても、quickrun.vim の経験があるので、同名スクリプトのリリースは避けたい。でも他にいい名前も思いつかないんだよなぁ。プラグイン名変えたら当然コマンド名も変わるだろうし。
と言うかそもそもこれ欲しい人居ますかね? 居ないなら面倒なのでこのままお蔵入りかなぁ。

インターフェース

万が一欲しい人がいたときのために念のため一応簡単にちょろっとインターフェースの説明。
コマンドは :Fontsize だけで、 :Fontsize +N :Fontsize -N でサイズ増減、:Fontsize N でサイズ直接指定で変更、:Fontsize で現在のサイズを表示、:Fontsize! でリセット。後は [count] も使える named key mapping が定義してある。で、デフォルトでは + と - がそれらに割り当ててある。


追記: 公開しました。
http://d.hatena.ne.jp/thinca/20091226/fontzoom
http://github.com/thinca/vim-fontzoom