mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-19 16:18:58 +01:00
40 lines
1.5 KiB
TypeScript
40 lines
1.5 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
import * as assert from 'assert';
|
|
import * as os from 'os';
|
|
import * as vscode from 'vscode';
|
|
import { InMemoryDocument } from '../util/inMemoryDocument';
|
|
|
|
export const joinLines = (...args: string[]) =>
|
|
args.join(os.platform() === 'win32' ? '\r\n' : '\n');
|
|
|
|
|
|
export const CURSOR = '$$CURSOR$$';
|
|
|
|
export function getCursorPositions(contents: string, doc: InMemoryDocument): vscode.Position[] {
|
|
const positions: vscode.Position[] = [];
|
|
let index = 0;
|
|
let wordLength = 0;
|
|
while (index !== -1) {
|
|
index = contents.indexOf(CURSOR, index + wordLength);
|
|
if (index !== -1) {
|
|
positions.push(doc.positionAt(index));
|
|
}
|
|
wordLength = CURSOR.length;
|
|
}
|
|
return positions;
|
|
}
|
|
|
|
export function workspacePath(...segments: string[]): vscode.Uri {
|
|
return vscode.Uri.joinPath(vscode.workspace.workspaceFolders![0].uri, ...segments);
|
|
}
|
|
|
|
export function assertRangeEqual(expected: vscode.Range, actual: vscode.Range, message?: string) {
|
|
assert.strictEqual(expected.start.line, actual.start.line, message);
|
|
assert.strictEqual(expected.start.character, actual.start.character, message);
|
|
assert.strictEqual(expected.end.line, actual.end.line, message);
|
|
assert.strictEqual(expected.end.character, actual.end.character, message);
|
|
}
|