InlineCompletionProvider接口已经添加了一些有用的更改,值得注意的是handleItemDidShow()
和handlePartialAccept()
。然而,一个值得注意的缺失功能是跟踪建议是否被拒绝的能力。在原始问题中讨论这一点时,#172384,有两个新的提议接口函数,handleDidRejectCompletionItem()
和handleDidAcceptCompletionItem()
,这些可以添加吗?
目前,我们通过跟踪一些状态间接地跟踪拒绝情况,并使用向InlineCompletionItem and using node.js's
setTimeout(...)提供接受命令的组合,假设如果在N秒后建议没有被接受,那么它就被拒绝了。
6条答案
按热度按时间eivgtgni1#
想知道关于这个的更新情况@isidorn -你预计
handleItemDidShow()
和handlePartialAccept()
在不久的将来会从实验状态中移除吗?mrphzbgm2#
我们没有更新。我们计划将它们移出提议的API,但我还没有确定。一旦我学到更多,我会在这里提供更新。
有一些类似的讨论$x_{1e0f1}^{x}$
zpqajqem3#
谢谢,如果vscode能明确告诉我们建议是被拒绝、丢弃还是接受,那将是非常棒的。如果建议没有被接受的原因是因为用户在同一行继续输入等原因,我会将其视为“丢弃”。
xt0899hw4#
拒绝操作不应该明确吗?只有用户提供的明确拒绝操作才应被视为被拒绝的完成。存在隐式丢弃或无意触发的完成,这些不应被视为拒绝。悬停覆盖菜单是提供明确拒绝的好地方。我不确定它是否允许扩展。
yqyhoc1h5#
拒绝操作不应该不明确吗?只有用户提供的明确拒绝操作才应被视为被拒绝的完成。存在隐式丢弃或无意触发的完成,这些不应被视为拒绝。
我不同意这个观点。如果用户看到一整行完成内容,并决定通过它,那么这就是明确的拒绝。
只有在他们没有机会看到/观察/注意到完成内容的情况下,我们才能说这不是拒绝,对此可以使用大量的启发式方法。例如,我们在750ms之前使用一个计时器,在此期间我们不将建议视为可察觉的。
悬停覆盖菜单是提供明确拒绝的好地方。我不确定它是否允许扩展。
实际上不是这样,因为我自己的经验和研究发现,很少有人会注意到/与这个菜单进行交互。拒绝必须作为信号捕获,但可以通过例如面板上的点赞/点踩来加强,以添加一些额外的内容/权力来支持这个概念。
kdfy810k6#
我会说按下ESC键是一种明确的拒绝。让一个建议过期或输入其他内容并不算作拒绝,但算作被丢弃。