GsLang语言插件
新版本插件要求vscode版本大于等于1.74.0
更新说明
- 编译本地文件获取语法树不再依赖格式
gs.exe
- 插件新增gs-parser模块直接编译本地脚本获取语法树
- 1.x版本插件配置的starup_arguments可以保留,有助于插件计算脚本路径
- driver只用于获取gs内置类型和方法等基本信息
- 支持格式化
- 移除pkg管理界面和profiler可视化editor(后续由gshub实现)
- 移除大部分不常用命令和配置项
新版插件的优点
不再与gs.exe
有强依赖关系后
- 解析本地脚本语法树更加稳定、快速,从而使得插件启动后的定义跳转、代码补全等功能相比原来时灵时不灵的情况更加好用
- 不再对工作区的启动参数配置要求严格,starup_arguments或mount信息的配置只是优化体验的增量配置,不会对插件功能有较大的负面影响
- gs-parser解析语法树时记录了详细的位置信息,定义跳转更加准确,也为格式化功能的支持提供了基础
- 动态代码高亮完善
新版插件的不足
即后续版本需要改进的地方
- 诊断提示目前只有
syntax error
类型,需要更多的代码检查提示:
- 函数、变量定义重复
- 未引入模块检查
- 未使用函数、变量
- 返回值类型检查
- 返回值覆盖检查
- ...
问题/建议反馈:飞书 @fanrj
功能介绍
定义跳转
//
查找引用
//
由于gs的语言特性,函数的引用查找可能不够准确
代码补全
//
参数建议
//
悬停提示
//
诊断提示
目前只支持syntax error
的提示
大纲符号
除了在editor上方以及左侧explorer的outline中体现当前文件的大纲外
还可以在Command Palette...(Ctrl+Shift+P)
中以@
查看当前文件的symbols
,以#
查看整个工作区的symbols
动态高亮
重命名
快捷键 F2
,建议使用于局部变量和函数参数等,对函数使用该功能可能会有错漏的情况
格式化
右键选择格式化文档(Format Document),快捷键 Shift+Alt+F
文件没有语法错误的情况的基本能够成功格式化,格式化后没反应(有明显格式问题的)或者格式化后出现语法错误的情况请及时反馈
优化体验
虽然新版的插件对于启动参数配置的要求没有之前版本那么严格,
但是使用工作区区分客户端、服务器且为各个工作目录配置启动参数或者mount信息依然可以帮助插件更好地计算文件路径,从而优化体验
使用工作区打开项目工程
1.x 版本中在 .code-workspace
文件中的 workspace_config
配置项已经移除了
配置mount目录
mount目录配置可以延用starup_arguments
,或者使用配置项:gs.start.mount
,如:
{
"gs.start.mount": {
"conf": "../conf" // 即将../conf路径mount为/conf
}
}
调试说明
调试参数
调试以工作目录作为单位,每个需要进行调试的工作区都需要配置自身的调试参数,配置于每个工作区下的.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
,预加载调试模块。
常见问题