当前位置: 首页
AI教程
VSCode插件开发第6课:LSP协议初始化参数详解

VSCode插件开发第6课:LSP协议初始化参数详解

热心网友 时间:2026-05-30
转载

vscode插件快餐教程(6) - LSP协议的初始化参数

在前面的教程中,我们已经完成了LSP代码补全的基本实现,现在可以尝试搭建一套真正能跑起来的LSP系统了。不过在那之前,让我们先夯实一些基础细节,以便更顺利地推进后续开发。

第4节中我们已经探讨过LSP初始化时的握手过程。具体来说,在connectiononInitialize函数里,我们可以接收到客户端发送的初始化参数——例如客户端具备哪些能力。代码大致是这样的:

connection.onInitialize((params: InitializeParams) => {
    let capabilities = params.capabilities;
    return {
        capabilities: {
            textDocumentSync: documents.syncKind,
            // 告诉客户端,服务端支持代码补全
            completionProvider: {
                resolveProvider: true
            }
        }
    };
});

下面这张图展示了LSP初始化参数所包含的整体内容:
lsp_

接下来,我们逐一解读这些参数的定义:

interface InitializeParams {
    /** 启动服务端的父进程ID。
     *  如果服务端不是由另一个进程启动的,则为null。
     *  如果父进程挂了,服务端就应该退出(参见退出通知)。
     */
    processId: number | null;

    /** 工作区的根路径。
     *  如果没有打开任何文件夹,则为null。
     *  @deprecated 建议改用rootUri。
     */
    rootPath?: string | null;

    /** 工作区的根URI。
     *  如果没有打开任何文件夹,则为null。
     *  如果同时设置了rootPath和rootUri,rootUri优先。
     */
    rootUri: DocumentUri | null;

    /** 用户提供的初始化选项。 */
    initializationOptions?: any;

    /** 客户端(编辑器或工具)提供的能力。 */
    capabilities: ClientCapabilities;

    /** 初始的跟踪设置。如果省略,默认关闭跟踪('off')。 */
    trace?: 'off' | 'messages' | 'verbose';

    /** 服务端启动时,客户端已配置的工作区文件夹列表。
     *  仅在客户端支持工作区文件夹时可用。
     *  如果客户端支持但没有任何文件夹被配置,则为null。
     *  @since 3.6.0
     */
    workspaceFolders?: WorkspaceFolder[] | null;
}

将这些信息分类整理后,大致形成下面这张图的结构:
InitializeParams

主要可分为三大类别:

第一类是运行环境相关的信息,比如进程ID和各类路径。第二类是客户端能力信息。第三类是一些辅助设定,例如trace开关和用户自定义的初始化选项。

需要特别注意的是,路径信息只有在VSCode中确实打开了一个目录时才能获取到。例如,假设我打开的目录是 /Users/ziyingliuziying/working/gitlab/cafmode/server,那么 rootPath 返回的就是 /Users/ziyingliuziying/working/gitlab/cafmode/server。而 rootUri 返回的是 file:///Users/ziyingliuziying/working/gitlab/cafmode/server。至于 workspaceFolders,它是一个由 WorkspaceFolder 组成的数组,每个 WorkspaceFolder 包含 nameuri 两个属性。还是用上面这个例子,name 就是 server,而 uri 同样是 file:///Users/ziyingliuziying/working/gitlab/cafmode/server

来源:https://developer.aliyun.com/article/704464

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
WPS AI生成专业PPT模板技巧与工作总结范文

WPS AI生成专业PPT模板技巧与工作总结范文

每逢职场汇报高峰期,项目总结、年终述职等任务纷至沓来,你是否也常感到时间紧迫、内容匮乏且思路混乱?此时,一份设计得当的PPT模板,往往能成为你高效表达的得力助手。它不仅关乎专业形象的塑造,更是牢牢抓住听众注意力的核心要素。毕竟,在信息爆炸的时代,观众的耐心可能比金鱼还要短暂。 令人欣慰的是,如今我们

时间:2026-05-30 11:53
AI提升企业公文写作效率实用指南与范文

AI提升企业公文写作效率实用指南与范文

适合需求: 在当今企业与组织机构中,公文撰写几乎已成为每位职场人士必须掌握的“基础技能”。无论是会议记录、通知公告,还是各类总结报告,这类写作需求几乎无处不在。然而,真正动笔时,不少人却感到棘手:如何将思路清晰、准确地表达在纸上? 范文 Demo: 公文的重要性不言自明。它不仅是信息传达的桥梁,更直

时间:2026-05-30 11:52
Excel两表数据对比技巧,提升工作效率实用方法

Excel两表数据对比技巧,提升工作效率实用方法

```html Excel两个表格数据对比的高效方法 在日常工作中,经常需要对比两个Excel表格中的数据,快速找出差异或合并信息。无论是数据分析师还是普通办公人员,掌握这些Excel数据对比技巧都能显著提升工作效率。以下介绍三种实用的表格对比方法,各有侧重,可根据实际需求灵活选用。 方法一:使用条

时间:2026-05-30 11:50
如何撰写真诚辞职报告?范文与提示词

如何撰写真诚辞职报告?范文与提示词

辞职报告适用场景与要求: 辞职报告范文模板 尊敬的领导: 此刻,我怀着复杂与感激的心情向您递交这份辞职申请。首先,衷心感谢您在我任职期间给予的悉心指导与关怀。正是在您的支持与信任下,我得以持续成长、不断进步,并收获了极为宝贵的工作经验。 此次离职决定并非一时冲动,而是经过深思熟虑。主要基于以下几点:

时间:2026-05-30 11:49
Excel汇总其他表格数据方法,提升工作效率

Excel汇总其他表格数据方法,提升工作效率

Excel跨表格汇总数据的4种高效方法(附公式详解) 在日常办公中,很多人经常遇到这样的场景:手头有多个Excel表格,数据分散在不同的文件或工作表中,需要合并进行整体分析,结果要么是手动复制粘贴效率低下,要么是公式写错导致混乱。实际上,Excel内置了多种成熟的数据汇总手段,能帮你快捷准确地将分散

时间:2026-05-30 11:48
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程