@shopify/theme-language-server-common
Version:
<h1 align="center" style="position: relative;" > <br> <img src="https://github.com/Shopify/theme-check-vscode/blob/main/images/shopify_glyph.png?raw=true" alt="logo" width="141" height="160"> <br> Theme Language Server </h1>
32 lines • 1.37 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.RenderSnippetCompletionProvider = void 0;
const liquid_html_parser_1 = require("@shopify/liquid-html-parser");
const vscode_languageserver_1 = require("vscode-languageserver");
class RenderSnippetCompletionProvider {
constructor(getSnippetNamesForURI = async () => []) {
this.getSnippetNamesForURI = getSnippetNamesForURI;
}
async completions(params) {
if (!params.completionContext)
return [];
const { node } = params.completionContext;
if (!node || node.type !== liquid_html_parser_1.NodeTypes.RenderMarkup || node.snippet.type !== liquid_html_parser_1.NodeTypes.String) {
return [];
}
const options = await this.getSnippetNamesForURI(params.textDocument.uri);
const partial = node.snippet.value;
return options
.filter((option) => option.startsWith(partial))
.map((option) => ({
label: option,
kind: vscode_languageserver_1.CompletionItemKind.Snippet,
documentation: {
kind: 'markdown',
value: `snippets/${option}.liquid`,
},
}));
}
}
exports.RenderSnippetCompletionProvider = RenderSnippetCompletionProvider;
//# sourceMappingURL=RenderSnippetCompletionProvider.js.map
;