Skip to content

Commit 392aa77

Browse files
authored
use correct icons for terminal opener quick fixes (#167946)
1 parent ec70dcd commit 392aa77

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

src/vs/workbench/contrib/terminal/browser/widgets/terminalQuickFixMenuItems.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { IAction } from 'vs/base/common/actions';
76
import { Codicon } from 'vs/base/common/codicons';
7+
import { Schemas } from 'vs/base/common/network';
88
import { CodeActionKind } from 'vs/editor/contrib/codeAction/common/types';
99
import { localize } from 'vs/nls';
1010
import { ActionListItemKind, IListMenuItem } from 'vs/platform/actionWidget/browser/actionList';
1111
import { IActionItem } from 'vs/platform/actionWidget/common/actionWidget';
12+
import { ITerminalAction } from 'vs/workbench/contrib/terminal/browser/xterm/quickFixAddon';
1213

1314
export const enum TerminalQuickFixType {
1415
Command = 'command',
@@ -17,12 +18,12 @@ export const enum TerminalQuickFixType {
1718
}
1819

1920
export class TerminalQuickFix implements IActionItem {
20-
action: IAction;
21+
action: ITerminalAction;
2122
type: string;
2223
disabled?: boolean;
2324
title?: string;
2425
source: string;
25-
constructor(action: IAction, type: string, source: string, title?: string, disabled?: boolean) {
26+
constructor(action: ITerminalAction, type: string, source: string, title?: string, disabled?: boolean) {
2627
this.action = action;
2728
this.disabled = disabled;
2829
this.title = title;
@@ -62,8 +63,10 @@ export function toMenuItems(inputQuickFixes: readonly TerminalQuickFix[], showHe
6263
function getQuickFixIcon(quickFix: TerminalQuickFix): { codicon: Codicon } {
6364
switch (quickFix.type) {
6465
case TerminalQuickFixType.Opener:
65-
// TODO: if it's a file link, use the open file icon
66-
return { codicon: Codicon.link };
66+
if ('uri' in quickFix.action && quickFix.action.uri) {
67+
const isUrl = (quickFix.action.uri.scheme === Schemas.http || quickFix.action.uri.scheme === Schemas.https);
68+
return { codicon: isUrl ? Codicon.linkExternal : Codicon.goToFile };
69+
}
6770
case TerminalQuickFixType.Command:
6871
return { codicon: Codicon.run };
6972
case TerminalQuickFixType.Port:

src/vs/workbench/contrib/terminal/browser/xterm/quickFixAddon.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { getLinesForCommand } from 'vs/platform/terminal/common/capabilities/com
3131
import { IAnchor } from 'vs/base/browser/ui/contextview/contextview';
3232
import { ILabelService } from 'vs/platform/label/common/label';
3333
import { Schemas } from 'vs/base/common/network';
34+
import { URI } from 'vs/base/common/uri';
3435

3536
const quickFixTelemetryTitle = 'terminal/quick-fix';
3637
type QuickFixResultTelemetryEvent = {
@@ -274,6 +275,8 @@ export class TerminalQuickFixAddon extends Disposable implements ITerminalAddon,
274275

275276
export interface ITerminalAction extends IAction {
276277
source: string;
278+
uri?: URI;
279+
command?: string;
277280
}
278281

279282
export async function getQuickFixesForCommand(
@@ -350,7 +353,8 @@ export async function getQuickFixesForCommand(
350353
if (!fix.uri) {
351354
return;
352355
}
353-
const uriLabel = (fix.uri.scheme === Schemas.http || fix.uri.scheme === Schemas.https) ? encodeURI(fix.uri.toString(true)) : labelService.getUriLabel(fix.uri);
356+
const isUrl = (fix.uri.scheme === Schemas.http || fix.uri.scheme === Schemas.https);
357+
const uriLabel = isUrl ? encodeURI(fix.uri.toString(true)) : labelService.getUriLabel(fix.uri);
354358
const label = localize('quickFix.opener', 'Open: {0}', uriLabel);
355359
action = {
356360
source: quickFix.source,

0 commit comments

Comments
 (0)