Summary
Currently, IDE support is limited to a specific VS Code extension. To support the broader developer ecosystem (Neovim, IntelliJ, Sublime Text, Zed, etc.), we should extract the linting logic into a standard Language Server Protocol (LSP) server.
Problem
- Maintaining a specific VS Code extension couples the tool to one editor.
- Users of other editors have to rely on the CLI, missing out on real-time "squiggles" and feedback.
Proposed Solution
Create a new package @archctl/language-server.
Key Capabilities
- Standard LSP Features:
textDocument/publishDiagnostics: Show errors/warnings on imports.
textDocument/hover: Show layer/context info when hovering a file header.
textDocument/codeAction: Provide "Quick Fixes" (see Auto-Fix feature).
- Editor Agnostic: The core logic handles the analysis, and any LSP-compliant client can consume it.
Implementation Plan
- Refactor
vscode-extension code to separate VS Code specifics from the analysis logic.
- Use
vscode-languageserver-node to implement the server.
- Update the VS Code extension to simply be a client for this new server.
- Publish instructions for configuring Neovim (
nvim-lspconfig) and other editors.
Summary
Currently, IDE support is limited to a specific VS Code extension. To support the broader developer ecosystem (Neovim, IntelliJ, Sublime Text, Zed, etc.), we should extract the linting logic into a standard Language Server Protocol (LSP) server.
Problem
Proposed Solution
Create a new package
@archctl/language-server.Key Capabilities
textDocument/publishDiagnostics: Show errors/warnings on imports.textDocument/hover: Show layer/context info when hovering a file header.textDocument/codeAction: Provide "Quick Fixes" (see Auto-Fix feature).Implementation Plan
vscode-extensioncode to separate VS Code specifics from the analysis logic.vscode-languageserver-nodeto implement the server.nvim-lspconfig) and other editors.