GsLang语言插件
插件要求vscode版本大于等于1.75.0
更新说明(2025/11/17)
- 宏展开支持,优化体验
- 诊断提示添加类型检查等
- 语法符号缓存加速插件就绪时间
问题/建议反馈:飞书 @fanrj
快速开始
直接打开GS工程目录
Ctrl+O选择工程所在文件夹或在文件夹下以vscode打开
以工作区的方式打开GS项目
使用Open Workspace...命令或双击工作区文件.code-workspace打开工作区
工作区相关概念说明:
vscode的工作区是在一个vscode窗口(实例)中打开一个或多个文件夹的集合。通常情况下,我们直接打开一个单文件夹作为工作区,但是基于开发流程,在一个工作区中包含更多的文件夹无疑会更加方便,即多根工作区(Multi-root workspaces)。
工作区的概念具有以下优点:
- 可以为特定的文件夹应用配置而不影响其他的文件夹
- 任务(task)和启动调试(debugger launch)配置仅在该工作区中上下文有效
- 存储和恢复与该工作区关联的UI状态(例如打开的文件)
- 可以仅对该工作区有选择地启动或禁用插件
在实际的项目工程中,使用工作区将各个子模块(各服务器代码、客户端代码、pkg等)区分并配置对应的参数,可以最大限度地提高GsLang插件的使用体验从而提高工作效率。
参数配置
| 配置项 |
类型 |
描述 |
| gs.start.mount |
array |
工作目录的mount目录,对应gs.exe启动参数的--mount |
| gs.start.declarations |
array |
全局宏定义,对应gs.exe启动参数的/D |
| gs.start.macrofiles |
array |
预加载宏文件,对应gs.exe启动参数的/m |
| ~~gslang.starup_arguments~~ |
string |
旧版本的启动参数配置项,其中--mount、/m和/D的内容会被解析,主要是为了兼容旧版本的配置而保留 |
| gs.logging.level |
string |
Output channel中的日志输出等级 |
| gs.format.rules |
object |
格式化基本配置项 |
| gs.lint.rules |
object |
lint诊断提示规则:详细见 gslint规则说明 |
| gs.common.roots |
object |
该配置项只在code-workspace中生效,为公共的工作目录配置所属的父目录,用于解决公共目录中代码依赖到外部(父目录中)函数、宏定义等情况时Lint报错等问题。例如: "gs.common.roots": { "common": [ "server", "client" ] } 即当common工作目录是server和client的公共模块,若common中有引入server或client中接口、宏等定义时需要添加此配置项 |
功能介绍
代码高亮
拓展实现gs语言语法高亮的方式有两种,分别为语法突出显示和语义突出显示。
语法突出高亮
语法高亮功能根据语法将文本解析成符号和作用域,然后根据这份作用域映射应用对应的颜色和样式。在GS语言插件中,这样一份用正则表达式描述的语法规则文件为gs.tmLanguage.json,其原型是JavaScript的TextMate语法描述文件。通过保留相似语法并修改差异语法的正则表达式来使所有规则逐步契合GS语言的语法特性,最终实现GS语言的语法高亮。
语义突出高亮
语义突出显示是对语法突出显示的补充,其以语言服务器解析项目上下文的符号信息(语法树中的符号信息)来提供附加标记信息。
定义跳转
定义跳转的运作流程与悬停提示类似,只不过悬停提示是将结果通过窗口展示出来而定义跳转则是直接跳转到目标符号定义的位置。
查找引用
查找某个语法符号的引用列表时,需要遍历相关语法树中的符号,结合作用域信息列出可能的引用情况。
由于gs动态语言的特性,该功能获取到的结果可能会出现不够准确的情况,需要开发人员仔细甄别。
代码补全
代码补全提示是根据已输入的符号,猜测用户想要输入的关键字、函数名、变量名、宏定义、枚举等内容。代码补全在实现上同样包括声明性语言功能和程序性语言功能两个方面。
参数建议
参数建议功能即通过查找到当前调用的函数原型,提供可能的参数信息。
悬停提示
当鼠标光标停留在某个字符上时,悬浮信息会展示在光标下方,为用户提供符号或对象的相关信息,一般是关于符号的类型和描述。
诊断提示
目前只支持syntax error的提示
大纲符号
插件会在左侧资源管理器中列出当前文件的大纲。
还可以在Command Palette...(Ctrl+Shift+P)中以@查看当前文件的symbols,以#查看整个工作区的symbols
重命名
快捷键 F2,建议使用于局部变量和函数参数等,对函数使用该功能可能会有错漏的情况
格式化
右键选择格式化文档(Format Document),快捷键 Shift+Alt+F
文件没有语法错误的情况的基本能够成功格式化,格式化后没反应(有明显格式问题的)或者格式化后出现语法错误的情况请及时反馈
调试说明
调试流程视频
调试参数
调试以工作目录作为单位,每个需要进行调试的工作区都需要配置自身的调试参数,配置于每个工作区下的.vscode/launch.json文件中。
你可以通过手动创建该文件,也可以通过模板自动生成:在运行和调试窗口下 -- 创建launch.json文件 -- 选择工作区 -- Gs-Debugger
配置类型
字段:type
默认为gsdebug,无需编辑
请求调试类型
字段:request
请求调试类型分为 启动(launch) 和 附加(attach) 两种形式
启动
以launch的形式启动调试时,插件根据配置的driver路径和启动参数运行gs代码。
此外,以launch启动调试还分为release和debug两种模式(通过字段with_debug区分)
附加
以attach的形式附加到已经启动的进程,附加时可以通过select选择或通过input输入gs进程监听的端口
附加之前需要先在gs进程中启动debuggee模块(开启监听端口),详情见示例
driver路径
字段:execute_path
driver的路径区分平台,可配置win32、linux、darwin三个平台
默认情况下,该字段为空的字符串时,插件会尝试使用自带的driver启动,但是由于版本的差异,对于较为复杂的工程还是需要配置工程配套的driver路径
启动参数
字段:command_line
工程的入口文件以及启动环境等参数,可参考起服脚本中的启动参数。
需要注意的是调试环境的根目录是以工作区路径为准的,所以可能需要根据工程实际结构稍微调整起服脚本中的启动参数:即 /r 、--mount 等相对路径。
注意:如果是新版driver,即gs.exe的话,启动参数则需要添加--require debuggee或--require-all,预加载调试模块。
常见问题