Meguro.vim #34 を開催しました

この記事は Vim 駅伝の 477 本目の記事です。

Meguro.vim #34 を開催しました。

当日の様子

ランチは#30 ぶりにニュービストロガブリ 目黒店へ行きました。8 人で参加。私は少し遅れての到着になってしまいました。

ビストロガブリのランチ

今回の参加人数は 12 人でした。初参加の方も何人かいました。嬉しいですね。

今回も皆さん各々思い思いの作業をしつつ、あちこちで交流が発生していたように思います。PHP や Rust などの勉強をしている人がいたり、個人設定ファイルの整理をしている人がいたり、AI でアプリを作っている人がいたり、開業届を出している人がいたりしました。

私は主に Vim 本体へのパッチを作って(AI に作らせて)いました。 まずやっていたのは、Vim9 script における辞書メンバーに対しての関数定義です。 Vim9 script では以下の文法は許可されていません。

vim9script
const dict = {}
def dict.Func()
enddef

これは legacy Vim script においては辞書関数という機能で、関数内で self の参照ができたりと色々特殊だったのですが、Vim9 script においては同様のことは class でやるべき、となっており、辞書関数機能は廃止されていました。 しかし、辞書関数でなくても、無名関数を辞書に直接代入できるだけでも有用なはずです。

vim9script
const opts = {}
def opts.out_cb(ch, msg)
  # ...
enddef
const job = job_start(['bin/sh', '-c', 'echo hello'], opts)

というわけでこれをできるようにするパッチと、辞書関数廃止という歴史があるので理論武装をさせていました。

と、いう作業をしていたら Vim がクラッシュするバグを発見してしまい、そちらの再現条件の調査および修正をやって(AI にやらせて)いました。 色々調査した結果最小の再現方法まで辿り着けました。当日の作業時点の Vim 9.2.0161 で、以下の条件でクラッシュします。

" minimum_vimrc
set tabline=xxx showtabline=1
set showtabpanel=1
call feedkeys(":q\<CR>")  " これは手動でやってもよい
$ vim -u minimum_vimrc -p a.txt b.txt

タブパネル関連のバグでした。修正パッチも作ってあるので、後ほどまとめて PR する予定です。

夜は今回は 6 人でインド&ネパール バル ラクシュミーへ行きカレーなどを食べました。いつもはガラガラで少し心配になるくらいですが、今回は結構人が入っていて賑わっていました。

ラクシュミーのチキンボディカバブ

次回

次回は 2026 年 5 月 23 日に開催予定です。

megurovim.connpass.com

次回もよろしくお願いします。