如何让我的 VS Code 扩展为 ES6 标记模板文字字符串中的非 JS 代码提供建议和语法突出显示?

2024-03-01

我正在开发 Visual Studio Code 的 GraphQL 扩展,它为 GraphQL 架构和查询实现语法突出显示和自动完成。目前它适用于以.gql扩大。然而,常见的 GraphQL 用法是在 JavaScript/TypeScript 文件中定义内联查询,例如:

@connect(gql`user(id: 2) { name, email }`)
function MyUIComponent({ user }) { ... }

我如何支持我的扩展在 ES6(命名)标记模板文字字符串中实现的突出显示和建议(自动完成)功能?


正如问题帖子下评论中所链接的,这与此 github 问题相关:在 ES6 模板字符串中提供语言支持的扩展 #5961 https://github.com/microsoft/vscode/issues/5961,已解决维护者之一 Matt Bierner 的评论 https://github.com/microsoft/vscode/issues/5961#issuecomment-360890376:

VS Code 扩展现在可以捆绑 ts 服务器插件 https://github.com/Microsoft/vscode/issues/41113。这允许扩展作者编写一个 vscode 扩展,为模板字符串添加语法突出显示 + 智能感知。

两个扩展已经在使用它:[...]

我快速谷歌了一下graphql ts server plugin并发现了这个:https://www.npmjs.com/package/ts-graphql-plugin https://www.npmjs.com/package/ts-graphql-plugin.

引用自它的自述文件的“入门”部分 https://github.com/Quramy/ts-graphql-plugin#getting-started:

首先,确认您的项目具有 TypeScript 和 graphql(v15.x.0 或更高版本)。

要安装此插件,请执行以下命令:

npm install ts-graphql-plugin -D

并配置pluginstsconfig.json 中的部分,例如:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "plugins": [
      {
        "name": "ts-graphql-plugin",
        "schema": "path-or-url-to-your-schema.graphql",
        "tag": "gql"
      }
    ]
  }
}

准备好了。启动您的 TypeScript IDE。

所以回答你的问题“我如何支持我的扩展在 ES6(命名)模板字符串中实现的突出显示和自动完成功能?”,要么您不需要(只需告诉您的用户包含该 TypeScript Server 插件),要么您可以找到某种方法将其集成到您的插件中。


You could also try to take inspiration from the approach used by the Template Literal Editor https://marketplace.visualstudio.com/items?itemName=plievone.vscode-template-literal-editor extension (I have no affiliation with this extension).

引用其自述文件:

在同步编辑器中以任何语言打开 ES6 模板文字和其他可配置的多行字符串或此处文档,并提供语言支持(HTML、CSS、SQL、shell、markdown 等)。

指示: [...]

其他相关工具:

这不会添加建议,但对于标记模板文字字符串中的语法突出显示,有评论标记模板 https://marketplace.visualstudio.com/items?itemName=bierner.comment-tagged-templates马特·比尔纳的扩展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让我的 VS Code 扩展为 ES6 标记模板文字字符串中的非 JS 代码提供建议和语法突出显示? 的相关文章

  • Black 不尊重 pyproject.toml 中的扩展排除

    在 VSCode 中 使用 Python 3 9 和 black 22 6 0 我的项目结构如下 root src module0 py module1 py tests test folder0 test file0 py test fi
  • 在 VSCode Fortran 调试中检查从另一个模块导入的变量

    我正在调试一些包含许多 Fortran 模块的代码 其中一些模块彼此共享变量 不幸的是 带有 VScode 的 gdb 在调试时似乎无法检查导入的变量 目前 当我需要检查导入的变量时 唯一的方法是停止调试 并手动更改代码以包含等于导入变量的
  • 如何去掉 VSCode 中的这个弹出窗口?

    当我开始在对象中输入新属性时 这个小弹出窗口就会出现 而且似乎一直如此 它阻止我向上 向下移动行 因为向上 向下箭头滚动框的内容 我很遗憾地说 这感觉就像 MS Word 中的 Clippy 的 VSCode 版本 我尝试了以下用户设置但无
  • 如何解决“构建失败,您要继续”的问题吗?在 Visual Studio 代码中

    我尝试在 Visual Studio Code 中调试 Java 代码时遇到错误 错误如下 构建失败 是否继续 我尝试过清除工作区 但不起作用 我该如何解决这个问题 问题解决了 我通过清除 Visual Studio Code 中的工作区缓
  • 找不到模块 dtrace-provider

    我有一个简单的nodejs应用程序抛出 Cannot find module build Release DTraceProviderBindings 我在网上查了一下 看起来很多人在 Windows 上使用 Restify 时都遇到了同样
  • 调试firebase云函数

    如何使用 Visual Studio 代码进行调试firebase 数据库 trigger功能 我尝试了模拟器 但是当我调用它时出现错误 functions debug myMethod C functions functions gt f
  • 在 VS Code 文件搜索中,我可以展开(或折叠)所有结果吗?

    在程序的 搜索 窗格中 按 Enter 键后 会列出所有文件 其中一些文件会展开以显示文件中的结果 而其他文件则会折叠 我首先想知道是什么决定了任何给定文件的扩展 其次我想知道如何一次性扩展所有文件 这个问题似乎最接近我的问题 但它是关于不
  • VS Code:如何在颜色主题中使用语义标记?

    我尝试更新我为 VS Code 制作的颜色主题 简单焦点 但我从未找到任何主题创建者关于如何使用新语义标记的指南 我已经设定 semanticHighlighting true在我的主题中 例如 我想要为类着色 并且类定义有特定的 text
  • 在扩展上使用默认的 VS Code 图标

    我正在制作 VS Code 扩展来概述 TypeScript 代码结构 我想知道如何在自定义树视图中使用 VS Code 在智能感知中使用的相同图标 2022 年更新 现在可以在树项中使用代码图标 getChildren return co
  • “代码 。”无法在 OS X/Mac 上的 Visual Studio Code 命令行上工作

    命令code 不起作用本手册 https code visualstudio com docs nodejs 之前的所有其他步骤都有效 如何在 OS X 终端中调用 Visual Studio Code pwd 用户 mona nodejs
  • VS Code 中是否有“打开文件夹...”键盘快捷键?

    我没有看到下面的文档页面上列出的 打开文件夹 的键盘快捷键 并且在其他地方搜索了一段时间后我没有看到其他任何内容 https code visualstudio com docs customization keybindings http
  • 如何在 Visual Studio Code 上运行 Scheme?

    我想知道如何在 Visual Studio Code 上运行简单的方案代码 我已经安装了一个名为 Scheme 的扩展 但下一步是什么 我没有找到有关如何运行代码或开发人员联系方式的扩展的任何详细信息 现在在 VSCode 上编译Schem
  • Amplify 和 AppSync 不更新来自多个来源的突变数据

    我一直在尝试与 AppSync GraphQL 交互 Lambda 创建 有效 更新 不更改数据 Angular 已收到创建 更新订阅 但对象为空 Angular 欺骗更新 不更改数据 AppSync 控制台 欺骗更新 不更改数据 Post
  • 如何获取数组作为 GraphQL 解析器的输入

    我想得到一个字符串数组ids查询变量中的参数并在我的解析器中使用它 下面是我的代码 People resolver ts import Resolver Query Mutation Args from nestjs graphql imp
  • 基于摩纳哥编辑器的命名空间自动完成

    我知道摩纳哥编辑器可以根据您的自定义规则自动完成提示 但我不知道如何自动完成基于名称空间 像这样 我还在自定义完成项提供程序内部实现了别名智能感知支持 目标是在 标签 上显示自定义建议 const completionItemsProvid
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • VS Code 中取消缩进行

    有没有相当于editor actions indentLines将选定的行移动到左侧而不是右侧 我知道您可以使用 Tab Shift Tab 进行缩进 但不幸的是 这在 Vim 模式下不起作用 这就是所谓的 突出 查看命令 key shif
  • 使用 Flutter 3.10 / Dart 3.0 进行 VS Code 调试<优化>

    在最新的 颤振 升级 之后 我在 VS Code 调试期间查看某些变量时遇到问题 如何在悬停时查看变量的内容而不是获取此内容 Screenshot of hovering variable 这仅发生在某些变量上 其他变量我可以正常查看内容
  • vscode 中正则表达式的不完整量词

    我正在尝试为对象的开头创建一个正则表达式 以便我可以用单个替换完整的块 在vscode的查找和替换中 My Regex id oid 0 9 product id 0 9 我的示例输入 id oid 973 product id 973 p
  • 如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

    我正在尝试使用 libTooling 编写一个工具 我对其进行了设置 以便它可以使用 LLVM 文档中的示例进行编译 然而 C C IntelliSense 似乎不适用于 CMake 项目 我的工具位于

随机推荐

  • 并行运行多个 R 函数

    我有一个数据集 其中包含很少的数字列和超过 1 亿行的 data table 对象 我想根据其他列对某些列进行分组操作 例如 对 d 列中每个类别的 a 列的唯一元素进行计数 my data a count uniqueN col a co
  • 即使在 Monitor.Enter 之后,Monitor.TryEnter 也始终返回 true

    我想我错过了一些关于正确行为的事情Monitor Enter and Monitor TryEnter 这是我编写的一段代码 用于将问题与其余代码分开 object lockObj new object bool result Monito
  • 用于大型数据集的 sqlite 或 mysql

    我正在处理大型数据集 数十百万条记录 有时是数百百万条记录 并且想要使用与 R 良好链接的数据库程序 我正在尝试在 mysql 和 sqlite 之间做出决定 数据是静态的 但我需要做很多查询 In this 链接到 sqlite 帮助 h
  • Mongodb NoRM 和 POCO

    我正在 C 中试验 Mongodb 和 NoRM 根据我的阅读 唯一标识 Mongodb 中文档的 ObjectId 是一种 特殊 Guid 从某种意义上来说是唯一的 但其中有一些重要的部分 可以更轻松地进行排序和索引 时间戳 机器哈希 p
  • 如何处理“AES/GCM/NoPadding”的 IV 和身份验证标签?

    我在用着AES GCM NoPaddingJava 8 中的加密 我想知道我的代码是否存在安全缺陷 我的代码似乎work 因为它加密和解密文本 但一些细节尚不清楚 我的主要问题是 Cipher cipher Cipher getInstan
  • 谷歌地图 API 3 + WMS

    有人可以给我最好的主意 如何将 WMS 图层放在 Google 地图上 我有很多图层和很多样式 我在 StackOverflow 研究了很多问答 但我没有明白如何管理多种样式和图层 我想放入我的 JQuery 代码中 这里有一个很好的例子
  • CryptEncrypt 不加密整个文本

    我正在尝试使用 wincrypt 加密短信 然而我的代码是不可预测的 它不会加密 解密整个明文 而只会加密 解密其中的一部分 如果我更改密码的长度 例如更改为 password123 它会加密 解密不同数量的字符 这是我的代码 includ
  • 如何获得国家名称

    我使用下面的代码来获取文化类型列表 有没有办法只获取国家 地区名称 谢谢 static void Main string args StringBuilder sb new StringBuilder foreach CultureInfo
  • socket.gaierror: [Errno -2] Python3 未知名称或服务

    我正在尝试使用端口扫描程序 import socket import subprocess import sys from datetime import datetime subprocess call clear shell True
  • 如何在 ASP.NET Core 中使用 JWT 授权重定向到 401 登录页面

    我的 Startup cs 中有这个 JWT 授权配置 services AddAuthentication opts gt opts DefaultAuthenticateScheme JwtBearerDefaults Authenti
  • 拉伸链接引导程序实用程序在 Chrome 中不起作用

    看来拉伸链接 https getbootstrap com docs 4 4 utilities stretched link 在 Bootstrap 中不适用于 tr Firefox 可以 但 Chrome 不行 Chrome 似乎忽略了
  • Powershell - 使用共享证书添加 SSL 绑定

    我正在使用以下代码将证书链接到我添加的 SSL 绑定 thumb Get ChildItem cert LocalMachine My where object Subject like wildCardSubject Select Obj
  • bash / shell 脚本中增加时间(分钟和秒)

    我需要在变量中增加分钟和秒 相对于时间 首先 我不确定声明 时间 变量是否写为 time 00 00 00 or time date 00 00 00 从那里 我想将该变量增加 10 分钟和秒 结果是01 00 00 增加至01 10 10
  • 尝试在 C 中执行 strcat 函数时 EXC_BAD_ACCESS

    我有一个用 C 语言为 uni 编写的程序 当我的代码到达这一行时 strcat md5 blah 我收到 EXC BAD ACCESS 错误 并且我的应用程序崩溃了 据我所知 它没有任何问题 所以我认为一双新的眼睛可能会解决我的问题 有任
  • Google fit API:如何获取活动期间所走路线的地图?

    我正在使用 Google Fit API 开发健身应用程序 看看这张 Google Fit 应用程序上记录的 Google Fit 训练的图片 here https i stack imgur com q2ykP png 我想知道是否可以将
  • 内部字符串、字符串池和永久空间上的垃圾收集

    在探索了 java 的字符串内部结构之后 我对所谓的 永久空间 感到困惑 我最初的理解是它持有String literals以及类元数据 如中所述这个问题 https stackoverflow com questions 1279449
  • Pandas 数据透视表中缺少值?

    我有一个数据集 如下所示 student question answer number Bob How many donuts in a dozen A 1 Sally How many donuts in a dozen C 1 Edwa
  • python 使用逗号交换值会引起混乱

    这涉及到我在尝试解决链表反向问题时遇到的一个问题 首先放一些链表定义和生成链表的快速方法的初步代码 class ListNode def init self x self val x self next None def repr self
  • 从 SQL 中的 xml 获取逗号分隔值

    我从存储过程调用标量 UDF 来获取列值 在标量 UDF 中 我有一个 xml 并且必须获取特定节点的逗号分隔值 我使用了Cross apply 但它造成了巨大的性能瓶颈 因为存储过程实际上是用来获取报告的 有一个表 Traveler 其中
  • 如何让我的 VS Code 扩展为 ES6 标记模板文字字符串中的非 JS 代码提供建议和语法突出显示?

    我正在开发 Visual Studio Code 的 GraphQL 扩展 它为 GraphQL 架构和查询实现语法突出显示和自动完成 目前它适用于以 gql扩大 然而 常见的 GraphQL 用法是在 JavaScript TypeScr