Development¶
This page is for contributors and maintainers working on the tcl-ls
codebase itself.
Repository Layout¶
The repository is organized into a few core areas:
src/tcl_lsp/parserfor the handwritten Tcl parser and AST modelsrc/tcl_lsp/analysisfor fact extraction, resolution, diagnostics, and metadata effectssrc/tcl_lsp/lspfor the pygls-based language server surfacemeta/for bundled Tcl and Tcllib metadatatests/for parser, analysis, checker, and LSP coveragedocs/for the Sphinx documentation site
Common Local Commands¶
Set up and run the usual development workflow with:
uv sync
make test
make check
make docs
Useful one-off commands:
uv run pytest tests/lsp/test_lsp.py
uv run tcl-check path/to/project
uv build
make check-tcllib
make generate-builtins
make pyinstaller-tcl-ls-smoke
make test clones tcllib into .cache/ on first use so integration
tests can run against a realistic package tree.
Packaging And Release Validation¶
The Python package and frozen server builds are part of the normal maintenance surface:
uv buildwrites the source distribution and wheel underdist/uvx twine check dist/*.whl dist/*.tar.gzvalidates the built package metadata before uploadmake pyinstaller-tcl-ls-smokebuilds the frozen server and validates a real LSP initialize/shutdown/exit handshakeGitHub release workflows build packaged server archives and bundled VS Code extensions for Linux, macOS, and Windows
Before a release, verify that the package metadata in pyproject.toml,
install instructions in README.md / docs/, and release notes in
CHANGELOG.md are all current.
Current Scope¶
The project is already a working typed bootstrap, but it is intentionally conservative:
the parser covers the tested core Tcl forms rather than the full language
semantic analysis focuses on statically knowable behavior
builtin metadata is strong for core Tcl, but extension ecosystems still need expansion
editor support is centered on diagnostics, navigation, completion, and semantic tokens
Areas that still need more work include richer Tcl semantics, broader metadata coverage, automatic workspace discovery, and additional editor features such as formatting and code actions.
Documentation Maintenance¶
Documentation is part of the normal quality bar:
make docsbuilds the HTML sitemake checktreats Sphinx warnings as errorsuser-facing behavior changes should update the relevant page under
docs/
The more detailed engineering backlog and implementation notes still live in
STATUS.md.