Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 

36 linhas
1.0 KiB

import type { TextEditor, Uri } from 'vscode';
abstract class Comparer<T> {
abstract equals(lhs: T, rhs: T): boolean;
}
class UriComparer extends Comparer<Uri> {
equals(lhs: Uri | undefined, rhs: Uri | undefined, options: { exact?: boolean } = { exact: false }) {
if (lhs === rhs) return true;
if (lhs == null || rhs == null) return false;
if (options.exact) {
return lhs.toString() === rhs.toString();
}
return lhs.scheme === rhs.scheme && lhs.fsPath === rhs.fsPath;
}
}
class TextEditorComparer extends Comparer<TextEditor> {
equals(
lhs: TextEditor | undefined,
rhs: TextEditor | undefined,
options: { usePosition: boolean } = { usePosition: false },
) {
if (lhs === rhs) return true;
if (lhs == null || rhs == null) return false;
if (options.usePosition && lhs.viewColumn !== rhs.viewColumn) return false;
return lhs.document === rhs.document;
}
}
const textEditorComparer = new TextEditorComparer();
const uriComparer = new UriComparer();
export { textEditorComparer as TextEditorComparer, uriComparer as UriComparer };