提交 b47a9157 编写于 作者: I isidor

resources.isEqualOrParent

上级 6faa350e
......@@ -10,3 +10,11 @@ import uri from 'vs/base/common/uri';
export function basenameOrAuthority(resource: uri): string {
return paths.basename(resource.fsPath) || resource.authority;
}
export function isEqualOrParent(first: uri, second: uri, ignoreCase?: boolean): boolean {
if (first.scheme === second.scheme && first.authority === second.authority) {
return paths.isEqualOrParent(first.fsPath, second.fsPath, ignoreCase);
}
return false;
}
......@@ -11,6 +11,7 @@ import nls = require('vs/nls');
import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform';
import { sequence, ITask } from 'vs/base/common/async';
import paths = require('vs/base/common/paths');
import resources = require('vs/base/common/resources');
import URI from 'vs/base/common/uri';
import errors = require('vs/base/common/errors');
import { toErrorMessage } from 'vs/base/common/errorMessage';
......@@ -296,14 +297,14 @@ class RenameFileAction extends BaseRenameAction {
}
public runAction(newName: string): TPromise<any> {
const dirty = this.textFileService.getDirty().filter(d => paths.isEqualOrParent(d.fsPath, this.element.resource.fsPath, !isLinux /* ignorecase */));
const dirty = this.textFileService.getDirty().filter(d => resources.isEqualOrParent(d, this.element.resource, !isLinux /* ignorecase */));
const dirtyRenamed: URI[] = [];
return TPromise.join(dirty.map(d => {
let renamed: URI;
// If the dirty file itself got moved, just reparent it to the target folder
const targetPath = paths.join(this.element.parent.resource.path, newName);
if (paths.isEqual(this.element.resource.fsPath, d.fsPath)) {
if (this.element.resource.toString() === d.toString()) {
renamed = this.element.parent.resource.with({ path: targetPath });
}
......@@ -673,7 +674,7 @@ export class BaseDeleteFileAction extends BaseFileAction {
// Handle dirty
let revertPromise: TPromise<any> = TPromise.as(null);
const dirty = this.textFileService.getDirty().filter(d => paths.isEqualOrParent(d.fsPath, this.element.resource.fsPath, !isLinux /* ignorecase */));
const dirty = this.textFileService.getDirty().filter(d => resources.isEqualOrParent(d, this.element.resource, !isLinux /* ignorecase */));
if (dirty.length) {
let message: string;
if (this.element.isDirectory) {
......@@ -963,7 +964,7 @@ export class PasteFileAction extends BaseFileAction {
}
// Check if target is ancestor of pasted folder
if (!paths.isEqual(this.element.resource.fsPath, fileToCopy.resource.fsPath) && paths.isEqualOrParent(this.element.resource.fsPath, fileToCopy.resource.fsPath, !isLinux /* ignorecase */)) {
if (this.element.resource.toString() !== fileToCopy.resource.toString() && resources.isEqualOrParent(this.element.resource, fileToCopy.resource, !isLinux /* ignorecase */)) {
return false;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册