[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/redhat-developer/vscode-java/main/src/clientCodeActionProvider.ts [Back]  [Original]

import { CancellationToken, CodeAction, CodeActionContext, CodeActionKind, CodeActionProvider, Command, ExtensionContext, ProviderResult, Range, Selection, TextDocument, commands } from "vscode";
import { apiManager } from "./apiManager";

const configureStaticImportsCommand = "java.action.configureFavoriteStaticMembers";
const UNDEFINED_METHOD = "67108964";
export class ClientCodeActionProvider implements CodeActionProvider {
	constructor(readonly context: ExtensionContext) {
		context.subscriptions.push(commands.registerCommand(configureStaticImportsCommand, async () => {
			commands.executeCommand("workbench.action.openSettings", "java.completion.favoriteStaticMembers");
			apiManager.fireTraceEvent({
				name: "java.ls.command",
				properties: {
					command: configureStaticImportsCommand,
				},
			});
		}));
	}

	provideCodeActions(document: TextDocument, range: Range | Selection, context: CodeActionContext, token: CancellationToken): ProviderResult {
		const codeActions = [];
		if (context.diagnostics?.some(diagnostic => diagnostic.code === UNDEFINED_METHOD)
			|| document.lineAt(range.start.line)?.text?.startsWith("import ")) {
			const action = new CodeAction("Configure static import...", CodeActionKind.QuickFix);
			action.command = {
				title: "Configure static import...",
				command: configureStaticImportsCommand,
			};
			codeActions.push(action);
		}
		return codeActions;
	}
}

Web Proxy Viewer  |  New URL  |  Original Page