vscode 跟踪内联完成建议的"拒绝"

nvbavucw  于 4个月前  发布在  Vscode
关注(0)|答案(6)|浏览(111)

InlineCompletionProvider接口已经添加了一些有用的更改,值得注意的是handleItemDidShow()handlePartialAccept()。然而,一个值得注意的缺失功能是跟踪建议是否被拒绝的能力。在原始问题中讨论这一点时,#172384,有两个新的提议接口函数,handleDidRejectCompletionItem()handleDidAcceptCompletionItem(),这些可以添加吗?
目前,我们通过跟踪一些状态间接地跟踪拒绝情况,并使用向InlineCompletionItem and using node.js's setTimeout(...)提供接受命令的组合,假设如果在N秒后建议没有被接受,那么它就被拒绝了。

eivgtgni

eivgtgni1#

想知道关于这个的更新情况@isidorn -你预计handleItemDidShow()handlePartialAccept()在不久的将来会从实验状态中移除吗?

mrphzbgm

mrphzbgm2#

我们没有更新。我们计划将它们移出提议的API,但我还没有确定。一旦我学到更多,我会在这里提供更新。

有一些类似的讨论$x_{1e0f1}^{x}$

zpqajqem

zpqajqem3#

谢谢,如果vscode能明确告诉我们建议是被拒绝、丢弃还是接受,那将是非常棒的。如果建议没有被接受的原因是因为用户在同一行继续输入等原因,我会将其视为“丢弃”。

xt0899hw

xt0899hw4#

拒绝操作不应该明确吗?只有用户提供的明确拒绝操作才应被视为被拒绝的完成。存在隐式丢弃或无意触发的完成,这些不应被视为拒绝。悬停覆盖菜单是提供明确拒绝的好地方。我不确定它是否允许扩展。

yqyhoc1h

yqyhoc1h5#

拒绝操作不应该不明确吗?只有用户提供的明确拒绝操作才应被视为被拒绝的完成。存在隐式丢弃或无意触发的完成,这些不应被视为拒绝。
我不同意这个观点。如果用户看到一整行完成内容,并决定通过它,那么这就是明确的拒绝。
只有在他们没有机会看到/观察/注意到完成内容的情况下,我们才能说这不是拒绝,对此可以使用大量的启发式方法。例如,我们在750ms之前使用一个计时器,在此期间我们不将建议视为可察觉的。
悬停覆盖菜单是提供明确拒绝的好地方。我不确定它是否允许扩展。
实际上不是这样,因为我自己的经验和研究发现,很少有人会注意到/与这个菜单进行交互。拒绝必须作为信号捕获,但可以通过例如面板上的点赞/点踩来加强,以添加一些额外的内容/权力来支持这个概念。

kdfy810k

kdfy810k6#

我会说按下ESC键是一种明确的拒绝。让一个建议过期或输入其他内容并不算作拒绝,但算作被丢弃。

相关问题