最近Vimに取り込まれた大規模パッチに関する備忘録


最近2カ月ほどの間に、Vimに変更量1000行以上の大規模なパッチ(Windows関連)をいくつか取り込んでもらえたので、備忘のため記録を残しておこうと思います。
Wide版APIの有効化とANSI版APIの削除
8.1.1081: MS-Windows: cannot use some fonts
8.1.1091: MS-Windows: cannot use multi-byte chars in environment var (関連: 8.1.1104)
8.1.1103: MS-Windows: old API calls are no longer needed
今まで、Windows版Vimでは、’encoding’ の設定に応じて、ANSI版APIを使用したり、Wide版 (Unicode版) APIを使用したりしていました。しかしANSI版APIはWin9x用のAPIであり、対応OSがWinXP以降になったVim 8.1では本来必要ありませんでした。ただ、Wide版APIを使うには、UTF-8/UTF-16等のエンコーディング変換が必要なことから、ANSI/Wide両方のコードが残ったままとなっており、コードが複雑化していました。
しばらく前の 8.1.0805 ~ 8.1.0811 でマルチバイト機能が常に有効化されるようになりました。これにより、エンコーディング変換機能が常に有効化されたことから、ANSI版APIの完全削除が可能となりました。そこで、ANSI APIの使用を取りやめ、Wide APIに置き換えたのが上記のパッチです。
これにより、現在のコードページでは使用できない文字をフォント名や環境変数に使用することができるようになったり、ソースコードが大幅にシンプルになりました。今後、Windows向けに新たにパッチを書くのも楽になるでしょう。
VIMDLL機能
VIMDLL機能本体と、追加のバグ修正
8.1.1230: a lot of code is shared between vim.exe and gvim.exe
8.1.1239: key with byte sequence containing CSI does not work
8.1.1269: MS-Windows GUI: multibyte

サイト名: Qiita

Leave a Reply

Your email address will not be published. Required fields are marked *