Create shell-integration-sample

This commit is contained in:
Daniel Imms
2024-04-10 12:44:05 -07:00
parent 9f62ac5c90
commit cceb9cc6cf
16 changed files with 3688 additions and 0 deletions

View File

@ -0,0 +1,38 @@
import { basename, dirname } from 'path';
import * as vscode from 'vscode';
const terminalProfileName = 'Tracking Editor';
export function activate(context: vscode.ExtensionContext) {
const trackedTerminals: Set<vscode.Terminal> = new Set();
context.subscriptions.push(
vscode.window.registerTerminalProfileProvider('shell-integration-sample.track-editor-directory', {
provideTerminalProfile(token) {
return {
options: {
name: terminalProfileName
}
};
}
}),
vscode.window.onDidChangeTerminalShellIntegration(e => {
if (e.terminal.name === terminalProfileName && !trackedTerminals.has(e.terminal)) {
trackedTerminals.add(e.terminal);
}
}),
vscode.workspace.onDidOpenTextDocument(e => {
if (e.uri.scheme !== 'file') {
return;
}
const targetUri = vscode.Uri.file(dirname(e.fileName));
for (const terminal of trackedTerminals) {
const cwd = terminal.shellIntegration?.cwd;
if (cwd && cwd.toString() !== targetUri.toString()) {
terminal.shellIntegration.executeCommand('cd', [targetUri.fsPath]);
}
}
})
);
}

View File

@ -0,0 +1,15 @@
import * as assert from 'assert';
// You can import and use all API from the 'vscode' module
// as well as import your extension to test it
import * as vscode from 'vscode';
// import * as myExtension from '../../extension';
suite('Extension Test Suite', () => {
vscode.window.showInformationMessage('Start all tests.');
test('Sample test', () => {
assert.strictEqual(-1, [1, 2, 3].indexOf(5));
assert.strictEqual(-1, [1, 2, 3].indexOf(0));
});
});