netbeans icon indicating copy to clipboard operation
netbeans copied to clipboard

Filtering TextDocumentService.codeAction results based on the provided kinds.

Open lahodaj opened this issue 1 year ago • 0 comments

When the TextDocumentServiceImpl produces code actions, it will ignore the requested code action kinds for code actions associated with errors, which may lead to warnings like this in the log:

2024-05-08 19:50:36.988 [warning] asf.apache-netbeans-java - Code actions of kind 'source 'requested but returned code action is of kind 'quickfix'. Code action will be dropped. Please check 'CodeActionContext.only' to only return requested code actions.

The ability to specify which kinds should be returned is probably meant to avoid unnecessary computation.

As I was investigating this, I also looked at the CodeActionsProvider and CodeActionProvider. While most of these perform the filtering internally, I am not sure if that's an approach that scales too well. E.g. the SurroundWithHint provider does not seem to perform the filtering. This patch proposes to enhance the providers with an ability to return which kinds they process, and avoid calling providers that don't even provide any useful results. Plus, there's an automatic filtering of the results.

Also, the introduce hint is hardcoded in TextDocumentServiceImpl, and feels problematic in the current situation, so I tried to take that out into a separate provider.

Please let me know what you think.

Thanks!

lahodaj avatar May 08 '24 17:05 lahodaj