This commit is contained in:
meganrogge 2022-12-09 19:36:52 -06:00
parent 87a5329aec
commit cf4cc72790
No known key found for this signature in database
GPG key ID: 1367081C49377970
6 changed files with 17 additions and 9 deletions

View file

@ -89,7 +89,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
const end = line.lastIndexOf('#');
fixes.push({
type: vscode.TerminalQuickFixType.command,
type: vscode.TerminalQuickFixType.Command,
terminalCommand: line.slice(begin, end === -1 ? undefined : end - 1)
});
}

View file

@ -56,7 +56,15 @@ export interface ITerminalCommandSelector {
export type TerminalQuickFixActionInternal = IAction | ITerminalQuickFixCommandAction | ITerminalQuickFixOpenerAction;
export type TerminalQuickFixCallback = (matchResult: ITerminalCommandMatchResult) => TerminalQuickFixActionInternal[] | TerminalQuickFixActionInternal | undefined;
export type TerminalQuickFixCallbackExtension = (terminalCommand: ITerminalCommand, lines: string[] | undefined, option: ITerminalQuickFixOptions, token: CancellationToken) => Promise<ITerminalQuickFix[] | ITerminalQuickFix | undefined>;
export type TerminalQuickFixCallbackExtension = (terminalCommand: ITerminalCommand, lines: string[] | undefined, option: ITerminalQuickFixOptions, token: CancellationToken) => Promise<ProviderResult<ITerminalQuickFix[] | ITerminalQuickFix>>;
/**
* A provider result represents the values a provider, like the {@link HoverProvider},
* may return. For once this is the actual result type `T`, like `Hover`, or a thenable that resolves
* to that type `T`. In addition, `null` and `undefined` can be returned - either directly or from a
* thenable.
*/
export type ProviderResult<T> = T | undefined | null | Thenable<T | undefined | null>;
export interface ITerminalQuickFixProvider {
/**
@ -65,7 +73,7 @@ export interface ITerminalQuickFixProvider {
* @param token A cancellation token indicating the result is no longer needed
* @return Terminal quick fix(es) if any
*/
provideTerminalQuickFixes(terminalCommand: ITerminalCommand, lines: string[] | undefined, option: ITerminalQuickFixOptions, token: CancellationToken): Promise<ITerminalQuickFix[] | ITerminalQuickFix | undefined>;
provideTerminalQuickFixes(terminalCommand: ITerminalCommand, lines: string[] | undefined, option: ITerminalQuickFixOptions, token: CancellationToken): Promise<ProviderResult<ITerminalQuickFix[] | ITerminalQuickFix>>;
}
export interface ITerminalCommandMatchResult {
commandLine: string;

View file

@ -70,7 +70,7 @@ import { CandidatePort } from 'vs/workbench/services/remote/common/remoteExplore
import { ITextQueryBuilderOptions } from 'vs/workbench/services/search/common/queryBuilder';
import * as search from 'vs/workbench/services/search/common/search';
import { EditSessionIdentityMatch } from 'vs/platform/workspace/common/editSessions';
import { TerminalCommandMatchResult, TerminalQuickFix } from 'vscode';
import { ProviderResult, TerminalCommandMatchResult, TerminalQuickFix } from 'vscode';
export interface IWorkspaceData extends IStaticWorkspaceData {
folders: { uri: UriComponents; name: string; index: number }[];
@ -1854,7 +1854,7 @@ export interface ExtHostTerminalServiceShape {
$initEnvironmentVariableCollections(collections: [string, ISerializableEnvironmentVariableCollection][]): void;
$acceptDefaultProfile(profile: ITerminalProfile, automationProfile: ITerminalProfile): void;
$createContributedProfileTerminal(id: string, options: ICreateContributedTerminalProfileOptions): Promise<void>;
$provideTerminalQuickFixes(id: string, matchResult: TerminalCommandMatchResult, token: CancellationToken): Promise<TerminalQuickFix[] | TerminalQuickFix | undefined>;
$provideTerminalQuickFixes(id: string, matchResult: TerminalCommandMatchResult, token: CancellationToken): Promise<ProviderResult<TerminalQuickFix[] | TerminalQuickFix>>;
}
export interface ExtHostSCMShape {

View file

@ -679,7 +679,7 @@ export abstract class BaseExtHostTerminalService extends Disposable implements I
});
}
public async $provideTerminalQuickFixes(id: string, matchResult: vscode.TerminalCommandMatchResult): Promise<vscode.TerminalQuickFix[] | vscode.TerminalQuickFix | undefined> {
public async $provideTerminalQuickFixes(id: string, matchResult: vscode.TerminalCommandMatchResult): Promise<vscode.ProviderResult<vscode.TerminalQuickFix[] | vscode.TerminalQuickFix>> {
const token = new CancellationTokenSource().token;
if (token.isCancellationRequested) {
return;

View file

@ -25,7 +25,7 @@ import { IActionWidgetService } from 'vs/platform/actionWidget/browser/actionWid
import { ActionSet } from 'vs/platform/actionWidget/common/actionWidget';
import { TerminalQuickFix, toMenuItems } from 'vs/workbench/contrib/terminal/browser/widgets/terminalQuickFixMenuItems';
import { ITerminalQuickFixProviderSelector, ITerminalQuickFixService } from 'vs/workbench/contrib/terminal/common/terminal';
import { ITerminalQuickFixOptions, IResolvedExtensionOptions, IUnresolvedExtensionOptions, ITerminalCommandSelector, ITerminalQuickFix, IInternalOptions, ITerminalQuickFixCommandAction, ITerminalQuickFixOpenerAction, TerminalQuickFixType } from 'vs/platform/terminal/common/xterm/terminalQuickFix';
import { ITerminalQuickFixOptions, IResolvedExtensionOptions, IUnresolvedExtensionOptions, ITerminalCommandSelector, ITerminalQuickFix, IInternalOptions, ITerminalQuickFixCommandAction, ITerminalQuickFixOpenerAction, TerminalQuickFixType, ProviderResult } from 'vs/platform/terminal/common/xterm/terminalQuickFix';
import { getLinesForCommand } from 'vs/platform/terminal/common/capabilities/commandDetectionCapability';
import { IAnchor } from 'vs/base/browser/ui/contextview/contextview';
import { ILabelService } from 'vs/platform/label/common/label';
@ -294,7 +294,7 @@ export async function getQuickFixesForCommand(
openerService: IOpenerService,
labelService: ILabelService,
onDidRequestRerunCommand?: Emitter<{ command: string; addNewLine?: boolean }>,
getResolvedFixes?: (selector: ITerminalQuickFixOptions, lines?: string[]) => Promise<ITerminalQuickFix | ITerminalQuickFix[] | undefined>
getResolvedFixes?: (selector: ITerminalQuickFixOptions, lines?: string[]) => Promise<ProviderResult<ITerminalQuickFix | ITerminalQuickFix[]>>
): Promise<ITerminalAction[] | undefined> {
const fixes: ITerminalAction[] = [];
const newCommand = terminalCommand.command;

View file

@ -12,7 +12,7 @@ declare module 'vscode' {
* @param token A cancellation token indicating the result is no longer needed
* @return Terminal quick fix(es) if any
*/
provideTerminalQuickFixes(commandMatchResult: TerminalCommandMatchResult, token: CancellationToken): TerminalQuickFix[] | TerminalQuickFix | undefined;
provideTerminalQuickFixes(commandMatchResult: TerminalCommandMatchResult, token: CancellationToken): ProviderResult<TerminalQuickFix[] | TerminalQuickFix>;
}
interface TerminalQuickFix {