关闭 errors/warnings 给定的行或正则表达式
Dismiss errors/warnings given a line or regex
我有一个基于 html、js、css 的模板语言。我希望能够禁用来自与给定正则表达式匹配的代码行的错误。
例如,给定此模板化 HTML,vscode 将抛出一些错误提示 css 语法无效:
<!-- custom css -->
<style id="custom-css">
{{User.customCSS}}
</style>
如果我要问的(用正则表达式抑制错误)是不可能的,我有什么选择来隐藏这些错误?
这些模板语言有一些扩展,但除了语法高亮之外,它们没有完成任何其他事情。
我也无法禁用整个 errors/language 功能,因为这非常有用。
以下编辑由 jD3V 回应 OP 作者的评论
我想要解决的核心问题:
VS 代码语言功能 不起作用,但是,这种行为是完全可以预料的 — 毕竟 VS 代码 尝试解释代码——你是作者——写在给定文档中。 VS Code 想要提供提示和警告,但是当任意语法被注入到定义良好的语法中时,VS Code 不可能这样做; VS Code 不可能为它不知道如何阅读的语法提供语言功能 — 但我曾希望以某种方式获得有限版本的语言功能???
那么,托西...
下面的规则...
// @file ".../.vscode/settings.json"
{
"css.validate": true
}
...在将外来语法写入 CSS 文档时会导致错误。
这不是由 Linter 或格式化程序定义的规则
此规则的独特之处在于它会检查您的 CSS 文档是否符合当前的 CSS 规范快照 (which currently is the 2021 snapshot).
由于 W3 联盟实施了可通过 W3C 网站使用的相同工具,该规则可能受到鼓励而存在。
CORE W3 Validator (official)
我不能肯定地说,但是因为该标准推出了一个官方验证工具(我从来不知道其他标准可以做到这一点,但我确信 CSS 并不孤单)它很可能官方工具是如何定义 VS Code 工具的。无论哪种方式,设置 "css.validate": true/false
都不会使用 CSS 语言语法来决定 CSS 是否有效,它可能会使用另一种符合 W3 联盟要求的语法。
我将继续寻找是否有必要停用该工具。可能你需要定义一个自定义file-type,或者转规则。
重要的是要注意,验证器是一种检查 CSS 文档的工具— 任何扩展名为 .css
的文档 — 符合当前 设定的指南"W3CSS规范(其中AtToW,2021 Spec Snapshot 是当前使用的规范)"。 这意味着无法配置该工具,因为它只是满足或不满足规范的指导方针。
https://jigsaw.w3.org/css-validator/
Note from Author:
Okay so, I keep seeing this bounty, and I know the answer, but I am teaching myself the same general subject area that the answer below is part of, so I didn't want to answer it, but since no one else has, I know I can point you in the generally-correct direction.
我知道有两种方法可以做到这一点。第一种方法比较难,但如果您打算在与 VS Code 不同的编辑器中使用这种语言,则可能需要考虑。
创建一个'TextMate Grammar',如果你可以访问MacOS,这是一个更简单的工作,因为'TextMate' 最好支持编写为它发明的 grammar-type,或者至少是 IMO。如果您计划在 CSS 中使用 {{}} 括号,您可以编写一个 CSS 语法,并且只需添加对 {{DoubleCurlySyntax}}
.
的支持
您的另一个选择是,我认为,嵌入式语言的最佳选择,它旨在能够更轻松地实现像您这样的自定义语法.这就是我一直在学习的东西,到目前为止,我不得不自学一切,因为似乎没有人知道我提出的问题的答案。幸运的是,我学到的大部分内容都记录在一个教程中,该教程现在是官方 VS 代码文档的一部分。 You can find it HERE
这是一个广泛的话题,没有人可以向您展示快速创建语法的快速片段。这个问题涉及计算机科学的一些基础知识,例如“语法”。
说到语法,如果你想走那条路,有一个新工具目前处于测试阶段,已经提供给 public。如果有的话,它可以用作理解和学习如何创作、定义和实现“TextMate 语法 PList”和“TextMate 作用域列表”的一种方式,它们结合起来构成了 TextMate 语法。
工具在这里。不,我不是在欺骗你因为任何愚蠢的原因而没有 SSL 许可证而被黑客入侵。不过该工具是合法的。
IRO Tool
编辑:回应@Tori 的评论(我将其编辑为 @Tosi's 问题)。
回应 Tosi's 评论(我将 Tosi 的评论编辑到问题中)我个人认为任何时候有人创建第一次使用 VS Code 语言,他们将不得不跨越与你相同的障碍,尤其是这个障碍。
我可能已经在某个时候说过了,但这是一个广泛的主题,在实现您的语言时需要考虑许多不同的因素。
这是我对您的评论的看法
在某些时候,您将不得不生成代码段 CSS 以使您的语法正常工作。
许多像您自己的框架和自定义语法所做的是,他们创建自定义文件扩展名,并在该类型的文件中编写语言,然后他们使用解析器和正则表达式将语法替换为 CSS。值的替换使该语言变得有用,因为它充当 pre-processor 并提供编写动态 CSS 或 HTML 的能力。通常只有真正的编程语言才有的特性。因为custom-syntax要解析出来,而且是Ru能读懂的语言time 环境(这是您 use-case 的浏览器),我们可以轻松地使用另一个文件 ext.比 .css
帮助 VS Code 出来。使用自定义文件 ext 会让 vscode 知道,嘿,这不是标准的 css。你的语法会告诉 VS Code 它非常接近 CSS,语法上有细微的变化。
这与我认为几个模板引擎(如 Pug、Mustache 或 Handlebars)使用的方式相同。
我认为此时您可能需要考虑如何从您的自定义 CSS-syntax.
生成原始 CSS
使用备用文件扩展名是解决此问题的一种非常常见的方法。一个很好的例子是 JSON w/ Comments 或 .jsonc
。
这是使用 editor.action.inspectTMScopes
工具的好地方
使用检查器工具,我们可以查看“JSON w/ Comments”文件的标记(aka .jsonc
)。
我假设您已经使用过该工具,如果没有,您可以通过命令选项板访问它,方法是输入短语“Developer:Inspect Editor Tokens and Scopes”,然后 select 命令,当您看到了。
该工具的默认键绑定是 CTRL + ALT + SHIFT + i
打开一个 JSONC 或 *.jsonc
文档
许多配置文件以 .json
结尾,但使用 "files.associations: { ... }"
配置以使用 JSONC 语法。例如,我在当前项目 "./.vscode/setting.json"
文件中使用了检查器工具。
当您打开文档时,请确保其中包含有效的 JSON,然后创建注释(这应该是有效的,因为我们在 JSONC 中工作)。然后用工具检查评论。
TextMate 令牌检查器工具应该向您显示类似于下面的图像和/或片段的内容
.________________________________________________________________________.
| ·Hello·World 12 chars |
|________________________________________________________________________|
| language jsonc |
| standard token type Comment |
| foreground #99999999 |
| background #11101E |
| contrast ratio 3.10 |
| _______________________________________________________________________|
| textmate scopes comment.line.double-slash.js |
| meta.structure.dictionary.value.json.comments |
| meta.structure.dictionary.json.comments |
| source.json.comments |
| foreground comment.line |
| { "foreground": "#99999999", "fontStyle": "" } |
|________________________________________________________________________|
这是一个 GREAT 示例,因为它向您展示了 VS Code 如何支持 JSON w/ Comments 使用 JSON
TextMate 语法,以及comments
属性 被添加到它上面。 source.json.comments
末尾的 comments
表示这是一个 JSON 语法,其中添加了 JSONC 语法。
现在更酷了! 好吧,如果你像我这样的书呆子,那就更酷了。 :-)
查看评论时工具中显示的第一个属性是comment.line.double-slash.js
。 In-other-words,工具输出应解释为...
JSONC 语法扩展了标准 JSON 语法,添加了对 JS 语法中的 JS 注释 属性 的支持!!!!!!
对我来说,这很酷!
作为奖励,下面是我如何扩展语言并将其分配给自定义文件类型:
正如我提到的,我自学了同样的主题。我的语言称为 L3,是 ANSI 转义序列和控制代码的模板引擎。这是我的 extension-manifest(或 package.json
)的一部分。
/** @file "package.json" (My Extension Manifest) */
"contributes": {
"languages": [
{
"id": "l3",
"aliases": [
"L3",
"L3"
],
"extensions": [
".l3",
".lll",
".l3Lang
]
}
],
"grammars": [
{
"language": "l3",
"scopeName": "source.html.l3",
"path": "./syntaxes/l3.tmLanguage"
}
]
},
"extensions":[".l3"]
属性 将我的语言定义为在“.l3”文档中使用的语言,以及该文档的语法
JSONC 完成将语法注入另一个语法以定义 its-self 的方式是通过“injectTo”属性 添加到 package.json
扩展清单。
@SEE THE GUIDE HERE阅读更多关于将语法注入语法的信息。
NOTE: I am writing a couple snippets to compliment the guide at the link above. They will be included shortly.
我有一个基于 html、js、css 的模板语言。我希望能够禁用来自与给定正则表达式匹配的代码行的错误。
例如,给定此模板化 HTML,vscode 将抛出一些错误提示 css 语法无效:
<!-- custom css -->
<style id="custom-css">
{{User.customCSS}}
</style>
如果我要问的(用正则表达式抑制错误)是不可能的,我有什么选择来隐藏这些错误?
这些模板语言有一些扩展,但除了语法高亮之外,它们没有完成任何其他事情。
我也无法禁用整个 errors/language 功能,因为这非常有用。
以下编辑由 jD3V 回应 OP 作者的评论
我想要解决的核心问题:
VS 代码语言功能 不起作用,但是,这种行为是完全可以预料的 — 毕竟 VS 代码 尝试解释代码——你是作者——写在给定文档中。 VS Code 想要提供提示和警告,但是当任意语法被注入到定义良好的语法中时,VS Code 不可能这样做; VS Code 不可能为它不知道如何阅读的语法提供语言功能 — 但我曾希望以某种方式获得有限版本的语言功能???
那么,托西...
下面的规则...
// @file ".../.vscode/settings.json"
{
"css.validate": true
}
...在将外来语法写入 CSS 文档时会导致错误。
这不是由 Linter 或格式化程序定义的规则
此规则的独特之处在于它会检查您的 CSS 文档是否符合当前的 CSS 规范快照 (which currently is the 2021 snapshot).
由于 W3 联盟实施了可通过 W3C 网站使用的相同工具,该规则可能受到鼓励而存在。
CORE W3 Validator (official)
我不能肯定地说,但是因为该标准推出了一个官方验证工具(我从来不知道其他标准可以做到这一点,但我确信 CSS 并不孤单)它很可能官方工具是如何定义 VS Code 工具的。无论哪种方式,设置 "css.validate": true/false
都不会使用 CSS 语言语法来决定 CSS 是否有效,它可能会使用另一种符合 W3 联盟要求的语法。
我将继续寻找是否有必要停用该工具。可能你需要定义一个自定义file-type,或者转规则。
重要的是要注意,验证器是一种检查 CSS 文档的工具— 任何扩展名为 .css
的文档 — 符合当前 设定的指南"W3CSS规范(其中AtToW,2021 Spec Snapshot 是当前使用的规范)"。 这意味着无法配置该工具,因为它只是满足或不满足规范的指导方针。
https://jigsaw.w3.org/css-validator/
Note from Author:
Okay so, I keep seeing this bounty, and I know the answer, but I am teaching myself the same general subject area that the answer below is part of, so I didn't want to answer it, but since no one else has, I know I can point you in the generally-correct direction.
我知道有两种方法可以做到这一点。第一种方法比较难,但如果您打算在与 VS Code 不同的编辑器中使用这种语言,则可能需要考虑。
创建一个'TextMate Grammar',如果你可以访问MacOS,这是一个更简单的工作,因为'TextMate' 最好支持编写为它发明的 grammar-type,或者至少是 IMO。如果您计划在 CSS 中使用 {{}} 括号,您可以编写一个 CSS 语法,并且只需添加对 {{DoubleCurlySyntax}}
.
您的另一个选择是,我认为,嵌入式语言的最佳选择,它旨在能够更轻松地实现像您这样的自定义语法.这就是我一直在学习的东西,到目前为止,我不得不自学一切,因为似乎没有人知道我提出的问题的答案。幸运的是,我学到的大部分内容都记录在一个教程中,该教程现在是官方 VS 代码文档的一部分。 You can find it HERE
这是一个广泛的话题,没有人可以向您展示快速创建语法的快速片段。这个问题涉及计算机科学的一些基础知识,例如“语法”。
说到语法,如果你想走那条路,有一个新工具目前处于测试阶段,已经提供给 public。如果有的话,它可以用作理解和学习如何创作、定义和实现“TextMate 语法 PList”和“TextMate 作用域列表”的一种方式,它们结合起来构成了 TextMate 语法。
工具在这里。不,我不是在欺骗你因为任何愚蠢的原因而没有 SSL 许可证而被黑客入侵。不过该工具是合法的。
IRO Tool
编辑:回应@Tori 的评论(我将其编辑为 @Tosi's 问题)。
回应 Tosi's 评论(我将 Tosi 的评论编辑到问题中)我个人认为任何时候有人创建第一次使用 VS Code 语言,他们将不得不跨越与你相同的障碍,尤其是这个障碍。
我可能已经在某个时候说过了,但这是一个广泛的主题,在实现您的语言时需要考虑许多不同的因素。
这是我对您的评论的看法
在某些时候,您将不得不生成代码段 CSS 以使您的语法正常工作。
许多像您自己的框架和自定义语法所做的是,他们创建自定义文件扩展名,并在该类型的文件中编写语言,然后他们使用解析器和正则表达式将语法替换为 CSS。值的替换使该语言变得有用,因为它充当 pre-processor 并提供编写动态 CSS 或 HTML 的能力。通常只有真正的编程语言才有的特性。因为custom-syntax要解析出来,而且是Ru能读懂的语言time 环境(这是您 use-case 的浏览器),我们可以轻松地使用另一个文件 ext.比 .css
帮助 VS Code 出来。使用自定义文件 ext 会让 vscode 知道,嘿,这不是标准的 css。你的语法会告诉 VS Code 它非常接近 CSS,语法上有细微的变化。
这与我认为几个模板引擎(如 Pug、Mustache 或 Handlebars)使用的方式相同。
我认为此时您可能需要考虑如何从您的自定义 CSS-syntax.
生成原始 CSS使用备用文件扩展名是解决此问题的一种非常常见的方法。一个很好的例子是 JSON w/ Comments 或 .jsonc
。
这是使用 editor.action.inspectTMScopes
工具的好地方
使用检查器工具,我们可以查看“JSON w/ Comments”文件的标记(aka .jsonc
)。
我假设您已经使用过该工具,如果没有,您可以通过命令选项板访问它,方法是输入短语“Developer:Inspect Editor Tokens and Scopes”,然后 select 命令,当您看到了。
该工具的默认键绑定是 CTRL + ALT + SHIFT + i
打开一个 JSONC 或 *.jsonc
文档
许多配置文件以 .json
结尾,但使用 "files.associations: { ... }"
配置以使用 JSONC 语法。例如,我在当前项目 "./.vscode/setting.json"
文件中使用了检查器工具。
当您打开文档时,请确保其中包含有效的 JSON,然后创建注释(这应该是有效的,因为我们在 JSONC 中工作)。然后用工具检查评论。
TextMate 令牌检查器工具应该向您显示类似于下面的图像和/或片段的内容
.________________________________________________________________________.
| ·Hello·World 12 chars |
|________________________________________________________________________|
| language jsonc |
| standard token type Comment |
| foreground #99999999 |
| background #11101E |
| contrast ratio 3.10 |
| _______________________________________________________________________|
| textmate scopes comment.line.double-slash.js |
| meta.structure.dictionary.value.json.comments |
| meta.structure.dictionary.json.comments |
| source.json.comments |
| foreground comment.line |
| { "foreground": "#99999999", "fontStyle": "" } |
|________________________________________________________________________|
这是一个 GREAT 示例,因为它向您展示了 VS Code 如何支持 JSON w/ Comments 使用 JSON
TextMate 语法,以及comments
属性 被添加到它上面。 source.json.comments
末尾的 comments
表示这是一个 JSON 语法,其中添加了 JSONC 语法。
现在更酷了! 好吧,如果你像我这样的书呆子,那就更酷了。 :-)
查看评论时工具中显示的第一个属性是comment.line.double-slash.js
。 In-other-words,工具输出应解释为...
JSONC 语法扩展了标准 JSON 语法,添加了对 JS 语法中的 JS 注释 属性 的支持!!!!!!
对我来说,这很酷!
作为奖励,下面是我如何扩展语言并将其分配给自定义文件类型:
正如我提到的,我自学了同样的主题。我的语言称为 L3,是 ANSI 转义序列和控制代码的模板引擎。这是我的 extension-manifest(或 package.json
)的一部分。
/** @file "package.json" (My Extension Manifest) */
"contributes": {
"languages": [
{
"id": "l3",
"aliases": [
"L3",
"L3"
],
"extensions": [
".l3",
".lll",
".l3Lang
]
}
],
"grammars": [
{
"language": "l3",
"scopeName": "source.html.l3",
"path": "./syntaxes/l3.tmLanguage"
}
]
},
"extensions":[".l3"]
属性 将我的语言定义为在“.l3”文档中使用的语言,以及该文档的语法
JSONC 完成将语法注入另一个语法以定义 its-self 的方式是通过“injectTo”属性 添加到 package.json
扩展清单。
@SEE THE GUIDE HERE阅读更多关于将语法注入语法的信息。
NOTE: I am writing a couple snippets to compliment the guide at the link above. They will be included shortly.