このプロジェクトは、構造的なコード検索・置換ツールである comby を Neovim からインタラクティブに利用するための Lua 製プラグインです。
ユーザーがビジュアルモードで選択したコード範囲を match テンプレートとして利用し、rewrite テンプレートを入力することで、コードの書き換えをリアルタイムに実行できます。
Combyユーザーコマンド: ビジュアルモードで選択した範囲に対してcombyを実行します。- インタラクティブな入力ウィンドウ:
matchとrewriteのテンプレートを入力するための分割ウィンドウを提供します。 combyコマンドの実行: 内部でcombyコマンドをシェル実行し、結果をバッファに反映させます。
lua/comby.lua: プラグインのメインファイル。:Combyコマンドの定義やcombyの実行ロジックが含まれています。lua/comby/window.lua:match/rewriteテンプレートを入力するためのUI(分割ウィンドウ)を管理するモジュールです。test/: テスト関連のファイルが格納されています。spec/:plenary.nvimとbustedを利用したユニットテスト。Makefile: テストや依存関係のセットアップを行うための makefile。
.github/workflows/integration.yml: GitHub Actions の設定ファイル。CI/CD パイプラインが定義されており、リンターとテストが自動実行されます。.gitmodules: テスト用の依存ライブラリ (plenary.nvimなど) を Git Submodule として管理しています。
開発を開始する前に、テスト用の依存関係をセットアップする必要があります。
# Git Submodule を初期化・更新
git submodule update --init
# luacheck などのテスト依存関係をインストール
make -C ./test prepareこのプロジェクトでは、コードの品質を保つためにリンターとユニットテストが用意されています。
コードの静的解析には luacheck を使用します。
luacheck lua/ test/spec/ユニットテストは plenary.nvim と busted を使って書かれています。
# すべてのテストを実行
make -C ./test test
# 特定のテストファイルのみを実行
make -C ./test test SPEC=spec/comby/my_cool_module_spec.lua