xmake-io / xmake-vscode

🍩 A XMake integration in Visual Studio Code
https://xmake.io
Apache License 2.0
228 stars 55 forks source link

xmake.lua 更多的智能提示 #172

Closed LelouchHe closed 1 year ago

LelouchHe commented 1 year ago

你在什么场景下需要该功能?

在创建 xmake.lua 时,虽然有简单的自动补全,但只是针对内置的函数名称.但这些函数具体的用法,包括参数,作用等,都需要查阅手册才能找到.这样的操作显得很不友好,尤其是对比其他构建工具的插件

描述可能的解决方案

可以结合 lualanguage server,完成所需的大部分智能提示功能

可能的解决方案有:

  1. 做成 lua language server 的 addon
    • 优点: 比较快速
    • 缺点: 用户需要多一步操作? (但貌似做成 addon 之后,可以在 xmake 的插件里自动激活?)
  2. 插件内部调用 language server
    • 优点: 用户体验较好,不需要多一步下载
    • 缺点: 该 language server 没有提供现成的 lib 或接口,需要修改其配置 bundling language server
  3. 主动请求 language server
    • 优点: 只依赖该 server,但不需要 bundle 起来
    • 缺点: 比较 trick,不是推荐的做法

个人觉得方案1比较简单合适,而且应该有自动激活的方法(动态修改 language server) 配置

方案1和方案2 貌似都需要把 xmake.lua 识别成 lua. 但这样一来,貌似就没法使用自定义的 icon,如果这个不是很大的问题的话,个人感觉成了 lua 也没有什么大碍,只是识别度下降一点

描述你认为的候选方案

如果要自己实现的话,最后的效果可能不一定好,但有额外的功能:

  1. xmake 的 lint 检查
  2. 更显式的域操作 (因为这个 xmake 独有的)
  3. 不同目录下的 xmake.lua 的信息传递
  4. etc.

话虽如此,但实现起来比较困难.如果能找到合适的 lua language server 的 lib,可能做起来会稍微容易些

其他信息

lua language server annotation 看起来还是比较容易实现的

LelouchHe commented 1 year ago

我已经创建了一个 addon 的 template https://github.com/LelouchHe/xmake-luals-addon

如果咱们这边没有更好的实现,那我就暂时只能从 addon 入手了

waruqi commented 1 year ago

主要是没时间搞,如果你有兴趣的话,可以来个 pr 过来。

LelouchHe commented 1 year ago

我可以抽空做那个 addon..到时候我把 pr 发出来,因为我不是很熟悉 lua,可能需要 review 一下

LelouchHe commented 1 year ago

目前我把 target 和一些公共的 definitions 做完了..正在提交 Lua-LS addon (https://github.com/LuaLS/LLS-Addons/pull/25)

最后的样子大概是这样: image

目前基本够我自己使用的,剩下的会慢慢补上

waruqi commented 1 year ago

好的 谢谢

LelouchHe commented 1 year ago

已经在 lua addon manager 里了

global interfaces, target, option, package, rule, task 相关的已经全部包括了

应该可以涵盖大多数用途

剩下的 helper, toolchain 和 modules

waruqi commented 1 year ago

这个具体怎么用呢?能简单介绍下么。。方便其他用户也能快速配置用上。

LelouchHe commented 1 year ago

repo 里的 REAME 里有提到

具体步骤是:

  1. 安装 Lua-LS 这个插件
  2. 打开 command palette (ctrl + shift + p), 搜索 "Lua: Open Addon Manager"
  3. 打开 manager 之后, 安装 "Xmake"

如果装了 xmake-vscode 这个插件,还需要把右下角的 "Language Mode" 设置为 Lua (因为现在是识别为 Xmake)

一个潜在的问题是: 一旦安装,在所有的 Lua 文件里都会有作用,而不只 xmake.lua

LelouchHe commented 1 year ago

另,我发现 xmake check 这个命令其实也可以达到一部分提示的功能. 每次 xmake.lua 有更新,就运行一遍,再把输出导入到 diagnosis 里就行了

虽然只有行号,但我觉得也够了,而且这个的信息看起来更全面些

xmake check 是会默认输出所有的错误信息么?

waruqi commented 1 year ago

另,我发现 xmake check 这个命令其实也可以达到一部分提示的功能. 每次 xmake.lua 有更新,就运行一遍,再把输出导入到 diagnosis 里就行了

虽然只有行号,但我觉得也够了,而且这个的信息看起来更全面些

xmake check 是会默认输出所有的错误信息么?

LelouchHe commented 1 year ago

那我可以尝试使用这个来做些补充的功能,如果用户只使用这个插件,而且不介意时不时运行 xmake check的话

waruqi commented 1 year ago

那我可以尝试使用这个来做些补充的功能,如果用户只使用这个插件,而且不介意时不时运行 xmake check的话

xmake build 的时候,原本就会自动做一些 xmake check 的子集

尽量不要频繁执行。。可以跟 intelligense update 一个频率,xmake.lua 更新后 触发一下

LelouchHe commented 1 year ago

pr: #176

sanqideshi commented 2 months ago

@LelouchHe 能不能把modules 也加进去啊