【发布时间】:2021-09-21 14:35:03
【问题描述】:
我正在 VSCode 中编辑 GML 文件 (GameMaker Studio)。有一个很棒的插件,GML Support,它为内置的 GML 函数和实例变量添加了自动完成功能以及其他一些很酷的东西。
但是,VSCode 似乎无法识别 GML 中的局部变量(请参阅下面的屏幕截图。点表示法可以正常工作)
我查看了 VSCode's Programmatic Language Extension 的变量名自动完成功能,但仍然不明白如何使用 VSCode 的语言服务器注册变量声明(即 var fooBar = 23;)。
理想情况下,我希望语言服务器尊重 GML 文件的变量范围:
- 全局变量 -
script文件夹下的文件的任何var声明 - 任何局部变量声明 - 周围
{...}中的所有var声明
如上所述添加变量名称完成的最简单方法是什么?
提前致谢!
编辑:查看vscode-python 以了解如何使用registerCompletionItemProvider(基于VSCode Language Extension doco)。不幸的是,我仍然不清楚 vscode-python 似乎依赖 Jedi 来提供符号?
所以任何点都表示赞赏!
【问题讨论】:
-
根据github.com/gml-support/gml-support/blob/master/src/gml/…,GML 的完成要么使用硬编码名称(用于全局函数或内置内容),要么使用非常基本的函数名称解析。我猜你需要为变量名添加类似的东西,但尊重范围会更加困难,你可能需要一个语言服务器来处理这种事情。
-
谢谢@holt。可以使 VSCode 仅搜索当前文件中使用的
words- 这适用于当前文件中的局部变量。我可以对全局文件使用特定的命名约定。现在,VSCode 能够ctrl-space建议我之前在plaintext文件中输入的单词,但是加载了GML Support扩展名后,该功能似乎已被关闭?
标签: visual-studio-code vscode-extensions game-maker-studio-2 game-maker-language