You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace the current hand-rolled C#-specific generator model with a neutral API model and open-ended emitter abstraction.
Motivation
The generator should model Neovim RPC/API semantics, not C# method declarations. This enables cleaner C# emission, future F# emission, better type mapping, and better generated documentation.
Scope
Introduce a neutral generator model:
API functions
API parameters
API types
API events
documentation
version/deprecation metadata
request/response specs
encoder/decoder specs
Introduce emitter abstraction:
IApiEmitter
GeneratedFile
GeneratedFileSet
Move C#-specific concerns into a C# emitter that uses Roslyn to build the AST.
Avoid Roslyn leaking into the neutral model.
Preserve current generated output shape as much as practical for the first pass.
Move the generator to a separate library from the CLI tool. The internals stand on their own and shouldn't be tightly-coupled to it exposing a cli tool.
Replace the current hand-rolled C#-specific generator model with a neutral API model and open-ended emitter abstraction.
Motivation
The generator should model Neovim RPC/API semantics, not C# method declarations. This enables cleaner C# emission, future F# emission, better type mapping, and better generated documentation.
Scope
IApiEmitterGeneratedFileGeneratedFileSetOut of scope
Acceptance criteria
Blocked by
Architecture
flowchart TB subgraph Core["Nvim.Client.Generator"] direction TB Ingest["Neovim API ingestion"] Model["Neutral API model"] Emit["Emitter abstraction"] CSharp["C# emitter using Roslyn"] Future["Future emitters"] Ingest --> Model Model --> Emit Emit --> CSharp Emit -.-> Future end subgraph CLI["Nvim.Client.Generator.Cli"] direction TB Args["Parse command/options"] Wire["Wire inputs to generator core"] Write["Write generated files"] Diagnostics["Return diagnostics/exit code"] Args --> Wire Wire --> Core Core --> Write Write --> Diagnostics end