diff --git a/packages/plugin-ext/src/plugin/plugin-context.ts b/packages/plugin-ext/src/plugin/plugin-context.ts index 0e7d98ddcfd22..115a323758696 100644 --- a/packages/plugin-ext/src/plugin/plugin-context.ts +++ b/packages/plugin-ext/src/plugin/plugin-context.ts @@ -573,6 +573,9 @@ export function createAPIFactory( }, get tabGroups(): theia.TabGroups { return tabsExt.tabGroups; + }, + registerTerminalQuickFixProvider(id: string, provider: theia.TerminalQuickFixProvider): theia.Disposable { + return terminalExt.registerTerminalQuickFixProvider(id, provider); } }; diff --git a/packages/plugin-ext/src/plugin/terminal-ext.ts b/packages/plugin-ext/src/plugin/terminal-ext.ts index 891eed6d998ca..6f439ed783ce5 100644 --- a/packages/plugin-ext/src/plugin/terminal-ext.ts +++ b/packages/plugin-ext/src/plugin/terminal-ext.ts @@ -246,6 +246,11 @@ export class TerminalServiceExtImpl implements TerminalServiceExt { }); } + /** @stubbed */ + registerTerminalQuickFixProvider(id: string, provider: theia.TerminalQuickFixProvider): theia.Disposable { + return Disposable.NULL; + } + protected isExtensionTerminalOptions(options: theia.TerminalOptions | theia.ExtensionTerminalOptions): options is theia.ExtensionTerminalOptions { return 'pty' in options; } diff --git a/packages/plugin/src/theia-proposed.d.ts b/packages/plugin/src/theia-proposed.d.ts index 9ce7b3c3db907..ff6def299a5ba 100644 --- a/packages/plugin/src/theia-proposed.d.ts +++ b/packages/plugin/src/theia-proposed.d.ts @@ -706,6 +706,46 @@ export module '@theia/plugin' { } // #endregion + + // #region TerminalQuickFixProvider + + export namespace window { + /** + * @param provider A terminal quick fix provider + * @return A {@link Disposable} that un-registers the provider when being disposed + */ + export function registerTerminalQuickFixProvider(id: string, provider: TerminalQuickFixProvider): Disposable; + } + + export interface TerminalQuickFixProvider { + /** + * Provides terminal quick fixes + * @param commandMatchResult The command match result for which to provide quick fixes + * @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; + } + + export interface TerminalCommandMatchResult { + commandLine: string; + commandLineMatch: RegExpMatchArray; + outputMatch?: { + regexMatch: RegExpMatchArray; + outputLines?: string[]; + }; + } + + interface TerminalQuickFix { + type: TerminalQuickFixType; + } + + enum TerminalQuickFixType { + command = 'command', + opener = 'opener' + } + + // #endRegion TerminalQuickFixProvider } /**