You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KDE Kate中配置Tinymist LSP解决跨文件标签报错?

解决Kate中Tinymist LSP处理Typst子文件引用错误的问题

问题场景

在KDE Kate里编辑Typst文件时,切换标签页会导致Tinymist LSP的上下文跟着切换。编译主文件main.typ时所有引用都正常,但编辑被包含的子文件(比如chapter1.typ)时,LSP会弹出[typst] label <labelnamehere> does not exist in the document的错误提示。已知Tinymist可以通过运行pinMain函数固定主文件上下文来解决这个问题,下面是具体的实现方法。

最小示例

main.typ

= Chapter from main
Text in `main` @adams95guide
#include "chapter1.typ"
#bibliography("bibliography.bib")

chapter1.typ

Text in included file. @munroe14whatif
// lsp error: "[typst] label <labelnamehere> does not exist in the document"

bibliography.bib

@book{munroe14whatif,
    title = {What If? Serious Scientific Answers to Absurd Hypothetical Questions},
    author = {Munroe, Randall},
    year = 2014
}

@book{adams95guide,
    author = {Adams, Douglas},
    title = {The Hitchhiker's Guide to the Galaxy},
    year = 1995
}

编译main.typ时所有引用均正常:
编译main.typ时所有引用正常

Kate默认Typst LSP配置

{
  "typst": {
    "command": [
      "tinymist"
    ],
    "path": [
      "~/.cargo/bin"
    ],
    "root": ".",
    "url": "https://github.com/Myriad-Dreamin/tinymist",
    "highlightingModeRegex": "^Typst$"
  }
}

解决办法

一、修改Kate配置自动触发pinMain

Tinymist支持通过启动参数或LSP请求固定主文件,下面两种方式都能实现自动处理:

  1. 给Tinymist添加启动参数
    直接修改Kate的LSP配置文件(通常位于~/.config/kate/lspclient/servers/typst.json),让Tinymist启动时就固定主文件。把command字段改成带--pin-main参数的形式:

    {
      "typst": {
        "command": [
          "tinymist",
          "--pin-main", "./main.typ"
        ],
        "path": [
          "~/.cargo/bin"
        ],
        "root": ".",
        "highlightingModeRegex": "^Typst$"
      }
    }
    

    注意:如果你的Tinymist版本不支持--pin-main参数,就用下面的快捷键方式。

  2. 设置快捷键一键发送pinMain请求
    给Kate添加快捷键,打开子文件后按一下就能切换到主文件上下文:

    • 打开Kate的「设置」→「配置Kate」→「快捷键」,搜索「Send LSP Request」
    • 新建快捷键,将请求内容改为:
      {"jsonrpc":"2.0","id":1,"method":"typst/pinMain","params":{"uri":"file:///你的main.typ绝对路径"}}
      
    • 替换路径后保存,以后打开子文件时按下该快捷键,LSP就会以主文件为上下文进行分析,引用错误会自动消失。

二、手动和LSP服务器交互

如果不想修改配置,也可以手动给运行中的Tinymist发送请求:

  1. 用Kate内置的LSP通信窗口发送请求

    • 打开Kate的「工具」→「LSP客户端」→「显示LSP通信」,就能看到当前和Tinymist的会话内容
    • 在窗口中输入以下请求内容并发送:
      {"jsonrpc":"2.0","id":1,"method":"typst/pinMain","params":{"uri":"file:///你的main.typ绝对路径"}}
      

    发送成功后,子文件中的引用错误提示会立刻消失。

  2. 终端进程交互(可选)
    先通过终端命令找到Tinymist的进程ID:

    ps aux | grep tinymist
    

    然后通过进程的标准输入发送请求,但这种方式操作繁琐,一般用Kate内置的通信窗口就足够了。

内容的提问来源于stack exchange,提问作者Uwe Krause

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:57:38