提交 9231a581 编写于 作者: R Rob Lourens

Fix #70132 - allow opening files with ~ path in quickopen

上级 65c437f0
...@@ -3,38 +3,38 @@ ...@@ -3,38 +3,38 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { IIconLabelValueOptions } from 'vs/base/browser/ui/iconLabel/iconLabel';
import { CancellationToken } from 'vs/base/common/cancellation';
import * as errors from 'vs/base/common/errors'; import * as errors from 'vs/base/common/errors';
import * as nls from 'vs/nls';
import { isAbsolute } from 'vs/base/common/path';
import * as objects from 'vs/base/common/objects';
import { defaultGenerator } from 'vs/base/common/idGenerator'; import { defaultGenerator } from 'vs/base/common/idGenerator';
import { URI } from 'vs/base/common/uri'; import { untildify } from 'vs/base/common/labels';
import { Schemas } from 'vs/base/common/network';
import * as objects from 'vs/base/common/objects';
import { isAbsolute } from 'vs/base/common/path';
import { basename, dirname } from 'vs/base/common/resources'; import { basename, dirname } from 'vs/base/common/resources';
import { IIconLabelValueOptions } from 'vs/base/browser/ui/iconLabel/iconLabel'; import { URI } from 'vs/base/common/uri';
import { IModeService } from 'vs/editor/common/services/modeService'; import { QuickOpenEntry, QuickOpenModel } from 'vs/base/parts/quickopen/browser/quickOpenModel';
import { IAutoFocus } from 'vs/base/parts/quickopen/common/quickOpen';
import { IPreparedQuery, prepareQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer';
import { IRange } from 'vs/editor/common/core/range';
import { getIconClasses } from 'vs/editor/common/services/getIconClasses'; import { getIconClasses } from 'vs/editor/common/services/getIconClasses';
import { IModelService } from 'vs/editor/common/services/modelService'; import { IModelService } from 'vs/editor/common/services/modelService';
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService'; import { IModeService } from 'vs/editor/common/services/modeService';
import { IAutoFocus } from 'vs/base/parts/quickopen/common/quickOpen'; import * as nls from 'vs/nls';
import { QuickOpenEntry, QuickOpenModel } from 'vs/base/parts/quickopen/browser/quickOpenModel';
import { QuickOpenHandler, EditorQuickOpenEntry } from 'vs/workbench/browser/quickopen';
import { QueryBuilder, IFileQueryBuilderOptions } from 'vs/workbench/contrib/search/common/queryBuilder';
import { EditorInput, IWorkbenchEditorConfiguration } from 'vs/workbench/common/editor';
import { IResourceInput } from 'vs/platform/editor/common/editor';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IResourceInput } from 'vs/platform/editor/common/editor';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { IFileService } from 'vs/platform/files/common/files';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ISearchService, IFileSearchStats, IFileQuery, ISearchComplete } from 'vs/workbench/services/search/common/search'; import { ILabelService } from 'vs/platform/label/common/label';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { EditorQuickOpenEntry, QuickOpenHandler } from 'vs/workbench/browser/quickopen';
import { IRange } from 'vs/editor/common/core/range'; import { EditorInput, IWorkbenchEditorConfiguration } from 'vs/workbench/common/editor';
import { IFileQueryBuilderOptions, QueryBuilder } from 'vs/workbench/contrib/search/common/queryBuilder';
import { getOutOfWorkspaceEditorResources } from 'vs/workbench/contrib/search/common/search'; import { getOutOfWorkspaceEditorResources } from 'vs/workbench/contrib/search/common/search';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { prepareQuery, IPreparedQuery } from 'vs/base/parts/quickopen/common/quickOpenScorer'; import { IFileQuery, IFileSearchStats, ISearchComplete, ISearchService } from 'vs/workbench/services/search/common/search';
import { IFileService } from 'vs/platform/files/common/files'; import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
import { ILabelService } from 'vs/platform/label/common/label';
import { untildify } from 'vs/base/common/labels';
import { CancellationToken } from 'vs/base/common/cancellation';
import { Schemas } from 'vs/base/common/network';
export class FileQuickOpenModel extends QuickOpenModel { export class FileQuickOpenModel extends QuickOpenModel {
...@@ -143,9 +143,6 @@ export class OpenFileHandler extends QuickOpenHandler { ...@@ -143,9 +143,6 @@ export class OpenFileHandler extends QuickOpenHandler {
return Promise.resolve(new FileQuickOpenModel([])); return Promise.resolve(new FileQuickOpenModel([]));
} }
// Untildify file pattern
query.value = untildify(query.value, this.environmentService.userHome);
// Do find results // Do find results
return this.doFindResults(query, token, this.cacheState.cacheKey, maxSortedResults); return this.doFindResults(query, token, this.cacheState.cacheKey, maxSortedResults);
} }
...@@ -187,13 +184,16 @@ export class OpenFileHandler extends QuickOpenHandler { ...@@ -187,13 +184,16 @@ export class OpenFileHandler extends QuickOpenHandler {
} }
private getAbsolutePathResult(query: IPreparedQuery): Promise<URI | undefined> { private getAbsolutePathResult(query: IPreparedQuery): Promise<URI | undefined> {
if (isAbsolute(query.original)) { const detildifiedQuery = untildify(query.original, this.environmentService.userHome);
if (isAbsolute(detildifiedQuery)) {
const workspaceFolders = this.contextService.getWorkspace().folders; const workspaceFolders = this.contextService.getWorkspace().folders;
const resource = workspaceFolders[0] && workspaceFolders[0].uri.scheme !== Schemas.file ? const resource = workspaceFolders[0] && workspaceFolders[0].uri.scheme !== Schemas.file ?
workspaceFolders[0].uri.with({ path: query.original }) : workspaceFolders[0].uri.with({ path: detildifiedQuery }) :
URI.file(query.original); URI.file(detildifiedQuery);
return this.fileService.resolveFile(resource).then(stat => stat.isDirectory ? undefined : resource, error => undefined); return this.fileService.resolveFile(resource).then(
stat => stat.isDirectory ? undefined : resource,
error => undefined);
} }
return Promise.resolve(undefined); return Promise.resolve(undefined);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册