No description
  • Rust 60.4%
  • Typst 24.1%
  • TypeScript 8.8%
  • JavaScript 6.7%
Find a file
2026-11-04 20:43:07 +08:00
assets feat(core): scaffold ninety static analysis core + LSP session 2026-10-26 23:52:05 +08:00
crates fix(lsp): keep completion available right after a completed call 2026-11-04 20:43:07 +08:00
editors/vscode perf(preview): send overlays immediately and limit automatic scroll to mouse input 2026-11-04 20:43:07 +08:00
tests fix(lsp): resolve hyphenated identifiers and complete wildcard exports 2026-11-04 20:43:07 +08:00
tools/split-suite feat(tyck): sound type lattice passes 780-file zero-diagnostic gate 2026-11-04 20:43:07 +08:00
.gitignore feat(core): scaffold ninety static analysis core + LSP session 2026-10-26 23:52:05 +08:00
Cargo.toml chore: rename project branding to Holotyp 2026-11-04 20:43:07 +08:00
README.md fix: resolve parameter defaults in the defining scope 2026-11-04 20:43:07 +08:00

ninety — static-first Typst language server

Monorepo layout (tinymist-style):

目录 内容
crates/ninety-core 分析内核(typst-syntax + holotyp-manifest-schema,不执行 typst)
crates/ninety-lsp LSP 装配(同步 dispatch、特性实现、测试 harness)
crates/ninety-cli ninety stdio 二进制
editors/vscode VS Code 扩展(LSP + 预览启动)
assets/ 内嵌 stock manifest
tests/corpus/legal 780 语料零诊断验收集
tools/split-suite typst tests/suite 切分器

ninety-core 通过 path 依赖引用同级 holotyp/crates/holotyp-manifest-schema (与 fork 的 typst manifest 共用同一套 HT-0001 类型)。单独 clone 本仓库时需要 这个兄弟检出;发布/CI 可改为指向 holotyp 仓库的 git dependency。

Rename 范围

Rename 基于当前文档的 definition/reference 关系,只编辑同一绑定的声明和引用, 并检查修改前后的绑定关系以拒绝名称捕获。支持局部变量、位置参数、循环变量及函数; 导入绑定和命名参数目前拒绝重命名。尚不支持跨文件联动:重命名被其他文件导入的 顶层定义,不会更新其他文件中的导入项或模块字段访问,请勿将其视为工作区级 rename。

开发

cargo test                # 全部测试(含 780 语料零诊断)
cargo build -p ninety-cli # LSP 二进制 → target/debug/ninety

cd editors/vscode && pnpm install && pnpm run compile
pnpm dlx @vscode/vsce package --no-dependencies

上游 workspace 的 .vscode/settings.json 已把 ninety.serverPath / ninety.previewPath 指向本仓库与 holotyp/ 检出的 debug 二进制。