IDEA Select Refactoring

描述:

项目使用了Cucumber,对着 feature 文件内部右键运行的时候,有时候会出现右键菜单不可用且无法消除的情况,必须切换窗口来消除这个菜单。

这个不知道是 IDEA 还是它自带的 Gherkin 插件的一个bug,不是一个大问题,但是总是会误操作点出来。

bug复现:

当在 feature(gherkin 语法)文件中,如果对着非 Example 的一个数据右键:

就会弹出以下提示,说找到两个Handler,要你选择一个,随便选择,OK 还是 Cancel 也随便:

然后又会弹出一次,也随便选:

图:略

然后就会弹出这个右键菜单:

这个菜单是消除不了的,除非你切换程序再切回来,它才会消失。

而且这个菜单你可以点击,但没有高亮提示你当前鼠标是处于哪个选项。

解决:

先说怎么解决,这个解决方法治标不治本,除非你去修改 IDEA 的源码。

想给 IDEA 提 Issue,不过好像并不是直接能在 Github 上面提,有点麻烦就暂时算了。

通过对 IDEA 源码远程 Debug 发现这两个 Handler 的作用:

  • GherkinStepRenameHandler 是用来重命名 Step 的

  • GherkinInplaceRenameHandler 是用来重命名 Example 中的变量的

一般重命名都是使用 Shift + F6 操作的,但也支持右键菜单操作。

解决方法就是,把其中一个去掉,就不会弹出确认框,也就不会导致后续菜单卡画面。

只要在 gherkin.jar 中的 plugin.xml 中去掉其中一个即可。

1 找到插件位置

Community 版本:~\.IdeaIC2019.2\plugins\gherkin\lib
or
Ultimate 版本:[IDEA 安装路径]\plugins\gherkin\lib

注意:两个版本的插件位置是不一样的。

2 提取 jar 中的 META-INF/plugin.xml

jar xf gherkin.jar META-INF/plugin.xml

3 修改 META-INF/plugin.xml

删掉其中的一个 Handler:

我平时用不到 Example 的变量重命名,所以就选择删掉 GherkinInplaceRenameHandler。

4 将 META-INF/plugin.xml 更新回 jar中

jar uf gherkin.jar META-INF/plugin.xml

注意:这一步需要关闭 IDEA,不然 jar 会被程序占用而导致更新失败。

最好将 gherkin.jar 备份一下。

最后记得删掉提取出来的文件。

5 查看是否解决

对者一个数据右键,可以看到,直接就弹出右键菜单了,并且可以选择和取消:

posted @ 2020-02-09 02:56  demo杰  阅读(1094)  评论(0编辑  收藏  举报