未验证 提交 343415d2 编写于 作者: M meganrogge

improve wording, polish fixes #95570

上级 18ab7aca
......@@ -97,12 +97,26 @@ export class TerminalLinkManager extends DisposableStore {
this._registerStandardLinkProviders();
}
async getLinks(type: TerminalLinkProviderType, y: number): Promise<ILink[] | undefined> {
async getLinks(type: TerminalLinkProviderType, y: number): Promise<ITerminalLinkItem[] | undefined> {
let provider: ILinkProvider | undefined = undefined;
if (type === TerminalLinkProviderType.Word) {
provider = this._standardLinkProviders.find(p => p instanceof TerminalWordLinkProvider);
} else if (type === TerminalLinkProviderType.Validated) {
let result: ITerminalLinkItem[] = [];
if (type === TerminalLinkProviderType.Validated) {
provider = this._standardLinkProviders.find(p => p instanceof TerminalValidatedLocalLinkProvider);
const validatedLinks = await new Promise<ILink[] | undefined>(r => provider?.provideLinks(y, r));
if (validatedLinks) {
result?.push(...validatedLinks);
}
provider = this._standardLinkProviders.find(p => p instanceof TerminalWordLinkProvider);
const wordLinks = await new Promise<ILink[] | undefined>(r => provider?.provideLinks(y, r));
if (wordLinks) {
for (const link of wordLinks) {
const wordLink = link as ITerminalLinkItem;
wordLink.isWord = true;
result.push(wordLink);
}
}
// put file links before word links
return result.sort((a, b) => (a.isWord ? 1 : 0) - (b.isWord ? 1 : 0));
} else {
provider = this._standardLinkProviders.find(p => p instanceof TerminalProtocolLinkProvider);
}
......@@ -440,7 +454,10 @@ export interface LineColumnInfo {
}
export enum TerminalLinkProviderType {
Word = 'word',
Validated = 'validated',
Protocol = 'protocol'
}
export interface ITerminalLinkItem extends ILink {
isWord?: boolean;
}
......@@ -1893,25 +1893,11 @@ export function registerTerminalActions() {
accessor.get(ITerminalService).doWithActiveInstance(t => t.clearBuffer());
}
});
registerAction2(class extends Action2 {
constructor() {
super({
id: TerminalCommandId.ShowWordLinkQuickpick,
title: { value: localize('workbench.action.terminal.showWordLinkQuickpick', "Show Word Link Quick Pick"), original: 'Show Word Link Quickpick' },
f1: true,
category,
precondition: ContextKeyExpr.or(TerminalContextKeys.processSupported, TerminalContextKeys.terminalHasBeenCreated),
});
}
run(accessor: ServicesAccessor) {
accessor.get(ITerminalService).doWithActiveInstance(t => t.showLinkQuickpick(TerminalLinkProviderType.Word));
}
});
registerAction2(class extends Action2 {
constructor() {
super({
id: TerminalCommandId.ShowProtocolLinkQuickpick,
title: { value: localize('workbench.action.terminal.showProtocolLinkQuickpick', "Show Protocol Link Quick Pick"), original: 'Show Protocol Link Quickpick' },
title: { value: localize('workbench.action.terminal.showProtocolLinkQuickpick', "Show Web Links"), original: 'Show Web Links' },
f1: true,
category,
precondition: ContextKeyExpr.or(TerminalContextKeys.processSupported, TerminalContextKeys.terminalHasBeenCreated),
......@@ -1925,7 +1911,7 @@ export function registerTerminalActions() {
constructor() {
super({
id: TerminalCommandId.ShowValidatedLinkQuickpick,
title: { value: localize('workbench.action.terminal.showValidatedLinkQuickpick', "Show Validated Link Quick Pick"), original: 'Show Validated Link Quickpick' },
title: { value: localize('workbench.action.terminal.showValidatedLinkQuickpick', "Show File Links"), original: 'Show File Links' },
f1: true,
category,
precondition: ContextKeyExpr.or(TerminalContextKeys.processSupported, TerminalContextKeys.terminalHasBeenCreated),
......
......@@ -7,7 +7,7 @@ import { EventType } from 'vs/base/browser/dom';
import { localize } from 'vs/nls';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
import { IPickOptions, IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
import { TerminalLinkProviderType } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkManager';
import { ITerminalLinkItem, TerminalLinkProviderType } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkManager';
import { TerminalLinkQuickpickEvent } from 'vs/workbench/contrib/terminal/browser/terminal';
import { ILink } from 'xterm';
......@@ -17,7 +17,7 @@ export class TerminalLinkQuickpick {
@IClipboardService private readonly _clipboardService: IClipboardService
) { }
async show(type: TerminalLinkProviderType, links: ILink[]): Promise<void> {
async show(type: TerminalLinkProviderType, links: ITerminalLinkItem[]): Promise<void> {
const picks = await this._generatePicks(links);
const options: IPickOptions<ITerminalLinkQuickPickItem> = {
placeHolder: type === TerminalLinkProviderType.Validated ? localize('terminal.integrated.openValidatedOrProtocolLink', "Select the link to open") : localize('terminal.integrated.copyWordLink', "Select the link to copy"),
......@@ -29,7 +29,7 @@ export class TerminalLinkQuickpick {
if (!pick) {
return;
}
if (type === TerminalLinkProviderType.Word) {
if (pick.link.isWord) {
this._clipboardService.writeText(pick.label);
} else {
const event = new TerminalLinkQuickpickEvent(EventType.CLICK);
......@@ -56,7 +56,7 @@ export class TerminalLinkQuickpick {
}
export interface ITerminalLinkQuickPickItem extends IQuickPickItem {
link: ILink
link: ITerminalLinkItem
}
......
......@@ -453,7 +453,6 @@ export const enum TerminalCommandId {
KillAll = 'workbench.action.terminal.killAll',
QuickKill = 'workbench.action.terminal.quickKill',
ConfigureTerminalSettings = 'workbench.action.terminal.openSettings',
ShowWordLinkQuickpick = 'workbench.action.terminal.showWordLinkQuickpick',
ShowValidatedLinkQuickpick = 'workbench.action.terminal.showValidatedLinkQuickpick',
ShowProtocolLinkQuickpick = 'workbench.action.terminal.showProtocolLinkQuickpick',
CopySelection = 'workbench.action.terminal.copySelection',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册