Skip to content

Commit

Permalink
fix: emmet not working in style block
Browse files Browse the repository at this point in the history
close #1145
  • Loading branch information
johnsoncodehk committed Apr 21, 2022
1 parent b9a046f commit 217abe1
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 9 deletions.
1 change: 1 addition & 0 deletions packages/vue-language-service-types/src/index.ts
Expand Up @@ -65,6 +65,7 @@ export type EmbeddedLanguageServicePlugin = {

complete?: {
triggerCharacters?: string[],
isAdditional?: boolean,
on?(document: TextDocument, position: vscode.Position, context?: vscode.CompletionContext): NullableResult<vscode.CompletionList>,
resolve?(item: vscode.CompletionItem, newPosition?: vscode.Position): NotNullableResult<vscode.CompletionItem>,
},
Expand Down
10 changes: 5 additions & 5 deletions packages/vue-language-service/src/languageFeatures/complete.ts
Expand Up @@ -143,15 +143,15 @@ export function register(context: LanguageServiceRuntimeContext) {
if (completionContext?.triggerCharacter && !plugin.complete.triggerCharacters?.includes(completionContext.triggerCharacter))
continue;

if (cache!.mainCompletion && (!plugin.context?.isAdditionalCompletion || cache?.mainCompletion.documentUri !== sourceMap.mappedDocument.uri))
if (cache!.mainCompletion && (!plugin.complete.isAdditional || cache?.mainCompletion.documentUri !== sourceMap.mappedDocument.uri))
continue;

const embeddedCompletionList = await plugin.complete?.on(sourceMap.mappedDocument, embeddedRange.start, completionContext);

if (!embeddedCompletionList || !embeddedCompletionList.items.length)
continue;

if (!plugin.context?.isAdditionalCompletion) {
if (!plugin.complete.isAdditional) {
cache!.mainCompletion = { documentUri: sourceMap.mappedDocument.uri };
}

Expand Down Expand Up @@ -202,15 +202,15 @@ export function register(context: LanguageServiceRuntimeContext) {
if (completionContext?.triggerCharacter && !plugin.complete.triggerCharacters?.includes(completionContext.triggerCharacter))
continue;

if (cache.mainCompletion && (!plugin.context?.isAdditionalCompletion || cache.mainCompletion.documentUri !== document.uri))
if (cache.mainCompletion && (!plugin.complete.isAdditional || cache.mainCompletion.documentUri !== document.uri))
continue;

const completionList = await plugin.complete?.on(document, position, completionContext);

if (!completionList || !completionList.items.length)
continue;

if (!plugin.context?.isAdditionalCompletion) {
if (!plugin.complete.isAdditional) {
cache.mainCompletion = { documentUri: document.uri };
}

Expand Down Expand Up @@ -240,7 +240,7 @@ export function register(context: LanguageServiceRuntimeContext) {
return combineCompletionList(cache.data.map(cacheData => cacheData.list));

function sortPlugins(a: LanguageServicePlugin, b: LanguageServicePlugin) {
return (b.context?.isAdditionalCompletion ? -1 : 1) - (a.context?.isAdditionalCompletion ? -1 : 1);
return (b.complete?.isAdditional ? -1 : 1) - (a.complete?.isAdditional ? -1 : 1);
}

function combineCompletionList(lists: vscode.CompletionList[]) {
Expand Down
5 changes: 1 addition & 4 deletions packages/vue-language-service/src/languageService.ts
Expand Up @@ -58,13 +58,10 @@ export type LanguageServicePlugin = ReturnType<typeof defineLanguageServicePlugi

let pluginId = 0;

function defineLanguageServicePlugin<T extends EmbeddedLanguageServicePlugin>(plugin: T, context?: {
isAdditionalCompletion?: boolean,
}) {
function defineLanguageServicePlugin<T extends EmbeddedLanguageServicePlugin>(plugin: T) {
return {
id: pluginId++,
...plugin,
context,
};
}

Expand Down
2 changes: 2 additions & 0 deletions packages/vue-language-service/src/plugins/emmet.ts
Expand Up @@ -9,6 +9,8 @@ export default function (): EmbeddedLanguageServicePlugin {

complete: {

isAdditional: true,

async on(textDocument, position) {

const syntax = emmet.getEmmetMode(textDocument.languageId === 'vue' ? 'html' : textDocument.languageId);
Expand Down

0 comments on commit 217abe1

Please sign in to comment.