- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在语言服务器协议(protocol)规范中,语义标记响应有一个数据字段,它是标记的整数数组。
export interface SemanticTokens {
/**
* The actual tokens.
*/
data: uinteger[];
}
在所有示例中,语义标记都是在客户端使用 SemanticTokensBuilder 完成的,该 SemanticTokensBuilder 为每种标记类型指定行和列范围。你是怎么做服务器端的? VSCode发送“textDocument/semanticTokens/full”方法时,语言服务器返回什么?
最佳答案
通过查看示例可能最容易解释。此示例改编自 https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#textDocument_semanticTokens .
假设您的文件包含内容 \n\n foo bars\n\n bazzled\n
,即用空格呈现它看起来像这样:
foo bars
bazzled
这在以下位置有三个标记(使用 0 索引):
foo
,第 2 行,字符 5bars
,第 2 行,字符 10bazzled
,在第 5 行,char 2这是服务器可以响应的一种可能的有效数据
:
// 1st token, 2nd token, 3rd token
[ 2,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ]
这只是以下信息的压缩形式:
[ { deltaLine: 2, deltaStartChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 }, // first token
{ deltaLine: 0, deltaStartChar: 5, length: 4, tokenType: 1, tokenModifiers: 0 }, // second token
{ deltaLine: 3, deltaStartChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 } // third token
]
也就是说,每组 5 个连续元素对应一个标记。这 5 个元素依次具有以下含义:
deltaLine
:这个token和之前的行差deltaStartChar
:此标记与前一个标记之间的起始字符差异(如果前一个标记在同一行),或者只是此标记的起始字符(如果前一个标记在不同的行上)线)length
:这个token的长度tokenType
: token 类型图例的索引tokenModifiers
: token 修饰符的位标志因此,例如,第二个标记有 deltaLine = 0
,意味着它与第一个标记在同一行,而 deltaStartChar = 5
意味着它开始第一个标记开始后的 5 个字符。第一个标记之前没有标记,因此它的位置被认为是绝对的。
tokenType
是 token 类型图例的索引,它是在协议(protocol)初始化握手期间建立的。 token 修饰符的图例也在初始化握手期间建立。
虽然上面的 tokenModifiers
值只是一个整数,但它会被解释为一个位向量,其中每一位表示相应的修饰符是打开还是关闭。例如,上面为第一个标记(foo
)分配了修饰符0b11
,表示第 0 个和第 1 个标记修饰符都处于事件状态,所有其他修饰符都不适用到这个 token 。
关于visual-studio-code - 语言服务器语义标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70490767/
code
正常吗?
我刚刚开始使用 YARD 来记录我的 Rails 应用程序。我没有指定任何特定的标记处理程序,但我希望 `code` 会转换为 code,但这似乎没有发生。这是正常行为吗?我是否必须添加一些额外的选项
什么是Code-Server 首先程序员朋友们肯定都用过来自微软的VS Code 这款轻量而又高级的编辑器,拥有丰富的插件库,支持各种语言编译运行。而本文介绍的Code-Server就是coder 公
我是一名高中生,今年开始学习汇编。 我目前正在制作 Pacman 克隆作为我的最终项目。 我遇到的唯一问题是我的代码很大,*.exe 文件几乎有 64KB。 所以我的问题是,如果我转向模型介质,我需要
锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 挑战 按字符计数绘制 Code 39 条码的 ASCII 表示的最短代码。 维基百科关于代码 3
我正在开发 VS 代码的扩展(使用 javascript)。现在我需要安装 VS Code 的路径。 windows有一种方法: var child = require('child_process'
[Windows 10] 我在自定义目录中安装了“Microsoft VS Code(用户设置)”,每当我尝试更新它时,都会显示: 然后这个 Log Info Dec 23 11:42:40.673
我正在尝试更新我的 VS 代码,但收到一条错误消息:由于防病毒软件和/或进程失控,更新可能会失败。 附加了一个来 self 的用户的日志文件,但我不确定要检查什么。我对计算机和编程还是个新手。 最佳答
几天前我安装了 Kali Linux。我正在尝试使用 Code-OSS 而不是 VSCode,因为最新版本的 Kali 没有安装普通版本所需的库。 如果我尝试使用 code-oss . 或 code
我正在从 Atom 迁移到 VS Code,因为这似乎是当今所有酷 child 都在使用的东西。 在 atom 中,我能够如图所示突出显示当前行号(装订线中的蓝色突出显示)。 有没有办法在 VS Co
我试图找到一个明确的 G 代码语法规范,而不是单个 G 代码的含义,我无处不在的规范,我的意思是详细的语法规范,目的是编写解析器。 我编写解析器没有问题,我只是在寻找语法规范,例如。我知道您不必总是为
我想在 VS Code (Windows) 中使用 Fira Code,并且已经按照 instructions 中的说明配置了字体。 。不知何故,字体看起来很模糊。我该如何解决这个问题? "edito
这个问题已经有答案了: How can I navigate back to the last cursor position in Visual Studio Code? (16 个回答) 已关闭
如何选择当前单词,即插入符号所在的位置。 注意:我正在寻找 Visual Studio Code(VS Code)(文本编辑器)的快捷方式,而不是 Visual Studio IDE。 最佳答案 在
我需要在 VS Code 中安装 flutter 但在安装扩展中,我有这个错误 Unable to install 'Dart-Code.flutter'; there is no available
memberData
有什么区别
{@code memberData} 和有什么区别?和 memberData在 JavaDoc 中 最佳答案 有两个主要区别: {@code ...}更简洁:更易于阅读(和输入)。 {@code ..
我有这样一个字符串: Here is my code sample, its not too great: [CODE] [/CODE] I hope you enjoy. 现在我想用 highli
在 VS Code 中,我有一个少于 50 个文件的 Vue 项目,但是在运行开发服务器时 VS Code 抛出 Error: ENOSPC: System limit for number of f
Source Code Pro 如何在 VSC 中使用 ExtraLight ~? 似乎以下不起作用...... 我确定我有字体。 Source Code Pro ExtraLight 最佳答案 编辑
我对 Visual Studio Code 很陌生。我正在尝试调试一个已经存在的应用程序,我已经通过 Git 克隆了它。我的文件都没有被修改。我已经下载了微软扩展“C# for Visual Stud
Visual Code VS Visual Studio Code Insider 我还是不明白这两者有什么区别,难道其中一个是新功能的试用版吗? 最佳答案 Visual Studio Code In
我是一名优秀的程序员,十分优秀!