Skip to content

bird-chinese-community/BIRD-LSP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

766 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ•Š BIRD2 LSP Project

Modern Language Server Protocol support for BIRD2 configuration files

VS Marketplace Version Open VSX Version TypeScript npm

License License License

⚠️ Development Stage Notice

Component Status Warning
npm packages (@birdcc/*) 🚧 Alpha APIs may change frequently. Evaluate carefully before production use.
VS Code extension πŸ§ͺ Beta More stable than Alpha, but some features may still change. Evaluate before production use.

Please evaluate carefully before deploying in production environments.

English Version | δΈ­ζ–‡ζ–‡ζ‘£

Overview Β· Features Β· Quick Start Β· Packages Β· Architecture Β· Development


Overview

BIRD-LSP is a modern toolchain for BIRD2 (and BIRD3) configuration files, providing Language Server Protocol (LSP) support, code formatting (Formatter & Parser), and static analysis (Linter).


Features

Feature Description
🎨 Syntax Highlighting Tree-sitter based precise parsing
πŸ” Real-time Diagnostics 32+ lint rules + cross-file analysis + bird -p validation
πŸ“ Code Formatting Dual-engine formatter (dprint + builtin) with safe mode
πŸ’‘ IntelliSense Smart completion for protocols, filters, functions
πŸ”Ž Hover Information Type info and documentation on hover
πŸ—οΈ Symbol Navigation Go to definition, find references (cross-file)

Quick Start

Install CLI

npm install -g @birdcc/cli
# or
pnpm add -g @birdcc/cli

Usage

# Lint a BIRD config file
birdcc lint bird.conf

# Format a file
birdcc fmt bird.conf --write

# Start LSP server
birdcc lsp --stdio

VS Code Extension

Search for "BIRD2 LSP" in VS Code Marketplace or install from Open VSX.


Packages

Package Version Description Documentation
@birdcc/parser 0.1.0-alpha Tree-sitter parser for BIRD2 README
@birdcc/core 0.1.0-alpha Semantic analysis engine README
@birdcc/linter 0.1.0-alpha Pluggable lint rule system README
@birdcc/lsp 0.1.0-alpha LSP server implementation README
@birdcc/formatter 0.1.0-alpha Dual-engine code formatter README
@birdcc/cli 0.1.0-alpha Command-line interface README
@birdcc/vscode 0.1.0-alpha VS Code extension README
@birdcc/dprint-plugin-bird 0.1.0-alpha dprint plugin (Rust/WASM) README

Architecture

Component Interaction

sequenceDiagram
    autonumber
    participant Editor as Editor (VSCode/Neovim)
    participant LSP as "@birdcc/lsp"
    participant Linter as "@birdcc/linter"
    participant Formatter as "@birdcc/formatter"
    participant Parser as "@birdcc/parser"
    participant Core as "@birdcc/core"

    rect rgb(225, 245, 254)
        Note over Editor,Core: Real-time Diagnostics Flow
        Editor->>+LSP: textDocument/didChange
        LSP->>+Parser: parseBirdConfig(source)
        Parser-->>-LSP: ParsedBirdDocument
        LSP->>+Core: buildCoreSnapshot(parsed)
        Core-->>-LSP: CoreSnapshot
        LSP->>+Linter: lintBirdConfig(context)
        Linter-->>-LSP: Diagnostics[]
        LSP-->>-Editor: textDocument/publishDiagnostics
    end

    rect rgb(255, 243, 224)
        Note over Editor,Core: Formatting Flow
        Editor->>+LSP: textDocument/formatting
        LSP->>+Formatter: formatBirdConfig(source)
        Formatter->>+Parser: parseBirdConfig(source)
        Parser-->>-Formatter: AST
        Formatter-->>-LSP: Formatted Text
        LSP-->>-Editor: TextEdit[]
    end
Loading

Package Dependency Graph

flowchart BT
    classDef infra fill:#fce4ec,stroke:#ad1457,stroke-width:2px,color:#000
    classDef core fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px,color:#000
    classDef service fill:#fff3e0,stroke:#ef6c00,stroke-width:2px,color:#000
    classDef lsp fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#000
    classDef user fill:#e3f2fd,stroke:#1565c0,stroke-width:2px,color:#000

    subgraph Infrastructure [Infrastructure Layer]
        PARSER("@birdcc/parser<br/>Tree-sitter/WASM")
        DPRINT("@birdcc/dprint-plugin-bird<br/>πŸ¦€ Rust")
    end

    subgraph CoreLayer [Core Layer]
        CORE("@birdcc/core<br/>Symbol Table & Type System")
    end

    subgraph ServiceLayer [Service Layer]
        FORMATTER("@birdcc/formatter<br/>Formatting Engine")
        LINTER("@birdcc/linter<br/>Config Static Analysis Engine")
    end

    subgraph LspLayer [LSP Adapter Layer]
        LSP_SERVER("@birdcc/lsp<br/>Language Server Protocol")
    end

    subgraph UserLayer [User Interface Layer]
        CLI("@birdcc/cli<br/>Command Line")
        VSCODE("@birdcc/vscode<br/>Editor Extension")
    end


    %% Infrastructure supports Formatter (Dprint as underlying engine)
    PARSER <--> DPRINT
    PARSER <--> CORE

    CORE --> FORMATTER
    DPRINT --> FORMATTER

    %% Core and Formatter support Linter
    CORE --> LINTER
    FORMATTER --> LINTER

    %% All services support LSP
    FORMATTER --> LSP_SERVER
    LINTER --> LSP_SERVER

    %% LSP and standalone services support user interfaces
    LSP_SERVER --> CLI
    LSP_SERVER --> VSCODE
    LINTER --> CLI
    FORMATTER --> CLI

    class PARSER,DPRINT infra
    class CORE core
    class FORMATTER,LINTER service
    class LSP_SERVER lsp
    class CLI,VSCODE user
Loading

Development

# Clone with submodules
git clone --recursive https://github.com/bird-chinese-community/BIRD-LSP.git
cd BIRD-LSP

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Run tests
pnpm test

πŸ“– Documentation


πŸ“ License

This project is licensed under the GPL-3.0 License.


πŸ™ Acknowledgements

We gratefully acknowledge these upstream repositories for the real-world BIRD configuration examples that help validate parsing, formatting, linting, and editor support in this project:


Built with ❀️ by the BIRD Chinese Community (BIRDCC)

πŸ•Š GitHub Β· πŸ›’ Marketplace Β· πŸ› Report Issues