Vim patchダイジェスト [2019/03]

[Vim](http://www.vim.org/)のリリースされた[patch](https://github.com/vim/vim/commits/master)の説明です。patchの内容を確認し、必要であれば動作確認をおこなったうえで書いています。英語を忠実に訳すよりは、Vimを使っている人が理解しやすい文章になるように心がけています。
**新機能、大幅な仕様変更には、:four_leaf_clover:が付いています。**
([8.1.0986](https://github.com/vim/vim/commit/ef8c956172aa967f67c524cb9609a4d390d74b82) ～ [8.1.1099](https://github.com/vim/vim/commit/b4a6020ac6a0638167013f1e45ff440ddc8a1671))

* [8.1.1096](https://github.com/vim/vim/commit/b70a47b77414273755c541f1378ca50966e5ef16): Windows: `BS`と`CTRL-H`の区別が出来ていなかったのを修正しました。
* [8.1.1095](https://github.com/vim/vim/commit/8662189736e6cefb3fe852728adb5341f83973cf): Windows: `executable()`に長いファイル名を渡すとエラーになる件を修正しました。
* [8.1.1094](https://github.com/vim/vim/commit/5209334c551778fe6f76945f373ee14fcac96f52): タグファイルに長い行があるとエラーになる件を修正しました。
* [8.1.1093](https://github.com/vim/vim/commit/96428dd4e961332e97d86013a321cedf5fafbed6): :alien:マクロ定義 FEAT_TAG_OLDSTATIC を削除しました。
* [8.1.1089](https://github.com/vim/vim/commit/b44b7add8ae8e15328b4f68c3caf511bd9aaac8c): tutor.vim で環境変数`$LC_MESSAGES`をチェックするようにしました。`$LANG`の設定よりも優先されます。
* [8.1.1087](https://github.com/vim/vim/commit/7559dcef6cfd0ba13271088fff51b8979fee950b): `CTRL-T`の後に`:tag`を実行するとタグスタックがおかしくなる件を修正しました。
* [8.1.1084](https://github.com/vim/vim/commit/aff749145e23c0f20b5158d1d3a942948ed138e3): :four_leaf_clover:`matchdelete()`, `clearmatches()`, `getmatches()` と `setmatches()`の引数に window ID を追加しました。カレントウィンドウ以外のウィンドウのマッチを操作できます。
* [8.1.1082](https://github.com/vim/vim/commit/ab62c19ea034d76632bbbf4265a9fc17e7508541): `'hlsearch'`にも "Conceal" にもマッチするテキストに対して "Conceal" を適用すると表示がおかしくなる件を修正しました。
* [8.1.1081](https://github.com/vim/vim/commit/433a5eb9de861dd01ea3b3dfa3b8fe23527cab54): Windows: 現在のコードページで名前を表現できないフォントが使用できない件を修正しました。
* [8.1.1080](https://github.com/vim/vim/commit/ef7f0e367eeaf6fb31b1caa0e3de1a4b07e86af3): :alien:画面ダンプテストに失敗した場合、書き込みファイルの拡張子は`.dump`のままで、`failed`ディレクトリ下に出力するようにしました。
* [8.1.1078](https://github.com/vim/vim/commit/5f8069bbf5d989936a2f4d7a76ae42434017e3a2): `'listchars'`で`space:`を設定して`'list'`した時、空白に続く合成文字が正しく表示されない件を修正しました。(関連patch: [8.1.1079](https://github.com/vim/vim/commit/48aed0824e47147faf19fc235ad4bcf851584c9c))
* [8.1.1076](https://github.com/vim/vim/commit/7591bb39d58ece38a5fef984a08ea9012616c1f9): :alien:インサートモード補完関連のコードを新規ファイルinsexpand.c に纏めました。
* [8.1.1072](https://github.com/vim/vim/commit/8ee4c01b8c79a29065c1af05e5d9c0721069765f): :four_leaf_clover:行番号桁と同じように、`'signcolumn'`と`'foldcolumn'`の表示を最後のテキスト行までに変更しました。コマンドラインウィンドウリーダー(`:h c_CTRL-F`, `:h cmdwin-char`)も同様です。
* [8.1.1071](https://github.com/vim/vim/commit/2912abb3a2fd72074e3901c8ae1d4a77ce764675): :four_leaf_clover:`screenchars()`と`screenstring()`を追加しました。`screenchars()`はスクリーン上の位置の文字を数値のリストで返します。`screenstring()`はスクリーン上の位置の文字列を返します。どちらの関数も合成文字が続く場合はその情報も含みます。
* [8.1.1068](https://github.com/vim/vim/commit/fd133323d4e1cc9c0e61c0ce357df4d36ea148e3): :four_leaf_clover:`complete_info()`を追加しました。現在のインサートモード補完の情報を返します。
* [8.1.1067](https://github.com/vim/vim/commit/723d165c2fcd9f94af4e8719feda3b70c8f46868): :four_leaf_clover:GitHubのIssueテンプレート(バグレポート、機能要望)を設定しました。issueを立てやすくなったのではないでしょうか？ (関連patch: [8.1.1070](https://github.com/vim/vim/commit/e46736b23b7cc25b914415fe4ceb851504f5419c))
* [8.1.1066](https://github.com/vim/vim/commit/89828e9fe6de4d70e0e2ccd3c711bd26632c26a9): :four_leaf_clover:Windows: VIMDLLサポートを削除しました。
* [8.1.1061](https://github.com/vim/vim/commit/0e97b9487571cf725a9cb28fe4dcefc800415f69): 置換え(`:substitute`)でエラーをthrowしても常に置換えがおこなわれる件を修正しました。
* [8.1.1056](https://github.com/vim/vim/commit/e99be0e6d28fad96efd2b2be23fa38e7559e80e1): :four_leaf_clover:if_ruby: `rubyeval()`を追加しました。Rubyの式 {expr} を評価して、結果をVimのデータ形式にして返します。(何で今までなかったんだろう。)
* [8.1.1049](https://github.com/vim/vim/commit/a84a3dd6635fcd2e07f510cba6a999585dcc381a): バッファが変更されていない場合のCTRL-C押下時のメッセージを分かりやすい文言に変更しました。(関連patch: [8.1.1052](https://github.com/vim/vim/commit/553e5a5c568e7d175b65b0472cd6d9843b25f4c8), [8.1.1053](https://github.com/vim/vim/commit/d6c3f1fa2b5e1dd7dc87cf608d72b84ad696b58f))
* [runtimeファイル更新](https://github.com/vim/vim/commit/63b74a8362b14576b21d342dc424d0396ca8ea27): [Todo](https://github.com/vim/vim/commit/63b74a8362b14576b21d342dc424d0396ca8ea27#diff-38d7929bd26d74d92ceddf984bbfc8db)更新。helpファイル更新。他。
* [8.1.1045](https://github.com/vim/vim/commit/63dbfd33c1d47400c62775842b5b750ee69e2383): if_python: hiddenなバッファでエラー'E315'が発生することがある件を修正しました。(関連patch: [8.1.1074](https://github.com/vim/vim/commit/bfd36036700ab2d4c9de48e37f222f4a4dd7b3b0))
* [8.1.1044](https://github.com/vim/vim/commit/c3e92c161d6394d126a334011526c02e8c3f655f): :four_leaf_clover::alien:`test_refcount()`を追加しました。オブジェクトの参照カウント値を取得します。テスト用。
* [8.1.1043](https://github.com/vim/vim/commit/b78286903300477bb8578a47b8170b4551e290c8): :four_leaf_clover:if_lua: Blobをサポートしました。(関連patch: [8.1.0735](https://github.com/vim/vim/commit/6e5ea8d2a995b32bbc5972edc4f827b959f2702f))
* [8.1.1040](https://github.com/vim/vim/commit/b99abaa480a7dd983ee4998c5cfdeb997214dcae): :alien:マクロ定義 FEAT_TAG_ANYWHITE がどのビルドでも有効になることがないので定義および関連コードを削除しました。
* [8.1.1038](https://github.com/vim/vim/commit/dc4fa190e7b9d6ba49416ce875d2192c4444d3eb): :four_leaf_clover:ペルシア語サポートをアラビア語サポートに追加しました。(関連patch: [8.1.0932](https://github.com/vim/vim/commit/14184a3133b9a6ee5f711d493c04e41ba4fa7c2f))
* [8.1.1035](https://github.com/vim/vim/commit/0a2f578e22de7e4d82075578afdd5fc2d2dd8134): :four_leaf_clover:`prop_remove()`の第2引数{lnum}を省略可能にしました。
* [8.1.1034](https://github.com/vim/vim/commit/2ace1bd652211506b60faddb8243e48400c89492): :alien:マクロ定義 FEAT_MOUSE_SGR を FEAT_MOUSE_XTERM, FEAT_MOUSE_TTY に統合しました。
* [8.1.1029](https://github.com/vim/vim/commit/60ebd524cf7a27c936cb34395cda9a7cc23abeae): Windows: DirectWriteの描画が`'linespace'`を考慮に入れていない件を修正しました。
* [8.1.1019](https://github.com/vim/vim/commit/4eefe47ea4b6bf958617e924f52bc7a409cfb0ed): if_lua: 使用中の関数参照をガベージコレクトする場合があるのを修正しました。
* [8.1.1017](https://github.com/vim/vim/commit/493fbe4abee660d30b4f2aef87b754b0a720213c): ファイルタイプの検出で最終行のチェックがおこなわれないため検出に失敗することがあるのを修正しました。
* [runtimeファイル更新](https://github.com/vim/vim/commit/26967617a30e55aedc98b8f14b841d88469abd0e): [Todo](https://github.com/vim/vim/commit/26967617a30e55aedc98b8f14b841d88469abd0e#diff-38d7929bd26d74d92ceddf984bbfc8db)更新。helpファイル更新。他。
* [8.1.1016](https://github.com/vim/vim/commit/049ca59236d5a981f23cf5dfe40f54536fe7cad2): Windows: `'guioptions'`に`!`が含まれている時に、端末ウィンドウがカラー出力されない件を修正しました。
* [8.1.1015](https://github.com/vim/vim/commit/647e24ba3dbf7ff448aa471b1a659a18267ae056): :four_leaf_clover:`getqflist()`の引数{what}のエントリと戻り値の辞書のエントリに`qfbufnr`を追加しました。quickfixウィンドウに表示されているバッファの番号を指定または返します。
* [8.1.1012](https://github.com/vim/vim/commit/ab89d7ab89a1dd7e40cc28df96c71c11b5ab9089): エラー`E461`発生時にメモリリークが発生しているのを修正しました。
* [8.1.1011](https://github.com/vim/vim/commit/2ba4238818ca5ea52334de3037ef3729584cebf5): `'autoindent'`によるインデントがおこなわれた行で改行のみを入力してもインデントが削除されない件を修正しました。
* [8.1.1010](https://github.com/vim/vim/commit/713bf9e996d8c9a2cc5003ee0c95f12055756ae5): if_lua: メモリリークがあったのを修正しました。
* [8.1.1007](https://github.com/vim/vim/commit/209b8e3e3bf7a4a3d102134124120f6c7f57d560): :four_leaf_clover:関数呼び出しの後処理で、未参照の "l:", "a:", "a:000" を個別に解放するようにしました。これにより、(関数呼び出しをしている)ループ中のメモリ使用量が大幅に削減されます。(関連patch: [8.1.1027](https://github.com/vim/vim/commit/08cda65ddfbb4bce8cef43726a0c00817fc47327), [8.1.1031](https://github.com/vim/vim/commit/f7e47af7760fe054cb645dac9a1e96b23c85804d), [8.1.1037](https://github.com/vim/vim/commit/6b6f7aae4a3329d685e512699287605540257b40), [8.1.1058](https://github.com/vim/vim/commit/3a731ee0c2dd34792c1b21fc4c699a84129f1b86))
* [8.1.1003](https://github.com/vim/vim/commit/6edbbd8114320089c0e603e033775d9dd34cb10a): `q`(`:h complex-repeat`)の記録に`<Esc>`キーが含まれていると、`@`で再生時にキーコードとして誤認識することがある件を修正しました。(関連patch: [8.1.1005](https://github.com/vim/vim/commit/55d81cd2a15d93dba89b2ff1c988d82789919b6b))
* [8.1.1002](https://github.com/vim/vim/commit/cbef8e1aa1f260ffde16491b1678eae53a36cf68): `gf`がポート番号指定ありのURLを認識出来なかった件を修正しました。
* [8.1.1001](https://github.com/vim/vim/commit/8156ed37558231a8167a1a61a147713d84c9af59): `'cursorline'`設定時、Visualモードでのハイライトが残る場合がある件を修正しました。
* [8.1.0999](https://github.com/vim/vim/commit/9d7fdd403a3a9ee0d008b6dcbcd2ecc9ec0f57b7): 削除されたテキストをレジスタ1およびシフト番号レジスタに入れる条件がVi互換になっていなかったのを修正しました。(`de`がレジスタ1を更新しなくなった)
* [8.1.0998](https://github.com/vim/vim/commit/19a66858a5e3fedadc371321834507c34e2dfb18): `getcurpos()`が不意に "curswant" を変更してしまう件を修正しました。
* [8.1.0997](https://github.com/vim/vim/commit/d5a5886ce90a30efc830b0053472735c5bbb4b0f): Windows: vim.exe で`'termguicolors'`がオフの場合でも、GUIカラーを使用している件を修正しました。
* [8.1.0996](https://github.com/vim/vim/commit/6bb8c66c8ba9adca79c79797a587dc1fd939a784): いくつかの画面ダンプ(`:h terminal-diff`)のテストがスクロールのせいで失敗する件を修正しました。
* [8.1.0994](https://github.com/vim/vim/commit/8fcb60f961bdd134599fb016c6537fd496e800f5): :four_leaf_clover:相対カーソル位置が正しく計算されないのを修正しました。`getwininfo()`が返すリストの辞書のエントリに`topline`と`botline`を追加しました。
* [8.1.0993](https://github.com/vim/vim/commit/772153f8d85c83e08427d93460a676d7f079f002): jobの出力が`NL`終端していない場合、`close_cb`内の`ch_read()`がゴミを返すことがある件を修正しました。
* [8.1.0992](https://github.com/vim/vim/commit/cce713ddcc0c9ab29926c28e287cbb587a959b08): `:normal`コマンドが`reg_executing()`の結果をリセットしてしまう件を修正しました。(関連patch: [8.1.0995](https://github.com/vim/vim/commit/f0fab3046c2b5c4115979347464a802853011220), [8.1.1077](https://github.com/vim/vim/commit/9a2c091a748b380efafe60583698c9afcaab1e46))
* [8.1.0990](https://github.com/vim/vim/commit/e21c1580b7acb598a6e3c38565434fe5d0e2ad7a): 複合代入演算子`%=`と`/=`の右辺に0を指定するとクラッシュする件を修正しました。(関連patch: [8.1.0902](https://github.com/vim/vim/commit/ff697e6cef8ced7717a21fd525ab3200b2f1724f))
* [8.1.0988](https://github.com/vim/vim/commit/d82a81cad93708a6c180e59119db4818cc38c1a9): locationリストの対象バッファを削除すると、locationリストウィンドウの機能が損なわれる件を修正しました。

---
#### 凡例

|表記|意味|
|:------|:------|
|:four_leaf_clover:|新機能、大幅な仕様変更|
|:alien:|Vim開発者向けの追加、変更|
|`'hoge'`|オプション (`:h options`参照)|
|`:hoge`|Exコマンド (`:h :index`参照)|
|`hoge()`|組み込み関数 (`:h functions`参照)|
|`v:hoge`|Vim定義済変数 (`:h v:`参照)|
|`+hoge`|feature (`:h +feature-list`参照)|

---
#### 方針
[こちら](http://qiita.com/h_east/items/23cd0d10932505072e6b#%E6%96%B9%E9%87%9D)を参照。