Read OSS

neovim/neovim

6 articles

前提知識

01

Neovim のアーキテクチャ:コードベースの全体地図

libuv イベントループを基盤とするクライアント・サーバー型エディタとしての Neovim のアーキテクチャ、コード生成パイプライン、Lua ランタイム層を包括的に解説します。

02

Neovimの心臓部:イベントループとステートマシン

VimのSync的なキー読み取りループを、モーダルなステートマシンを維持しながらいかに非同期対応のイベント駆動アーキテクチャへと変換したかを解説します。

03

NeovimのAPI:RPC、コード生成、UIプロトコル

NeovimのAPI関数が特殊なアノテーション付きのC言語で一度だけ定義され、RPCディスパッチテーブル・Luaバインディング・イントロスペクション可能なメタデータを自動生成する仕組みを解説します。

04

C と Lua をつなぐ:Neovim の Lua ランタイムアーキテクチャ

C-Lua ブリッジから vim.* 名前空間、遅延ロードシステムまで、Lua が Neovim にファーストクラスのスクリプトレイヤーとして組み込まれる仕組みを解説します。

05

バッファからスクリーンへ:Neovimのレンダリングパイプラインとデコレーションシステム

テキストがバッファに保存されてからマークツリー、デコレーションシステム、三層構造のレンダリングパイプラインを経て、スクリーンやリモートUIに表示されるまでの流れを解説します。

06

Lua エコシステム:LSP、Treesitter、そして Diagnostics

Neovim の主要な Lua 機能である LSP クライアント、Treesitter インテグレーション、Diagnostics フレームワークの三つを取り上げ、それぞれの仕組みと C コアとの連携方法を解説します。