xmake-io / xmake-vscode

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

创建项目要激活插件,插件激活要lua文件,创建项目就直接报错 #167

Open xuxinle opened 1 year ago

xuxinle commented 1 year ago

Xmake 版本

2.7.6

操作系统版本和架构

windows 10

描述问题

image

期待的结果

正常创建项目

工程配置

No response

附加信息和错误日志

No response

waruqi commented 1 year ago

走 newfiles 命令试试,不行就直接 xmake create test 命令行创建后打开。

wanzzhehe commented 1 year ago

走 newfiles 命令试试,不行就直接 xmake create test 命令行创建后打开。

这个我知道是为什么:

插件在激活的时候需要执行 extension.ts 中的 activate 函数,activate 函数直接调用了初始化函数 xmake.start,而在 xmake.start 函数中会检查 xmake.lua 文件是否存在,就在这一步报的错;

现在的问题就是一般新建一个工程,都会去使用命令去创建,而创建工程的命令往往是插件执行的第一个命令,就会触发激活函数,然后就会报错;

至于我自己为什么不提PR,主要是我现在对ts、js不熟悉,fork了仓库,clone下来结果连调试断点都绑定不了(新建一个插件项目一点问题都没有),并且npm install后一堆错误Orz,只能寄希望于开发者解决了QAQ

而且我查了半天资料都不知道怎么在 activate 函数中获取是那条命令激活的插件,所以自己改然后交PR就更不了了之了Orz

waruqi commented 1 year ago

跟激活没关系,我这试了下 可以的么,没啥问题。。

  1. 创建个空目录,打开文件夹
  2. 命令面板点 XMake: CreateProject, 会提示
image

也就是上图贴的,都提示很明显了,继续点下下面提示的按钮 Create a new xmake project

  1. 就会弹出 开发语言 选择列表
image

选 c++

  1. 然后弹出选择项目类型列表 image

选 console

  1. 然后项目创建完成。
image

这个时候,插件才会完整 activate

wanzzhehe commented 1 year ago

跟激活没关系,我这试了下 可以的么,没啥问题。。

  1. 创建个空目录,打开文件夹
  2. 命令面板点 XMake: CreateProject, 会提示
image

也就是上图贴的,都提示很明显了,继续点下下面提示的按钮 Create a new xmake project

  1. 就会弹出 开发语言 选择列表
image

选 c++

  1. 然后弹出选择项目类型列表
image

选 console

  1. 然后项目创建完成。
image

这个时候,插件才会完整 activate

你点弹出框的CreateProject与你点命令的CreateProject不是一个动作。

你创建完成后还会弹出一次创建选择框。

waruqi commented 1 year ago

你点弹出框的CreateProject与你点命令的CreateProject不是一个动作。 你创建完成后还会弹出一次创建选择框。

先点命令 CreateProject,然后点弹出框的 CreateProject。。原本就是两个动作。。

wanzzhehe commented 1 year ago

先点命令 CreateProject,然后点弹出框的 CreateProject。。原本就是两个动作。。

不不不,你没理解我意思,我说的是在这种情况下,插件内xmake.createProject会被执行两遍,这个显然是个BUG Orz

waruqi commented 1 year ago

也不算 bug,目前就是这样的逻辑,避免不了。。

点任意 command 面板命令,在执行 xmake action 之前,vscode 都要先去激活 xmake 插件才能执行。。

为了避免大部分 xmake command 无效执行,在当前打开的工程目录下,xmake 插件激活启动阶段,都会去先检测 xmake.lua 是否存在,如果不存在,先提示用户 点击 CreateProject 创建它。。

https://github.com/xmake-io/xmake-vscode/blob/0f69b477af12d3e8cc6ac197aae80dc053271ddd/src/xmake.ts#L453-L459

当然,理论上,如果用户正好选择的是 xmake.createProject 这个命令,按理是可以跳过 xmake.lua 检测,直接去走 CreateProject创建逻辑的。。

但是现在的问题的,用户点完 xmake.createProject 命令, activate 是最先执行的,这个时候,插件是不知道用户到底点了什么命令,实际的 xmake.lua 检测逻辑,在 CreateProject 逻辑被调用之前。没法针对这个命令,特殊处理过滤检测。

目前是没办法避免的,所以你只能点两次,第一次点 CreateProject 命令,然后根据提示再点一次 CreateProject 按钮才行。