mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-11 10:57:07 +00:00
Link terminal file paths to workspace previews (#1174)
This commit is contained in:
@@ -65,6 +65,9 @@ vi.mock("@xterm/xterm", () => ({
|
||||
terminalConstructorOptions.values.push(options);
|
||||
}
|
||||
loadAddon(): void {}
|
||||
registerLinkProvider(): { dispose: () => void } {
|
||||
return { dispose: () => undefined };
|
||||
}
|
||||
open(): void {}
|
||||
onData(): { dispose: () => void } {
|
||||
return { dispose: () => undefined };
|
||||
|
||||
@@ -23,6 +23,11 @@ import {
|
||||
shouldInterceptDomTerminalKey,
|
||||
} from "@/utils/terminal-keys";
|
||||
import { renderTerminalSnapshotToAnsi } from "./terminal-snapshot";
|
||||
import {
|
||||
createTerminalLocalFileLinkProvider,
|
||||
type TerminalLocalFileLinkSource,
|
||||
type TerminalLocalFileLinkTarget,
|
||||
} from "../local-links/terminal-local-link-provider";
|
||||
|
||||
export type TerminalOutputData = Uint8Array;
|
||||
|
||||
@@ -46,6 +51,13 @@ export interface TerminalEmulatorRuntimeCallbacks {
|
||||
}) => Promise<void> | void;
|
||||
onPendingModifiersConsumed?: () => Promise<void> | void;
|
||||
onOpenExternalUrl?: (url: string) => Promise<void> | void;
|
||||
onResolveLocalFileLink?: (
|
||||
source: TerminalLocalFileLinkSource,
|
||||
) => Promise<TerminalLocalFileLinkTarget | null> | TerminalLocalFileLinkTarget | null;
|
||||
onOpenLocalFileLink?: (
|
||||
target: TerminalLocalFileLinkTarget,
|
||||
disposition: "main" | "side",
|
||||
) => Promise<void> | void;
|
||||
onInputModeChange?: (state: TerminalInputModeState) => Promise<void> | void;
|
||||
}
|
||||
|
||||
@@ -221,6 +233,17 @@ export class TerminalEmulatorRuntime {
|
||||
void this.callbacks.onOpenExternalUrl?.(uri);
|
||||
}),
|
||||
);
|
||||
const localFileLinkProvider = terminal.registerLinkProvider(
|
||||
createTerminalLocalFileLinkProvider(terminal, {
|
||||
resolveLink: async (source) => {
|
||||
const target = await this.callbacks.onResolveLocalFileLink?.(source);
|
||||
return target ?? null;
|
||||
},
|
||||
openLink: (target, disposition) => {
|
||||
void this.callbacks.onOpenLocalFileLink?.(target, disposition);
|
||||
},
|
||||
}),
|
||||
);
|
||||
terminal.loadAddon(new SearchAddon({ highlightLimit: 20_000 }));
|
||||
terminal.loadAddon(new ClipboardAddon());
|
||||
try {
|
||||
@@ -524,6 +547,7 @@ export class TerminalEmulatorRuntime {
|
||||
disposeImageAddon();
|
||||
},
|
||||
disposeTerminal: () => {
|
||||
localFileLinkProvider.dispose();
|
||||
terminal.dispose();
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user