intellism / vscode-comment-translate

vscode 注释翻译插件, 不干扰正常代码,方便快速阅读源码。
https://marketplace.visualstudio.com/items?itemName=intellsmi.comment-translate
MIT License
481 stars 75 forks source link

悬停翻译有个bug #181

Closed yoocoos closed 7 months ago

yoocoos commented 12 months ago

BUG: 这个BUG会出现在VSCode1.73以上版本 当鼠标在框选任何可以触发悬停翻译的内容时,有概率出现聚焦到悬停提示上,导致不能继续输入或更改代码,必须手动取消一下悬停提示

BUG复现: 用鼠标按住左键框选可以悬停翻译的内容,不要放开左键 在框选的过程中鼠标还在移动悬停提示就会触发(如果关闭这个插件,鼠标还在移动框选的时候是不会出现悬停提示的) 这时候触发悬停提示就有很大概率聚焦到悬停提示上面,导致vscode主窗口无法继续输入

建议: 改成跟vscode默认一样,鼠标还在移动框选的时候,悬停提示不要触发,停下了再触发

dayepao commented 11 months ago

同样被这个问题困扰,经过测试,VS code的悬停延时设置针对这个问题无效,禁用插件后恢复正常

yoocoos commented 11 months ago

同样被这个问题困扰,经过测试,VS code的悬停延时设置针对这个问题无效,禁用插件后恢复正常

目前我只能想要使用这个插件就必须勇哥1.72版本的vscode,这个版本不会有冲突

intellism commented 11 months ago

通过鼠标选中内容的时候, 由于鼠标不会在选中区域,不会弹出 Hover 框,达不到“划词翻译”的效果。 所以在选择内容过程中,相隔300ms后,或主动显示hover内容。 普通情况下不会出现问题,目前看,在选择内容后,已弹出hover再移动到 选中区域,或重复hover响应,焦点就变到了hover浮层上,主框就不能输入了。。之前的版本没问题,应该是近期vscode的默认调整。

目前没有很完美的方法,如果直接移除该逻辑,划词翻译效果就没了。

dayepao commented 11 months ago

通过鼠标选中内容的时候, 由于鼠标不会在选中区域,不会弹出 Hover 框,达不到“划词翻译”的效果。 所以在选择内容过程中,相隔300ms后,或主动显示hover内容。 普通情况下不会出现问题,目前看,在选择内容后,已弹出hover再移动到 选中区域,或重复hover响应,焦点就变到了hover浮层上,主框就不能输入了。。之前的版本没问题,应该是近期vscode的默认调整。

目前没有很完美的方法,如果直接移除该逻辑,划词翻译效果就没了。

vscode默认应该是松开鼠标才开始计时300ms,能否取消主动显示的逻辑,对于需要翻译的词,通过主动在上面停顿一下光标来实现。或者给主动显示hover内容加一个开关,因为通常来说需要翻译的情况不会很多。

myotsuki commented 11 months ago

我用的Wisen-Translate反而没有问题。。。

myotsuki commented 11 months ago

这个就有。。

HanHan666666 commented 11 months ago

复现这个bug的视频, image https://github.com/intellism/vscode-comment-translate/assets/60591430/63b64da2-aa9a-49e3-b5bd-f2dbea32cee7

zzhaolei commented 10 months ago

这个问题影响很大,每次复制一段代码然后想删除的时候,就总是失去焦点

Alan3344 commented 10 months ago

我一般是双击单词,它就会弹出翻译

这个框有时会自动锁定焦点,有时不会,导致鼠标点到哪里都是无法取消这个弹窗

当前两个解决方案:

这样弹窗才会掉,前者还好,但是会改变编辑位置,后者使编辑器失去焦点,必须再用鼠标点一次上次要编辑的位置 才可以继续输入内容

image

预期:选择了单词悬停进行翻译,除非鼠标点击弹窗(或者其他方式)定焦,否则当鼠标指针移出弹窗,翻译弹窗即消失

问题场景:有时再给别人演示代码时,双击选中一个单词,就有弹窗翻译挡住,并且鼠标移走,弹窗依旧还在,禁用插件需要重新启动VSCode,编辑器的很多状态,历史记录等等没了

intellism commented 10 months ago

我一般是双击单词,它就会弹出翻译

这个框有时会自动锁定焦点,有时不会,导致鼠标点到哪里都是无法取消这个弹窗

当前两个解决方案:

  • 将当前可视区域通过滚动放方式移动到编辑器边缘
  • 按下ESC键

这样弹窗才会掉,前者还好,但是会改变编辑位置,后者使编辑器失去焦点,必须再用鼠标点一次上次要编辑的位置 才可以继续输入内容

image

预期:选择了单词悬停进行翻译,除非鼠标点击弹窗(或者其他方式)定焦,否则当鼠标指针移出弹窗,翻译弹窗即消失

问题场景:有时再给别人演示代码时,双击选中一个单词,就有弹窗翻译挡住,并且鼠标移走,弹窗依旧还在,禁用插件需要重新启动VSCode,编辑器的很多状态,历史记录等等没了

感谢反馈,非常详细。参考你给的方案,近期优化下。

Alan3344 commented 10 months ago

我再补充一下复现: 在 Python 代码调试时,处于断点中,双击单词选中,然后会弹出翻译,此时鼠标停留超过 1-2 秒,弹窗依旧卡在哪里,弹窗也没有被 focus 情况下 image

idootop commented 9 months ago

@intellism 这个问题根源来自 vscode 1.73.0 变更了 editor.action.showHover 原来的行为: https://github.com/microsoft/vscode/pull/176057

由:显示 Hover 变成: 没有 Hover 时创建并显示 Hover,Hover 可见时则 Focus Hover

变更的原因是为了:通过 command+ i/k(即editor.action.showHover) 激活 Hover 时,默认 focus Hover,使其可以通过上下按键滚动查看 Hover 内容。

图片 图片

我想到 3 种解决方法:

  1. commands.executeCommand('editor.action.showHover') 之前判断 editor 是否有 Hover 显示,如果已经显示过,则不再调用
  2. commands.executeCommand('editor.action.showHover') 之后重新 focus editor,将焦点从 Hover 上收回
  3. VS Code 改回 commands.executeCommand('editor.action.showHover') 原来的行为,或者提供参数可以控制(默认原始行为)

经过研究,我并没有找到上述方案1,2的实现方法,无法从插件侧解决这个问题~

intellism commented 8 months ago

@intellism 这个问题根源来自 vscode 1.73.0 变更了 editor.action.showHover 原来的行为: microsoft/vscode#176057

由:显示 Hover 变成: 没有 Hover 时创建并显示 Hover,Hover 可见时则 Focus Hover

变更的原因是为了:通过 command+ i/k(即editor.action.showHover) 激活 Hover 时,默认 focus Hover,使其可以通过上下按键滚动查看 Hover 内容。

图片 图片 I think of 3 solutions:

  1. Determine whether the editor has Hover displayed before commands.executeCommand('editor.action.showHover'). If it has been displayed, it will not be called again.
  2. Re-focus the editor after commands.executeCommand('editor.action.showHover') to take back the focus from Hover
  3. Change VS Code back to the original behavior of commands.executeCommand('editor.action.showHover'), or provide parameters to control (default original behavior)

After research, I have not found the implementation method of the above solutions 1 and 2, and cannot solve this problem from the plug-in side ~

Thank you for your analysis and solution. Option 3 is the simplest, but needs to be tested> @intellism 这个问题根源来自 vscode 1.73.0 变更了 editor.action.showHover 原来的行为: microsoft/vscode#176057

由:显示 Hover 变成: 没有 Hover 时创建并显示 Hover,Hover 可见时则 Focus Hover

变更的原因是为了:通过 command+ i/k(即editor.action.showHover) 激活 Hover 时,默认 focus Hover,使其可以通过上下按键滚动查看 Hover 内容。

图片 图片 我想到 3 种解决方法:

  1. commands.executeCommand('editor.action.showHover') 之前判断 editor 是否有 Hover 显示,如果已经显示过,则不再调用
  2. commands.executeCommand('editor.action.showHover') 之后重新 focus editor,将焦点从 Hover 上收回
  3. VS Code 改回 commands.executeCommand('editor.action.showHover') 原来的行为,或者提供参数可以控制(默认原始行为)

经过研究,我并没有找到上述方案1,2的实现方法,无法从插件侧解决这个问题~

谢谢分析并提供解决方案。 方案3是最简单的,但是,在选择文本的时候,鼠标没有hover到选中区域, “划词翻译” 就不生效了。 目前看方案2是有可能的,可以切换editor的 focus状态的,我尝试下。

idootop commented 8 months ago

嗯,方案3我周末给vscode提了个PR,看官方是否会通过合并了

PS: 方案2还需要注意还原到原来的selection,不然会丢失文本的选中状态,体验非常糟糕

staoran commented 7 months ago

嗯,方案3我周末给vscode提了个PR,看官方是否会通过合并了

PS: 方案2还需要注意还原到原来的selection,不然会丢失文本的选中状态,体验非常糟糕

已经合并了,似乎这个问题还是存在

yulin96 commented 7 months ago

嗯,方案3我周末给vscode提了个PR,看官方是否会通过合并了 PS: 方案2还需要注意还原到原来的selection,不然会丢失文本的选中状态,体验非常糟糕

已经合并了,似乎这个问题还是存在

需要等待此合并 https://github.com/intellism/vscode-comment-translate/pull/196

idootop commented 7 months ago

嗯,方案3我周末给vscode提了个PR,看官方是否会通过合并了 PS: 方案2还需要注意还原到原来的selection,不然会丢失文本的选中状态,体验非常糟糕

已经合并了,似乎这个问题还是存在

还没到 stable 分支呢,有望能在 1.85.x 合并进去。

staoran commented 7 months ago

嗯,方案3我周末给vscode提了个PR,看官方是否会通过合并了 PS: 方案2还需要注意还原到原来的selection,不然会丢失文本的选中状态,体验非常糟糕

已经合并了,似乎这个问题还是存在

还没到 stable 分支呢,有望能在 1.85.x 合并进去。

太希望了,今天官方人员回复我说这两天发 1.85,不超过下周😂希望能合进去

zzhaolei commented 7 months ago

1.85已经发布了,并且包含了 @idootop 的pr,现在这个问题可以继续推进了嘛👍

staoran commented 7 months ago

但是没包含昨天提的 pr 😂

idootop commented 7 months ago

1.85已经发布了,并且包含了 @idootop 的pr,现在这个问题可以继续推进了嘛👍

再等等,之前那个 PR 有点问题,昨晚重新提了一个,刚合并进去。要等到 VS Code v1.86.0 正式发布。

在最新的 VS Code 1.86.0-insider 版本上已经修复了:https://code.visualstudio.com/insiders

图片
idootop commented 7 months ago

但是没包含昨天提的 pr 😂

多谢老哥在 vscode 那边的解释,很到位 👍

staoran commented 7 months ago

但是没包含昨天提的 pr 😂

多谢老哥在 vscode 那边的解释,很到位 👍

要多谢你的 pr,我要被这个bug烦死了,发现这个问题之后就去 vscode 逛过,很早就看到过你的 pr,但是直到昨天看到那个 issue 才恍然大悟 😂,然后禁用了 vscode-comment-translate 。 要是 vscode-comment-translate 也能发个预览版就好了 😄

zzhaolei commented 7 months ago

1.86要到明年2月才能发布了,也不知道能不能先进1.85.x的小版本😂

yoocoos commented 7 months ago

1.85已经发布了,并且包含了 @idootop 的pr,现在这个问题可以继续推进了嘛👍

再等等,之前那个 PR 有点问题,昨晚重新提了一个,刚合并进去。要等到 VS Code v1.86.0 正式发布。

在最新的 VS Code 1.86.0-insider 版本上已经修复了:https://code.visualstudio.com/insiders

图片

预览版1.86问题好像依然存在,是我使用方式不正确吗,要进行什么设置吗大佬😂

idootop commented 7 months ago

1.85已经发布了,并且包含了 @idootop 的pr,现在这个问题可以继续推进了嘛👍

再等等,之前那个 PR 有点问题,昨晚重新提了一个,刚合并进去。要等到 VS Code v1.86.0 正式发布。 在最新的 VS Code 1.86.0-insider 版本上已经修复了:https://code.visualstudio.com/insiders

图片

预览版1.86问题好像依然存在,是我使用方式不正确吗,要进行什么设置吗大佬😂

得等 vscode-comment-translate 插件更新,我之前给插件提的 PR 还没合并发版。我是本地自己改源码重新打包插件来测试的。

yoocoos commented 7 months ago

1.85已经发布了,并且包含了 @idootop 的pr,现在这个问题可以继续推进了嘛👍

再等等,之前那个 PR 有点问题,昨晚重新提了一个,刚合并进去。要等到 VS Code v1.86.0 正式发布。 在最新的 VS Code 1.86.0-insider 版本上已经修复了:https://code.visualstudio.com/insiders

图片

预览版1.86问题好像依然存在,是我使用方式不正确吗,要进行什么设置吗大佬😂

得等 vscode-comment-translate 插件更新,我之前给插件提的 PR 还没合并发版。我是本地自己改源码重新打包插件来测试的。

好的,感谢大佬