mirror of
https://github.com/Microsoft/vscode
synced 2024-08-28 05:19:39 +00:00
parent
6bcc6c0435
commit
f2584c364d
|
@ -150,6 +150,10 @@
|
|||
"name": "vs/workbench/services/configuration",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/configurationResolver",
|
||||
"project": "vscode-workbench"
|
||||
},
|
||||
{
|
||||
"name": "vs/workbench/services/crashReporter",
|
||||
"project": "vscode-workbench"
|
||||
|
@ -207,4 +211,4 @@
|
|||
"project": "vscode-workbench"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import { relative } from 'path';
|
|||
import { IProcessEnvironment, isWindows } from 'vs/base/common/platform';
|
||||
import { normalizeDriveLetter } from 'vs/base/common/labels';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
import { localize } from 'vs/nls';
|
||||
|
||||
class VariableResolver {
|
||||
static VARIABLE_REGEXP = /\$\{(.*?)\}/g;
|
||||
|
@ -84,34 +85,81 @@ class VariableResolver {
|
|||
|
||||
switch (variable) {
|
||||
case 'workspaceRoot':
|
||||
case 'workspaceFolder':
|
||||
return context ? normalizeDriveLetter(context.uri.fsPath) : match;
|
||||
case 'cwd':
|
||||
return context ? normalizeDriveLetter(context.uri.fsPath) : process.cwd();
|
||||
case 'workspaceRootFolderName':
|
||||
case 'workspaceFolderBasename':
|
||||
return context ? paths.basename(context.uri.fsPath) : match;
|
||||
case 'lineNumber':
|
||||
return this.getLineNumber() || match;
|
||||
case 'selectedText':
|
||||
return this.getSelectedText() || match;
|
||||
case 'file':
|
||||
return filePath || match;
|
||||
case 'relativeFile':
|
||||
return context ? paths.normalize(relative(context.uri.fsPath, filePath)) : filePath || match;
|
||||
case 'fileDirname':
|
||||
return filePath ? paths.dirname(filePath) : match;
|
||||
case 'fileExtname':
|
||||
return filePath ? paths.extname(filePath) : match;
|
||||
case 'fileBasename':
|
||||
return filePath ? paths.basename(filePath) : match;
|
||||
case 'fileBasenameNoExtension': {
|
||||
if (!filePath) {
|
||||
return match;
|
||||
case 'workspaceFolder': {
|
||||
if (context) {
|
||||
return normalizeDriveLetter(context.uri.fsPath);
|
||||
}
|
||||
if (this.workspaceContextService.getWorkspace().folders.length > 1) {
|
||||
throw new Error(localize('canNotResolveWorkspaceFolderMultiRoot', "${workspaceFolder} can not be resolved in a multi folder workspace. Scope this variables using : and a folder name."));
|
||||
}
|
||||
|
||||
const basename = paths.basename(filePath);
|
||||
return basename.slice(0, basename.length - paths.extname(basename).length);
|
||||
throw new Error(localize('canNotResolveWorkspaceFolder', "${workspaceFolder} can not be resolved. Please open a folder."));
|
||||
} case 'cwd':
|
||||
return context ? normalizeDriveLetter(context.uri.fsPath) : process.cwd();
|
||||
case 'workspaceRootFolderName':
|
||||
case 'workspaceFolderBasename': {
|
||||
if (context) {
|
||||
return paths.basename(context.uri.fsPath);
|
||||
}
|
||||
if (this.workspaceContextService.getWorkspace().folders.length > 1) {
|
||||
throw new Error(localize('canNotResolveFolderBasenameMultiRoot', "${workspaceFolderBasename} can not be resolved in a multi folder workspace. Scope this variables using : and a folder name."));
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveFolderBasename', "${workspaceFolderBasename} can not be resolved. Please open a folder."));
|
||||
} case 'lineNumber': {
|
||||
const lineNumber = this.getLineNumber();
|
||||
if (lineNumber) {
|
||||
return lineNumber;
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveLineNumber', "${lineNumber} can not be resolved, please open an editor."));
|
||||
} case 'selectedText': {
|
||||
const selectedText = this.getSelectedText();
|
||||
if (selectedText) {
|
||||
return selectedText;
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveSelectedText', "${selectedText} can not be resolved, please open an editor."));
|
||||
} case 'file': {
|
||||
if (filePath) {
|
||||
return filePath;
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveFile', "${file} can not be resolved, please open an editor."));
|
||||
} case 'relativeFile': {
|
||||
if (context && filePath) {
|
||||
return paths.normalize(relative(context.uri.fsPath, filePath));
|
||||
}
|
||||
if (filePath) {
|
||||
return filePath;
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveRelativeFile', "${relativeFile} can not be resolved, please open an editor."));
|
||||
} case 'fileDirname': {
|
||||
if (filePath) {
|
||||
return paths.dirname(filePath);
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveFileDirname', "${fileDirname} can not be resolved, please open an editor."));
|
||||
} case 'fileExtname': {
|
||||
if (filePath) {
|
||||
return paths.extname(filePath);
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveFileExtname', "${fileExtname} can not be resolved, please open an editor."));
|
||||
} case 'fileBasename': {
|
||||
if (filePath) {
|
||||
return paths.basename(filePath);
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveFileBasename', "${fileBasename} can not be resolved, please open an editor."));
|
||||
} case 'fileBasenameNoExtension': {
|
||||
if (filePath) {
|
||||
const basename = paths.basename(filePath);
|
||||
return basename.slice(0, basename.length - paths.extname(basename).length);
|
||||
}
|
||||
|
||||
throw new Error(localize('canNotResolveFileBasenameNoExtension', "${fileBasenameNoExtension} can not be resolved, please open an editor."));
|
||||
}
|
||||
case 'execPath':
|
||||
return this.environmentService.execPath;
|
||||
|
|
Loading…
Reference in a new issue