Files
tia-lsp.nvim/AGENTS.md
T
2026-02-14 15:05:12 +01:00

2.5 KiB

AGENTS.md - SCL Language Server (Unified)

This is a unified Neovim/LazyVim plugin for Siemens SCL language support.

Project Overview

The unified scl_lsp project provides:

  • LSP Server - Language Server Protocol implementation
  • Linter - Diagnostics and code validation
  • Formatter - Document formatting
  • Syntax Highlighting - Tree-sitter based
  • Auto-completion - blink.cmp integration
  • Auto-prefix - Automatic # prefixing for variables

Project Structure

scl_lsp/
├── src/                        # LSP server implementation
│   ├── main.lua               # Entry point, protocol handling
│   ├── parser.lua             # Regex-based SCL parser
│   ├── treesitter.lua        # Tree-sitter integration
│   ├── diagnostics.lua       # Linter diagnostics
│   ├── formatter.lua         # Document formatter
│   ├── json.lua              # JSON encoder/decoder
│   └── plc_json.lua          # External UDT loading
├── lua/
│   ├── scl/                  # Neovim plugin modules (from scl_syntax_nvim)
│   │   ├── init.lua
│   │   ├── auto_prefix.lua
│   │   ├── blink_cmp_source.lua
│   │   ├── fb_parser.lua
│   │   ├── udt_parser.lua
│   │   ├── variables.lua
│   │   └── workspace_types.lua
│   └── scl_lsp/
│       ├── init.lua          # Unified plugin setup
│       └── plugins/
│           └── scl.lua       # LazyVim plugin spec
├── queries/                  # Tree-sitter queries
│   ├── highlights.scm
│   ├── indents.scm
│   ├── folds.scm
│   ├── locals.scm
│   └── tags.scm
├── grammar.js                # Tree-sitter grammar
└── tree-sitter.json         # Parser config

Development

Running the LSP Server

# Direct execution
lua src/main.lua

# Via shell script
./scl_lsp.sh

# With test mode
lua src/main.lua --test

Testing

# Tree-sitter parser
npm test
tree-sitter generate

# Test file parsing
tree-sitter parse corpus/test/main_org_block.scl

Key Patterns

  • LSP Protocol: JSON-RPC over stdin/stdout in src/main.lua
  • Diagnostics: src/diagnostics.lua - validates SCL code
  • Formatter: src/formatter.lua - formats SCL documents
  • Syntax: Tree-sitter queries in queries/
  • Plugin Setup: lua/scl_lsp/init.lua - LazyVim integration

Configuration

See README.md for configuration options and usage.