読者です 読者をやめる 読者になる 読者になる

最近のrestart.vimの新機能 (3つ)

最大化されてるウインドウも最大化したまま復元できるようにした(Windowsのみ)

Support maximized window restoration · 2e91b8c · tyru/restart.vim · GitHub

ソースコードを見ると分かる通りad-hocなコードになっていて、
GVimウインドウの左上の座標がxとyどちらも0以下だったら最大化されていると見なすようにしている。
なので画面全体の座標の(0,0)より左上に行っている場合も、最大化されていると見なされてしまう。
当初はWin32APIのIsZoomed()関数を使えばいいのかと思ったけど、
引数に渡すウインドウハンドルの取得方法が分からず(PIDと一緒かと思ってgetpid()の値を渡しても)常に0が返ってきてしまったので、
結局getwinposx()、getwinposy()を使うようにした。

ユーザーに変更済みバッファがある場合再起動していいかプロンプトを出すようにした

以前は1個でもバッファが変更済みになっていたら警告を出して再起動をキャンセルしていた。
ただ、ちまちま変更済みのバッファを探してもう一回「:Restart」を叩くのも面倒なので、
変更済みの場合はユーザーに変更済みバッファがありますが再起動していいか聞いてからYesをユーザーが選べば即座に再起動するように変更した。

メニューに「再起動」を追加した

あまりメニューを使っている人はいないと思いますが、
GVimだとウインドウのメニューをカスタマイズする事が可能です。
自分の中でメニュー使いたい欲が高まってきていたのでつい実装してしまいました。
無駄に日本語対応です。*1

変更点まとめ

ようするに最近の変更点は以下の通りです。

  1. 最大化されてるウインドウも最大化したまま復元できるようにした(Windowsのみ)
  2. ユーザーに変更済みバッファがある場合再起動していいかプロンプトを出すようにした
  3. メニューに「再起動」を追加した

*1:もちろん英語環境だと「Restart」と出ます。日本語環境だと「再起動」