Myriad-Dreamin/tinymist

GitHub: Myriad-Dreamin/tinymist

Tinymist 是一个为 Typst 排版语言提供完整语言服务、实时预览与多格式导出的集成开发环境。

Stars: 3307 | Forks: 165

# Tinymist [GitHub license](https://github.com/Myriad-Dreamin/tinymist/blob/main/LICENSE)[Actions status](https://github.com/Myriad-Dreamin/tinymist/actions/workflows/ci.yml)[Documentation](https://myriad-dreamin.github.io/tinymist/)[Ask DeepWiki](https://deepwiki.com/Myriad-Dreamin/tinymist) Tinymist \[ˈtaɪni mɪst\] 是一个为 [Typst](https://typst.app/) \[taɪpst\] 提供的集成语言服务。在中文里,你也可以叫它wēiǎi。 它包含: - 一个用于 Typst 的分析库,见 [tinymist-query](/crates/tinymist-query/)。 - 一个用于 Typst 的 CLI,见 [tinymist](/crates/tinymist/)。 - 其中提供了一个用于 Typst 的语言服务器,见 [语言特性](https://myriad-dreamin.github.io/tinymist/feature/language.html)。 - 其中提供了一个用于 Typst 的预览服务器,见 [预览功能](https://myriad-dreamin.github.io/tinymist/feature/preview.html)。 - 一个用于 Typst 的 VSCode 扩展,见 [Tinymist VSCode 扩展](/editors/vscode/)。 ## 功能 语言服务 (LSP) 功能: - [语义高亮](https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide) - “语义高亮”是对[“语法高亮”](https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide)的补充。 - [代码操作](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#provide-code-actions) - 也称为“快速修复”或“重构”。 - [格式化(重新格式化)](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#format-source-code-in-an-editor) - 使用 [typstfmt](https://github.com/astrale-sharp/typstfmt) 或 [typstyle](https://github.com/Enter-tainer/typstyle) 为用户提供格式化整个文档的支持。 - [文档高亮](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#highlight-all-occurrences-of-a-symbol-in-a-document) - 高亮循环上下文中的所有断点。 - (待办) 高亮函数上下文中的所有退出点。 - (待办) 高亮闭包上下文中的所有捕获。 - (待办) 高亮文档中某个符号的所有出现位置。 - [文档链接](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_documentLink) - 渲染文档中的路径或链接引用,例如 `image("path.png")` 或 `bibliography(style: "path.csl")`。 - [文档符号](https://code.visualstudio.com/docs/getstarted/userinterface#_outline-view) - 也称为“文档大纲”或“目录”(_在 Typst 中_)。 - [折叠范围](https://burkeholland.gitbook.io/vs-code-can-do-that/exercise-3-navigation-and-refactoring/folding-sections) - 你可以折叠代码/内容块和标题。 - [转到定义](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#show-definitions-of-a-symbol) - 右键点击一个符号并选择“转到定义”。 - 或者按 ctrl+点击一个符号。 - [引用](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#find-all-references-to-a-symbol) - 右键点击一个符号并选择“转到引用”或“查找引用”。 - 或者按 ctrl+点击一个符号。 - [悬停提示](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#show-hovers) - 也称为“悬停提示框”。 - 根据 [tidy](https://github.com/Mc-Zen/tidy) 风格渲染文档。 - [内联提示](https://www.jetbrains.com/help/idea/inlay-hints.html) - 内联提示是出现在编辑器中的特殊标记,可为你提供有关代码的附加信息,例如所调用方法期望的参数名称。 - [颜色提供器](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#show-color-decorators) - 查看文档中颜色字面量的所有内联彩色标签。 - 通过颜色选择器或其代码表示形式更改颜色字面量的值。 - [Code Lens](https://code.visualstudio.com/blogs/2017/02/12/code-lens-roundup) - 应提供随代码显示的上下文按钮。例如,在文档开头提供一个将文档导出为各种格式的按钮。 - [重命名符号和嵌入路径](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#rename-symbols) - [辅助函数和方法签名](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#help-with-function-and-method-signatures) - [工作区符号](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#show-all-symbol-definitions-in-folder) - [代码操作](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-code-actions) - 增加/减少标题级别。 - 将公式转换为“行内”、“块”或“多行块”样式。 - [experimental/onEnter](https://github.com/rust-lang/rust-analyzer/blob/master/docs/dev/lsp-extensions.md#on-enter) - 在三斜杠注释内按 Enter 会自动插入 `///` - 在 `//` 中间或尾随空格后按 Enter 会插入 `//` - 在 `//!` 文档注释内按 Enter 会自动插入 `//!` - 在公式标记内按 Enter 会自动插入缩进。 额外功能: - 保存时编译为 PDF(可配置为输入时编译或其他选项)。查看 [文档:导出文档](https://myriad-dreamin.github.io/tinymist/feature/export.html)。 - 还可通过命令、VSCode 任务或 Code Lens 编译为 SVG、PNG、HTML、Markdown、文本等格式。 - 提供对文档和模块的测试、基准测试和覆盖率收集。查看 [文档:测试功能](https://myriad-dreamin.github.io/tinymist/feature/testing.html)。 - 提供内置的代码检查。查看 [文档:代码检查功能](https://myriad-dreamin.github.io/tinymist/feature/linting.html)。 - 提供一个状态栏项,用于显示当前文档的编译状态和字数统计。 - [编辑器工具](/tools/editor-tools/): - 在模板库中查看模板列表。(`tinymist.showTemplateGallery`) - 在模板库中点击按钮以使用模板初始化新项目。(`tinymist.initTemplate` 和 `tinymist.initTemplateInPlace`) - 追踪当前文档的执行情况 (`tinymist.profileCurrentFile`)。 ## 版本控制与发布周期 Tinymist 的版本号遵循 [语义化版本](https://semver.org/) 规范,格式为 `MAJOR.MINOR.PATCH`。此外,tinymist 对版本号遵循以下特殊规则: - 如果版本号带有 `-rcN` 后缀 (typst-frame),例如 `0.11.0-rc1` 和 `0.12.1-rc1`,则表示该版本是一个候选发布版本。它用于测试发布脚本和端到端 (E2E) 功能。这些版本不会发布到应用市场。 - 如果 `PATCH` 号为奇数,例如 `0.11.1` 和 `0.12.3`,则表示该版本是一个夜间发布版本。夜间发布版本将同时使用 **main 分支** 上的 [tinymist](https://github.com/Myriad-Dreamin/tinymist/tree/main) 和 [typst](https://github.com/typst/typst/tree/main)。它们将作为预发布版本发布到应用市场。请注意,在夜间发布版本中,我们会将 `#sys.version` 更改为下一个次要版本,以帮助开发具有夜间功能的文档。例如,在 tinymist 夜间版本 v0.12.1 或 v0.12.3 中,`#sys.version` 会被更改为 `version(0, 13, 0)`。 - 否则,如果 `PATCH` 号为偶数,例如 `0.11.0` 和 `0.12.2`,则表示该版本是一个常规发布版本。常规发布版本将始终使用 tinymist 和 typst 的最新稳定版本。 发布周期如下: - 如果 Typst 版本更新,将立即发布一个新的主版本或次版本。这意味着 tinymist 将始终与 typst 的次版本保持对齐。 - 如果本周至少修复了一个 Bug 或添加了一个功能,将发布一个新的修订版本。 ## 安装 按照说明在你喜欢的编辑器中启用 tinymist。 - [VS Cod(e,ium)](https://myriad-dreamin.github.io/tinymist/frontend/vscode.html) - [Neovim](https://myriad-dreamin.github.io/tinymist/frontend/neovim.html) - [Emacs](https://myriad-dreamin.github.io/tinymist/frontend/emacs.html) - [Sublime Text](https://myriad-dreamin.github.io/tinymist/frontend/sublime-text.html) - [Helix](https://myriad-dreamin.github.io/tinymist/frontend/helix.html) - [Zed](https://myriad-dreamin.github.io/tinymist/frontend/zed.html) ## 从 GitHub 安装常规/夜间预构建版本 注意:如果你不知道什么是常规/夜间发布版本,请不要按照本节的说明操作。 除了针对各个编辑器发布的特定版本外,你还可以从 GitHub 下载最新的常规/夜间预构建版本并手动安装。 - 常规预构建版本可以在 [GitHub Releases](https://github.com/Myriad-Dreamin/tinymist/releases) 中找到。 - 夜间预构建版本可以在 [GitHub Actions](https://github.com/Myriad-Dreamin/tinymist/actions) 中找到。 - (建议)使用 [tinymist-nightly-installer](https://github.com/hongjr03/tinymist-nightly-installer) 自动安装夜间预构建版本。 - Unix (Bash): curl -sSL https://github.com/hongjr03/tinymist-nightly-installer/releases/latest/download/run.sh | bash - Windows (PowerShell): iwr https://github.com/hongjr03/tinymist-nightly-installer/releases/latest/download/run.ps1 -UseBasicParsing | iex - 其他修订版本的预构建版本也可以手动找到。例如,如果你正在寻找特定功能 [PR: build: bump version to 0.11.17-rc1](https://github.com/Myriad-Dreamin/tinymist/pull/468) 的夜间发布版本,你可以点击并转到相关提交的 [action 页面](https://github.com/Myriad-Dreamin/tinymist/actions/runs/10120639466) 运行记录并下载构建产物。 要手动安装扩展文件(带有 `.vsix` 后缀的文件),请在编辑器窗口中按下 Ctrl+Shift+X,然后将下载的 vsix 文件拖放到打开的扩展视图中。 ## 文档 请参阅[在线文档](https://myriad-dreamin.github.io/tinymist/)。 ## 打包 稳定版渠道: Packaging status 夜间版渠道: Packaging status ## 路线图 ### 短期计划 为了鼓励社区贡献,我们创建了许多处于草稿状态的 [Pull Requests](https://github.com/Myriad-Dreamin/tinymist/pulls),以便为短期计划提供导航。它们可以为你在这个大型代码库中提供从何处开始着手的提示。 ### 长期计划 我们计划在 typst v0.14.0 或周末的业余时间实现以下功能: - 类型检查:完善类型检查器。 - Periscope 渲染器:由于 VSCode 拒绝渲染包含 foreignObjects 的 SVG,该功能已被禁用。 - 内联提示:由于性能问题,该功能_默认_被禁用。 - 查找字典字段和命名函数参数的引用。 - 改进符号视图的外观。 - 改进包视图。 - 在视图中点击符号名称以导航到相应符号。 - 查看本地文档时,自动在视图中定位对应的符号项。 - 记住最近调用的包命令,例如 “Open Docs of @preview/cetz:0.3.1”、“Open directory of @preview/touying:0.5.3”。 - 改进标签视图。 - 对标签进行分组。 - 搜索标签。 - 保持(持久化)分组偏好。 - 改进 Typst Preview。 - 固定下拉菜单:在不支持向预览命令传递参数的客户端中,通过下拉菜单设置要预览的文件。 - 在 Web Worker(另一个线程)中进行渲染,以减少 Electron 主线程的开销。 - 拼写检查:目前已有相关分支,但尚未找到合适的(默认)拼写检查库。 - [typos](https://github.com/crate-ci/typos) 对 Typst 来说很棒。[harper](https://github.com/Automattic/harper) 看起来也很有前景。 如果你对以上任何功能感兴趣,请随时在 [GitHub](https://github.com/Myriad-Dreamin/tinymist) 上发起 Issues 进行讨论或提交 PR 来实现它们。 ## 赞助 Tinymist 在社区的关爱下蓬勃发展,并保持着引以为傲的独立性。虽然我们不接受直接的项目资金,但我们热烈欢迎大家对我们维护者的个人工作给予支持。请前往[维护者页面](/MAINTAINERS.md)和[贡献者页面](https://github.com/Myriad-Dreamin/tinymist/graphs/contributors),找到他们的个人主页以获取更多信息。也欢迎直接在 [GitHub Issues](https://github.com/Myriad-Dreamin/tinymist/issues/new) 上询问有关赞助的问题。 ## 致谢 - 部分代码继承自 [typst-lsp](https://github.com/nvarner/typst-lsp) - 所[集成](/editors/vscode#symbol-view)的**离线**手写笔迹识别器由 [Detypify](https://detypify.quarticcat.com/) 提供支持。 - 所[集成](/editors/vscode#preview-command)的预览服务由 [typst-preview](https://github.com/Enter-tainer/typst-preview) 提供支持。 - 所[集成](
标签:LSP, SOC Prime, Typst, 代码编辑器扩展, 可视化界面, 开发工具, 语言服务器协议, 通知系统