mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Merge from vscode 011858832762aaff245b2336fb1c38166e7a10fb (#4663)
This commit is contained in:
@@ -21,7 +21,7 @@ import * as types from 'vs/base/common/types';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import * as extfs from 'vs/base/node/extfs';
|
||||
import * as flow from 'vs/base/node/flow';
|
||||
import { IFileQuery, IFolderQuery, IProgress, ISearchEngineStats, IRawFileMatch, ISearchEngine, ISearchEngineSuccess } from 'vs/workbench/services/search/common/search';
|
||||
import { IFileQuery, IFolderQuery, IProgressMessage, ISearchEngineStats, IRawFileMatch, ISearchEngine, ISearchEngineSuccess } from 'vs/workbench/services/search/common/search';
|
||||
import { spawnRipgrepCmd } from './ripgrepFileSearch';
|
||||
|
||||
interface IDirectoryEntry {
|
||||
@@ -106,7 +106,7 @@ export class FileWalker {
|
||||
this.isCanceled = true;
|
||||
}
|
||||
|
||||
walk(folderQueries: IFolderQuery[], extraFiles: URI[], onResult: (result: IRawFileMatch) => void, onMessage: (message: IProgress) => void, done: (error: Error | null, isLimitHit: boolean) => void): void {
|
||||
walk(folderQueries: IFolderQuery[], extraFiles: URI[], onResult: (result: IRawFileMatch) => void, onMessage: (message: IProgressMessage) => void, done: (error: Error | null, isLimitHit: boolean) => void): void {
|
||||
this.fileWalkSW = StopWatch.create(false);
|
||||
|
||||
// Support that the file pattern is a full path to a file that exists
|
||||
@@ -154,7 +154,7 @@ export class FileWalker {
|
||||
}
|
||||
}
|
||||
|
||||
private cmdTraversal(folderQuery: IFolderQuery, onResult: (result: IRawFileMatch) => void, onMessage: (message: IProgress) => void, cb: (err?: Error) => void): void {
|
||||
private cmdTraversal(folderQuery: IFolderQuery, onResult: (result: IRawFileMatch) => void, onMessage: (message: IProgressMessage) => void, cb: (err?: Error) => void): void {
|
||||
const rootFolder = folderQuery.folder.fsPath;
|
||||
const isMac = platform.isMacintosh;
|
||||
let cmd: childProcess.ChildProcess;
|
||||
@@ -285,7 +285,7 @@ export class FileWalker {
|
||||
});
|
||||
}
|
||||
|
||||
private collectStdout(cmd: childProcess.ChildProcess, encoding: string, onMessage: (message: IProgress) => void, cb: (err: Error | null, stdout?: string, last?: boolean) => void): void {
|
||||
private collectStdout(cmd: childProcess.ChildProcess, encoding: string, onMessage: (message: IProgressMessage) => void, cb: (err: Error | null, stdout?: string, last?: boolean) => void): void {
|
||||
let onData = (err: Error | null, stdout?: string, last?: boolean) => {
|
||||
if (err || last) {
|
||||
onData = () => { };
|
||||
@@ -590,7 +590,7 @@ export class Engine implements ISearchEngine<IRawFileMatch> {
|
||||
this.walker = new FileWalker(config);
|
||||
}
|
||||
|
||||
search(onResult: (result: IRawFileMatch) => void, onProgress: (progress: IProgress) => void, done: (error: Error, complete: ISearchEngineSuccess) => void): void {
|
||||
search(onResult: (result: IRawFileMatch) => void, onProgress: (progress: IProgressMessage) => void, done: (error: Error, complete: ISearchEngineSuccess) => void): void {
|
||||
this.walker.walk(this.folderQueries, this.extraFiles, onResult, onProgress, (err: Error, isLimitHit: boolean) => {
|
||||
done(err, {
|
||||
limitHit: isLimitHit,
|
||||
|
||||
@@ -344,7 +344,7 @@ export class FileSearchManager {
|
||||
engine.cancel();
|
||||
});
|
||||
|
||||
const _onResult = match => {
|
||||
const _onResult = (match: IInternalFileMatch) => {
|
||||
if (match) {
|
||||
batch.push(match);
|
||||
if (batchSize > 0 && batch.length >= batchSize) {
|
||||
|
||||
@@ -17,14 +17,14 @@ import * as strings from 'vs/base/common/strings';
|
||||
import { URI, UriComponents } from 'vs/base/common/uri';
|
||||
import { compareItemsByScore, IItemAccessor, prepareQuery, ScorerCache } from 'vs/base/parts/quickopen/common/quickOpenScorer';
|
||||
import { MAX_FILE_SIZE } from 'vs/platform/files/node/fileConstants';
|
||||
import { ICachedSearchStats, IFileQuery, IFileSearchStats, IFolderQuery, IProgress, IRawFileQuery, IRawQuery, IRawTextQuery, ITextQuery, IFileSearchProgressItem, IRawFileMatch, IRawSearchService, ISearchEngine, ISearchEngineSuccess, ISerializedFileMatch, ISerializedSearchComplete, ISerializedSearchProgressItem, ISerializedSearchSuccess } from 'vs/workbench/services/search/common/search';
|
||||
import { ICachedSearchStats, IFileQuery, IFileSearchStats, IFolderQuery, IProgressMessage, IRawFileQuery, IRawQuery, IRawTextQuery, ITextQuery, IFileSearchProgressItem, IRawFileMatch, IRawSearchService, ISearchEngine, ISearchEngineSuccess, ISerializedFileMatch, ISerializedSearchComplete, ISerializedSearchProgressItem, ISerializedSearchSuccess } from 'vs/workbench/services/search/common/search';
|
||||
import { Engine as FileSearchEngine } from 'vs/workbench/services/search/node/fileSearch';
|
||||
import { TextSearchEngineAdapter } from 'vs/workbench/services/search/node/textSearchAdapter';
|
||||
|
||||
gracefulFs.gracefulify(fs);
|
||||
|
||||
type IProgressCallback = (p: ISerializedSearchProgressItem) => void;
|
||||
type IFileProgressCallback = (p: IFileSearchProgressItem) => void;
|
||||
export type IProgressCallback = (p: ISerializedSearchProgressItem) => void;
|
||||
export type IFileProgressCallback = (p: IFileSearchProgressItem) => void;
|
||||
|
||||
export class SearchService implements IRawSearchService {
|
||||
|
||||
@@ -97,7 +97,7 @@ export class SearchService implements IRawSearchService {
|
||||
resultCount++;
|
||||
progressCallback(this.rawMatchToSearchItem(<IRawFileMatch>progress));
|
||||
} else {
|
||||
progressCallback(<IProgress>progress);
|
||||
progressCallback(<IProgressMessage>progress);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -383,13 +383,13 @@ export class SearchService implements IRawSearchService {
|
||||
cancel() {
|
||||
// Do nothing
|
||||
}
|
||||
then(resolve, reject) {
|
||||
then(resolve: any, reject: any) {
|
||||
return promise.then(resolve, reject);
|
||||
}
|
||||
catch(reject?) {
|
||||
catch(reject?: any) {
|
||||
return this.then(undefined, reject);
|
||||
}
|
||||
finally(onFinally) {
|
||||
finally(onFinally: any) {
|
||||
return promise.finally(onFinally);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -42,7 +42,7 @@ function searchRangeToRange(range: SearchRange): Range {
|
||||
}
|
||||
|
||||
export class Position {
|
||||
constructor(readonly line, readonly character) { }
|
||||
constructor(readonly line: number, readonly character: number) { }
|
||||
|
||||
isBefore(other: Position): boolean { return false; }
|
||||
isBeforeOrEqual(other: Position): boolean { return false; }
|
||||
|
||||
@@ -165,10 +165,11 @@ export class RipgrepParser extends EventEmitter {
|
||||
}
|
||||
|
||||
|
||||
on(event: 'result', listener: (result: vscode.TextSearchResult) => void);
|
||||
on(event: 'hitLimit', listener: () => void);
|
||||
on(event: string, listener: (...args: any[]) => void) {
|
||||
on(event: 'result', listener: (result: vscode.TextSearchResult) => void): this;
|
||||
on(event: 'hitLimit', listener: () => void): this;
|
||||
on(event: string, listener: (...args: any[]) => void): this {
|
||||
super.on(event, listener);
|
||||
return this;
|
||||
}
|
||||
|
||||
handleData(data: Buffer | string): void {
|
||||
|
||||
@@ -26,7 +26,7 @@ import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { deserializeSearchError, FileMatch, ICachedSearchStats, IFileMatch, IFileQuery, IFileSearchStats, IFolderQuery, IProgress, IRawSearchService, ISearchComplete, ISearchConfiguration, ISearchEngineStats, ISearchProgressItem, ISearchQuery, ISearchResultProvider, ISearchService, ISerializedFileMatch, ISerializedSearchComplete, ISerializedSearchProgressItem, isSerializedSearchComplete, isSerializedSearchSuccess, ITextQuery, pathIncludedInQuery, QueryType, SearchError, SearchErrorCode, SearchProviderType } from 'vs/workbench/services/search/common/search';
|
||||
import { deserializeSearchError, FileMatch, ICachedSearchStats, IFileMatch, IFileQuery, IFileSearchStats, IFolderQuery, IProgressMessage, IRawSearchService, ISearchComplete, ISearchConfiguration, ISearchEngineStats, ISearchProgressItem, ISearchQuery, ISearchResultProvider, ISearchService, ISerializedFileMatch, ISerializedSearchComplete, ISerializedSearchProgressItem, isSerializedSearchComplete, isSerializedSearchSuccess, ITextQuery, pathIncludedInQuery, QueryType, SearchError, SearchErrorCode, SearchProviderType, isFileMatch, isProgressMessage } from 'vs/workbench/services/search/common/search';
|
||||
import { addContextToEditorMatches, editorMatchesToTextSearchResults } from 'vs/workbench/services/search/common/searchHelpers';
|
||||
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
|
||||
import { SearchChannelClient } from './searchIpc';
|
||||
@@ -78,18 +78,18 @@ export class SearchService extends Disposable implements ISearchService {
|
||||
arrays.coalesce(localResults.values()).forEach(onProgress);
|
||||
}
|
||||
|
||||
const onProviderProgress = progress => {
|
||||
if (progress.resource) {
|
||||
const onProviderProgress = (progress: ISearchProgressItem) => {
|
||||
if (isFileMatch(progress)) {
|
||||
// Match
|
||||
if (!localResults.has(progress.resource) && onProgress) { // don't override local results
|
||||
onProgress(progress);
|
||||
}
|
||||
} else if (onProgress) {
|
||||
// Progress
|
||||
onProgress(<IProgress>progress);
|
||||
onProgress(<IProgressMessage>progress);
|
||||
}
|
||||
|
||||
if (progress.message) {
|
||||
if (isProgressMessage(progress)) {
|
||||
this.logService.debug('SearchService#search', progress.message);
|
||||
}
|
||||
};
|
||||
@@ -142,7 +142,7 @@ export class SearchService extends Disposable implements ISearchService {
|
||||
return <ISearchComplete>{
|
||||
limitHit: completes[0] && completes[0].limitHit,
|
||||
stats: completes[0].stats,
|
||||
results: arrays.flatten(completes.map(c => c.results))
|
||||
results: arrays.flatten(completes.map((c: ISearchComplete) => c.results))
|
||||
};
|
||||
});
|
||||
|
||||
@@ -497,7 +497,7 @@ export class DiskSearch implements ISearchResultProvider {
|
||||
let event: Event<ISerializedSearchProgressItem | ISerializedSearchComplete>;
|
||||
event = this.raw.fileSearch(query);
|
||||
|
||||
const onProgress = (p: IProgress) => {
|
||||
const onProgress = (p: IProgressMessage) => {
|
||||
if (p.message) {
|
||||
// Should only be for logs
|
||||
this.logService.debug('SearchService#search', p.message);
|
||||
@@ -561,7 +561,7 @@ export class DiskSearch implements ISearchResultProvider {
|
||||
|
||||
// Progress
|
||||
else if (onProgress) {
|
||||
onProgress(<IProgress>ev);
|
||||
onProgress(<IProgressMessage>ev);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import { CancellationToken } from 'vs/base/common/cancellation';
|
||||
import * as extfs from 'vs/base/node/extfs';
|
||||
import { IFileMatch, IProgress, ITextQuery, ITextSearchStats, ITextSearchMatch, ISerializedFileMatch, ISerializedSearchSuccess } from 'vs/workbench/services/search/common/search';
|
||||
import { IFileMatch, IProgressMessage, ITextQuery, ITextSearchStats, ITextSearchMatch, ISerializedFileMatch, ISerializedSearchSuccess } from 'vs/workbench/services/search/common/search';
|
||||
import { RipgrepTextSearchEngine } from 'vs/workbench/services/search/node/ripgrepTextSearchEngine';
|
||||
import { TextSearchManager } from 'vs/workbench/services/search/node/textSearchManager';
|
||||
|
||||
@@ -14,7 +14,7 @@ export class TextSearchEngineAdapter {
|
||||
constructor(private query: ITextQuery) {
|
||||
}
|
||||
|
||||
search(token: CancellationToken, onResult: (matches: ISerializedFileMatch[]) => void, onMessage: (message: IProgress) => void): Promise<ISerializedSearchSuccess> {
|
||||
search(token: CancellationToken, onResult: (matches: ISerializedFileMatch[]) => void, onMessage: (message: IProgressMessage) => void): Promise<ISerializedSearchSuccess> {
|
||||
if ((!this.query.folderQueries || !this.query.folderQueries.length) && (!this.query.extraFileResources || !this.query.extraFileResources.length)) {
|
||||
return Promise.resolve(<ISerializedSearchSuccess>{
|
||||
type: 'success',
|
||||
@@ -26,7 +26,7 @@ export class TextSearchEngineAdapter {
|
||||
}
|
||||
|
||||
const pretendOutputChannel = {
|
||||
appendLine(msg) {
|
||||
appendLine(msg: string) {
|
||||
onMessage({ message: msg });
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user