Pydev 没有字符串参数的悬停文本

Pydev No Hover Text for String arguments

我正在构建一个 RCP 应用程序作为自定义域的 IDE。我们在该领域所做的其中一件事是编写 python 脚本,这些脚本使用已包装为 python 函数的特定于领域的命令。我实现了与 PyDev 集成的悬停文本支持,因此如果有任何特定于域的悬停文本可用,它会调用自定义 ITextHover 而不是 PyDev 的。

我有这个工作,但我发现如果我有一个函数的字符串文字参数,getTextHover() 方法永远不会在 IHoverText 实例上调用。我将此行为追溯到 PyEditConfiguration.

getConfiguredDocumentPartitioning 提供的分区实现

有没有一种方法可以使用 PyDev 的分区方案但以某种方式覆盖上述行为,以便为字符串文字参数调用 getTextHover()?我在首选项中没有看到任何内容,并且尝试遵循 PyDev 源代码中的实现没有成功。

编辑:将 TextSourceViewerConfiguration#getConfiguredDocumentPartitioning() 覆盖到 return IPythonPartitions.PY_DEFAULT 解决了问题。但是我不确定 return 这样做而不是 IPythonPartitions.PYTHON_PARTITION_TYPE 的含义是什么,这是 PyEditCOnfigurationWithoutEditor.

提供的行为

你不应该改变你改变的东西...

正确的方法是更改​​ PyDev 本身以支持您的用例。

您应该提供您的 IPyHoverParticipant(而不是做您自己的文本悬停)并为 PyDev 创建拉取请求,以便悬停在 comments/strings 中工作(即:跳过 "if (!pythonCommentOrMultiline) {" 在 org.python.pydev.editor.hover.PyTextHover.getHoverInfo(ITextViewer, IRegion) 如果您的悬停实现了 IPyHoverParticipant2)。