提交 a1f97263 编写于 作者: R Rob Lourens

Merge branch 'roblou/findFilesUri'

...@@ -114,15 +114,15 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape { ...@@ -114,15 +114,15 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
// --- search --- // --- search ---
$startFileSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, token: CancellationToken): Thenable<URI[]> { $startFileSearch(includePattern: string, includeFolder: URI, excludePatternOrDisregardExcludes: string | false, maxResults: number, token: CancellationToken): Thenable<URI[]> {
const workspace = this._contextService.getWorkspace(); const workspace = this._contextService.getWorkspace();
if (!workspace.folders.length) { if (!workspace.folders.length) {
return undefined; return undefined;
} }
let folderQueries: IFolderQuery[]; let folderQueries: IFolderQuery[];
if (typeof includeFolder === 'string') { if (includeFolder) {
folderQueries = [{ folder: URI.file(includeFolder) }]; // if base provided, only search in that folder folderQueries = [{ folder: includeFolder }]; // if base provided, only search in that folder
} else { } else {
folderQueries = workspace.folders.map(folder => ({ folder: folder.uri })); // absolute pattern: search across all folders folderQueries = workspace.folders.map(folder => ({ folder: folder.uri })); // absolute pattern: search across all folders
} }
......
...@@ -471,7 +471,7 @@ export interface ExtHostUrlsShape { ...@@ -471,7 +471,7 @@ export interface ExtHostUrlsShape {
} }
export interface MainThreadWorkspaceShape extends IDisposable { export interface MainThreadWorkspaceShape extends IDisposable {
$startFileSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, token: CancellationToken): Thenable<UriComponents[]>; $startFileSearch(includePattern: string, includeFolder: URI, excludePatternOrDisregardExcludes: string | false, maxResults: number, token: CancellationToken): Thenable<UriComponents[]>;
$startTextSearch(query: IPatternInfo, options: IQueryOptions, requestId: number, token: CancellationToken): Thenable<vscode.TextSearchComplete>; $startTextSearch(query: IPatternInfo, options: IQueryOptions, requestId: number, token: CancellationToken): Thenable<vscode.TextSearchComplete>;
$checkExists(includes: string[], token: CancellationToken): Thenable<boolean>; $checkExists(includes: string[], token: CancellationToken): Thenable<boolean>;
$saveAll(includeUntitled?: boolean): Thenable<boolean>; $saveAll(includeUntitled?: boolean): Thenable<boolean>;
......
...@@ -19,7 +19,6 @@ import { IPosition } from 'vs/editor/common/core/position'; ...@@ -19,7 +19,6 @@ import { IPosition } from 'vs/editor/common/core/position';
import { IRange } from 'vs/editor/common/core/range'; import { IRange } from 'vs/editor/common/core/range';
import { ISelection } from 'vs/editor/common/core/selection'; import { ISelection } from 'vs/editor/common/core/selection';
import * as htmlContent from 'vs/base/common/htmlContent'; import * as htmlContent from 'vs/base/common/htmlContent';
import { IRelativePattern } from 'vs/base/common/glob';
import * as languageSelector from 'vs/editor/common/modes/languageSelector'; import * as languageSelector from 'vs/editor/common/modes/languageSelector';
import { WorkspaceEditDto, ResourceTextEditDto, ResourceFileEditDto } from 'vs/workbench/api/node/extHost.protocol'; import { WorkspaceEditDto, ResourceTextEditDto, ResourceFileEditDto } from 'vs/workbench/api/node/extHost.protocol';
import { MarkerSeverity, IRelatedInformation, IMarkerData, MarkerTag } from 'vs/platform/markers/common/markers'; import { MarkerSeverity, IRelatedInformation, IMarkerData, MarkerTag } from 'vs/platform/markers/common/markers';
...@@ -744,7 +743,11 @@ export namespace TextEditorOptions { ...@@ -744,7 +743,11 @@ export namespace TextEditorOptions {
export namespace GlobPattern { export namespace GlobPattern {
export function from(pattern: vscode.GlobPattern): string | IRelativePattern { export function from(pattern: vscode.GlobPattern): string | types.RelativePattern {
if (pattern instanceof types.RelativePattern) {
return pattern;
}
if (typeof pattern === 'string') { if (typeof pattern === 'string') {
return pattern; return pattern;
} }
......
...@@ -1821,6 +1821,8 @@ export enum ConfigurationTarget { ...@@ -1821,6 +1821,8 @@ export enum ConfigurationTarget {
export class RelativePattern implements IRelativePattern { export class RelativePattern implements IRelativePattern {
base: string; base: string;
baseFolder?: URI;
pattern: string; pattern: string;
constructor(base: vscode.WorkspaceFolder | string, pattern: string) { constructor(base: vscode.WorkspaceFolder | string, pattern: string) {
...@@ -1834,7 +1836,13 @@ export class RelativePattern implements IRelativePattern { ...@@ -1834,7 +1836,13 @@ export class RelativePattern implements IRelativePattern {
throw illegalArgument('pattern'); throw illegalArgument('pattern');
} }
this.base = typeof base === 'string' ? base : base.uri.fsPath; if (typeof base === 'string') {
this.base = base;
} else {
this.baseFolder = base.uri;
this.base = base.uri.fsPath;
}
this.pattern = pattern; this.pattern = pattern;
} }
......
...@@ -20,7 +20,7 @@ import { ILogService } from 'vs/platform/log/common/log'; ...@@ -20,7 +20,7 @@ import { ILogService } from 'vs/platform/log/common/log';
import { Severity } from 'vs/platform/notification/common/notification'; import { Severity } from 'vs/platform/notification/common/notification';
import { IQueryOptions, IRawFileMatch2 } from 'vs/platform/search/common/search'; import { IQueryOptions, IRawFileMatch2 } from 'vs/platform/search/common/search';
import { Workspace, WorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { Workspace, WorkspaceFolder } from 'vs/platform/workspace/common/workspace';
import { Range } from 'vs/workbench/api/node/extHostTypes'; import { Range, RelativePattern } from 'vs/workbench/api/node/extHostTypes';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { ExtHostWorkspaceShape, IMainContext, IWorkspaceData, MainContext, MainThreadMessageServiceShape, MainThreadWorkspaceShape } from './extHost.protocol'; import { ExtHostWorkspaceShape, IMainContext, IWorkspaceData, MainContext, MainThreadMessageServiceShape, MainThreadWorkspaceShape } from './extHost.protocol';
...@@ -346,17 +346,19 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape { ...@@ -346,17 +346,19 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape {
// --- search --- // --- search ---
findFiles(include: vscode.GlobPattern, exclude: vscode.GlobPattern, maxResults: number, extensionId: string, token: vscode.CancellationToken = CancellationToken.None): Thenable<vscode.Uri[]> { findFiles(include: string | RelativePattern, exclude: vscode.GlobPattern, maxResults: number, extensionId: string, token: vscode.CancellationToken = CancellationToken.None): Thenable<vscode.Uri[]> {
this._logService.trace(`extHostWorkspace#findFiles: fileSearch, extension: ${extensionId}, entryPoint: findFiles`); this._logService.trace(`extHostWorkspace#findFiles: fileSearch, extension: ${extensionId}, entryPoint: findFiles`);
let includePattern: string; let includePattern: string;
let includeFolder: string; let includeFolder: URI;
if (include) { if (include) {
if (typeof include === 'string') { if (typeof include === 'string') {
includePattern = include; includePattern = include;
} else { } else {
includePattern = include.pattern; includePattern = include.pattern;
includeFolder = include.base;
// include.base must be an absolute path
includeFolder = include.baseFolder || URI.file(include.base);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册