Skip to content

Commit afcd008

Browse files
authored
do not suggest lang when editing attributes (#469)
1 parent 98b396c commit afcd008

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

packages/language-server/src/plugins/html/HTMLPlugin.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
Position,
77
SymbolInformation,
88
CompletionItem,
9+
CompletionItemKind,
910
} from 'vscode-languageserver';
1011
import {
1112
DocumentManager,
@@ -21,6 +22,7 @@ export class HTMLPlugin implements HoverProvider, CompletionsProvider {
2122
private configManager: LSConfigManager;
2223
private lang = getLanguageService({ customDataProviders: [svelteHtmlDataProvider] });
2324
private documents = new WeakMap<Document, HTMLDocument>();
25+
private styleScriptTemplate = new Set(['template', 'style', 'script']);
2426

2527
constructor(docManager: DocumentManager, configManager: LSConfigManager) {
2628
this.configManager = configManager;
@@ -84,8 +86,10 @@ export class HTMLPlugin implements HoverProvider, CompletionsProvider {
8486
}
8587

8688
private getLangCompletions(completions: CompletionItem[]): CompletionItem[] {
87-
const styleScriptTemplateCompletions = completions.filter((completion) =>
88-
['template', 'style', 'script'].includes(completion.label),
89+
const styleScriptTemplateCompletions = completions.filter(
90+
(completion) =>
91+
completion.kind === CompletionItemKind.Property &&
92+
this.styleScriptTemplate.has(completion.label),
8993
);
9094
const langCompletions: CompletionItem[] = [];
9195
addLangCompletion('script', ['ts']);

packages/language-server/test/plugins/html/HTMLPlugin.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,23 @@ describe('HTML Plugin', () => {
9191
const tagCompletion = plugin.doTagComplete(document, Position.create(0, 21));
9292
assert.strictEqual(tagCompletion, '$0</div>');
9393
});
94+
95+
it('does provide lang in completions', async () => {
96+
const { plugin, document } = setup('<sty');
97+
98+
const completions = plugin.getCompletions(document, Position.create(0, 4));
99+
assert.ok(Array.isArray(completions && completions.items));
100+
assert.ok(completions!.items.find((item) => item.label === 'style (lang="less")'));
101+
});
102+
103+
it('does not provide lang in completions for attributes', async () => {
104+
const { plugin, document } = setup('<div sty');
105+
106+
const completions = plugin.getCompletions(document, Position.create(0, 8));
107+
assert.ok(Array.isArray(completions && completions.items));
108+
assert.strictEqual(
109+
completions!.items.find((item) => item.label === 'style (lang="less")'),
110+
undefined,
111+
);
112+
});
94113
});

0 commit comments

Comments
 (0)