Java Eclipse RCP完成计划不';不考虑更换长度

Java Eclipse RCP完成计划不';不考虑更换长度,java,eclipse,eclipse-rcp,content-assist,Java,Eclipse,Eclipse Rcp,Content Assist,在JFace文本编辑器中应用CompletionProposal时,proposal中的replacementLength参数似乎没有得到尊重 以下是我补充的建议: 替换偏移量、长度和字符串值在调试器中验证为我所期望的值。应用建议时,它会按预期插入插入符号偏移,但不会替换行中的任何文本。相反,插入符号右侧的文本将移至插入文本的右侧。替换长度对应于高亮显示的文本长度,但如果没有任何选择,它也无法工作,在这种情况下,我硬编码了预期的替换长度 在搜索时,我没有找到任何关于此问题的报告,当我使用选定的

在JFace文本编辑器中应用CompletionProposal时,proposal中的replacementLength参数似乎没有得到尊重

以下是我补充的建议:

替换偏移量、长度和字符串值在调试器中验证为我所期望的值。应用建议时,它会按预期插入插入符号偏移,但不会替换行中的任何文本。相反,插入符号右侧的文本将移至插入文本的右侧。替换长度对应于高亮显示的文本长度,但如果没有任何选择,它也无法工作,在这种情况下,我硬编码了预期的替换长度


在搜索时,我没有找到任何关于此问题的报告,当我使用选定的一些文本应用propsal时,JDT编辑器会按预期替换文本。因此,我假设还需要其他东西,因为API非常简单,我看不到预期的结果。

这在我的代码中可以很好地进行测试。由于@greg-449发现它有效,我自己也没有尝试过。你能确认替换的上下文吗?在PyDev编辑器中它可能与JDT编辑器中的不同吗?在PyDev中它只会中断。我想知道你是否能重现我所看到的。使用PyDev方案,而不是我的自定义方案,我发现替换方案不能正常工作。我从代码中看到,在应用建议时必须按住Ctrl键,以便在调用PyLinkedModeCompletionProposal#applyOnDoc时使“eat”参数为true。但是fLen是0,这导致不替换任何文本。fLen永远不会设置在AstractCompletionProposalExtension中,因为它总是使用smartTogge false调用。我不知道我的代码中是否有什么原因导致了这一点。即使smartToggle强制为true,fLen也为0,因为我使用args选择函数名或整个函数调用,fLen测量到第一个“(”或行尾的距离。我不理解这里的意图(applyOnDoc还将替换文本截断为函数名)。我正在尝试替换整个函数调用,而PyDev方案和我的自定义方案返回一个带有args的函数调用。因此,我不明白为什么此处的替换仅限于函数名。如果用另一个函数名替换函数名,则args可能不同。
CompletionProposal comp = new CompletionProposal(replacementStr,
   replacementOffset, replacementLength, cursorPosition , img,     
   displayStr, null, additionalInfoStr);