mirror of
https://github.com/Microsoft/vscode
synced 2024-10-13 23:09:01 +00:00
Support workspace relative emmet ext path (#19408)
This commit is contained in:
parent
acc4c44428
commit
6d8617eb38
|
@ -12,7 +12,7 @@ import { ICommandKeybindingsOptions } from 'vs/editor/common/config/config';
|
|||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { grammarsExtPoint, ITMSyntaxExtensionPoint } from 'vs/editor/node/textMate/TMGrammars';
|
||||
import { IModeService } from 'vs/editor/common/services/modeService';
|
||||
|
||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
import { EditorAccessor, IGrammarContributions } from 'vs/workbench/parts/emmet/node/editorAccessor';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { IExtensionService, ExtensionPointContribution } from 'vs/platform/extensions/common/extensions';
|
||||
|
@ -69,10 +69,13 @@ class LazyEmmet {
|
|||
private static snippetsFromFile = {};
|
||||
private static syntaxProfilesFromFile = {};
|
||||
private static preferencesFromFile = {};
|
||||
private static workspaceRoot = '';
|
||||
|
||||
public static withConfiguredEmmet(configurationService: IConfigurationService,
|
||||
messageService: IMessageService,
|
||||
workspaceRoot: string,
|
||||
callback: (_emmet: typeof emmet) => void): TPromise<void> {
|
||||
LazyEmmet.workspaceRoot = workspaceRoot;
|
||||
return LazyEmmet._INSTANCE.withEmmetPreferences(configurationService, messageService, callback);
|
||||
}
|
||||
|
||||
|
@ -133,11 +136,15 @@ class LazyEmmet {
|
|||
LazyEmmet.syntaxProfilesFromFile = {};
|
||||
|
||||
if (extPath && extPath.trim()) {
|
||||
return pfs.dirExists(LazyEmmet.extensionsPath).then(exists => {
|
||||
let dirPath = path.isAbsolute(extPath) ? extPath : path.join(LazyEmmet.workspaceRoot, extPath);
|
||||
let snippetsPath = path.join(dirPath, 'snippets.json');
|
||||
let syntaxProfilesPath = path.join(dirPath, 'syntaxProfiles.json');
|
||||
let preferencesPath = path.join(dirPath, 'preferences.json');
|
||||
return pfs.dirExists(dirPath).then(exists => {
|
||||
if (exists) {
|
||||
let snippetsPromise = this.getEmmetCustomization('snippets.json').then(value => LazyEmmet.snippetsFromFile = value);
|
||||
let profilesPromise = this.getEmmetCustomization('syntaxProfiles.json').then(value => LazyEmmet.syntaxProfilesFromFile = value);
|
||||
let preferencesPromise = this.getEmmetCustomization('preferences.json').then(value => LazyEmmet.preferencesFromFile = value);
|
||||
let snippetsPromise = this.getEmmetCustomization(snippetsPath).then(value => LazyEmmet.snippetsFromFile = value);
|
||||
let profilesPromise = this.getEmmetCustomization(syntaxProfilesPath).then(value => LazyEmmet.syntaxProfilesFromFile = value);
|
||||
let preferencesPromise = this.getEmmetCustomization(preferencesPath).then(value => LazyEmmet.preferencesFromFile = value);
|
||||
|
||||
return TPromise.join([snippetsPromise, profilesPromise, preferencesPromise]);
|
||||
}
|
||||
|
@ -148,8 +155,7 @@ class LazyEmmet {
|
|||
return TPromise.as(void 0);
|
||||
}
|
||||
|
||||
private getEmmetCustomization(fileName: string): TPromise<any> {
|
||||
let filePath = path.join(LazyEmmet.extensionsPath, fileName);
|
||||
private getEmmetCustomization(filePath: string): TPromise<any> {
|
||||
return pfs.fileExists(filePath).then(fileExists => {
|
||||
if (fileExists) {
|
||||
return pfs.readFile(filePath).then(buff => {
|
||||
|
@ -162,7 +168,6 @@ class LazyEmmet {
|
|||
return parsedData;
|
||||
});
|
||||
}
|
||||
this._messageService.show(Severity.Error, `The file "${filePath}" from emmet.extensionsPath does not exist.`);
|
||||
return {};
|
||||
});
|
||||
}
|
||||
|
@ -216,6 +221,8 @@ export abstract class EmmetEditorAction extends EditorAction {
|
|||
const extensionService = accessor.get(IExtensionService);
|
||||
const modeService = accessor.get(IModeService);
|
||||
const messageService = accessor.get(IMessageService);
|
||||
const contextService = accessor.get(IWorkspaceContextService);
|
||||
const workspaceRoot = contextService.getWorkspace() ? contextService.getWorkspace().resource.fsPath : '';
|
||||
|
||||
return this._withGrammarContributions(extensionService).then((grammarContributions) => {
|
||||
|
||||
|
@ -232,7 +239,7 @@ export abstract class EmmetEditorAction extends EditorAction {
|
|||
return;
|
||||
}
|
||||
|
||||
return LazyEmmet.withConfiguredEmmet(configurationService, messageService, (_emmet) => {
|
||||
return LazyEmmet.withConfiguredEmmet(configurationService, messageService, workspaceRoot, (_emmet) => {
|
||||
editorAccessor.onBeforeEmmetAction();
|
||||
instantiationService.invokeFunction((accessor) => {
|
||||
this.runEmmetAction(accessor, new EmmetActionContext(editor, _emmet, editorAccessor));
|
||||
|
|
Loading…
Reference in a new issue