@@ -29,7 +29,8 @@ import { ITerminalQuickFixProviderSelector, ITerminalQuickFixService } from 'vs/
2929import { ITerminalQuickFixOptions , IResolvedExtensionOptions , IUnresolvedExtensionOptions , ITerminalCommandSelector , ITerminalQuickFix , IInternalOptions , ITerminalQuickFixCommandAction , ITerminalQuickFixOpenerAction } from 'vs/platform/terminal/common/xterm/terminalQuickFix' ;
3030import { getLinesForCommand } from 'vs/platform/terminal/common/capabilities/commandDetectionCapability' ;
3131import { IAnchor } from 'vs/base/browser/ui/contextview/contextview' ;
32- import { URI } from 'vs/base/common/uri' ;
32+ import { ILabelService } from 'vs/platform/label/common/label' ;
33+ import { Schemas } from 'vs/base/common/network' ;
3334
3435const quickFixTelemetryTitle = 'terminal/quick-fix' ;
3536type QuickFixResultTelemetryEvent = {
@@ -81,7 +82,8 @@ export class TerminalQuickFixAddon extends Disposable implements ITerminalAddon,
8182 @ILogService private readonly _logService : ILogService ,
8283 @IExtensionService private readonly _extensionService : IExtensionService ,
8384 @ITerminalContributionService private readonly _terminalContributionService : ITerminalContributionService ,
84- @IActionWidgetService private readonly _actionWidgetService : IActionWidgetService
85+ @IActionWidgetService private readonly _actionWidgetService : IActionWidgetService ,
86+ @ILabelService private readonly _labelService : ILabelService
8587 ) {
8688 super ( ) ;
8789 const commandDetectionCapability = this . _capabilities . get ( TerminalCapability . CommandDetection ) ;
@@ -195,7 +197,7 @@ export class TerminalQuickFixAddon extends Disposable implements ITerminalAddon,
195197 }
196198 return provider . provideTerminalQuickFixes ( command , lines , { type : 'resolved' , commandLineMatcher : selector . commandLineMatcher , outputMatcher : selector . outputMatcher , exitStatus : selector . exitStatus , id : selector . id } , new CancellationTokenSource ( ) . token ) ;
197199 } ;
198- const result = await getQuickFixesForCommand ( aliases , terminal , command , this . _commandListeners , this . _openerService , this . _onDidRequestRerunCommand , resolver ) ;
200+ const result = await getQuickFixesForCommand ( aliases , terminal , command , this . _commandListeners , this . _openerService , this . _labelService , this . _onDidRequestRerunCommand , resolver ) ;
199201 if ( ! result ) {
200202 return ;
201203 }
@@ -280,6 +282,7 @@ export async function getQuickFixesForCommand(
280282 terminalCommand : ITerminalCommand ,
281283 quickFixOptions : Map < string , ITerminalQuickFixOptions [ ] > ,
282284 openerService : IOpenerService ,
285+ labelService : ILabelService ,
283286 onDidRequestRerunCommand ?: Emitter < { command : string ; addNewLine ?: boolean } > ,
284287 getResolvedFixes ?: ( selector : ITerminalQuickFixOptions , lines ?: string [ ] ) => Promise < ITerminalQuickFix | ITerminalQuickFix [ ] | undefined >
285288) : Promise < ITerminalAction [ ] | undefined > {
@@ -344,26 +347,18 @@ export async function getQuickFixesForCommand(
344347 }
345348 case TerminalQuickFixType . Opener : {
346349 const fix = quickFix as ITerminalQuickFixOpenerAction ;
347- const label = localize ( 'quickFix.opener' , 'Open: {0}' , fix . uri . toString ( ) ) ;
350+ if ( ! fix . uri ) {
351+ return ;
352+ }
353+ const uriLabel = ( fix . uri . scheme === Schemas . http || fix . uri . scheme === Schemas . https ) ? encodeURI ( fix . uri . toString ( true ) ) : labelService . getUriLabel ( fix . uri ) ;
354+ const label = localize ( 'quickFix.opener' , 'Open: {0}' , uriLabel ) ;
348355 action = {
349356 source : quickFix . source ,
350357 id : quickFix . id ,
351358 label,
352359 class : quickFix . type ,
353360 enabled : true ,
354- run : ( ) => {
355- let uri : URI | undefined ;
356- if ( URI . isUri ( fix . uri ) ) {
357- uri = fix . uri ;
358- } else if ( typeof fix . uri === 'string' ) {
359- uri = URI . parse ( fix . uri ) ;
360- }
361-
362- if ( ! uri ) {
363- return ;
364- }
365- openerService . open ( uri ) ;
366- } ,
361+ run : ( ) => openerService . open ( fix . uri ) ,
367362 tooltip : label ,
368363 uri : fix . uri
369364 } as ITerminalAction ;
0 commit comments