Skip to content

Commit 705bd06

Browse files
committed
feat: vue dynamic snippets
1 parent 7dccc17 commit 705bd06

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

src/snippets/index.ts

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { extensions } from 'vscode';
1+
import { extensions, MarkdownString, languages, CompletionItem, CompletionItemKind, Position, TextDocument, Range, DocumentHighlight, DocumentHighlightKind } from 'vscode';
22
import * as os from 'os';
33
import { existsSync, move, mkdirSync, readdirSync, removeSync } from 'fs-extra';
44
import { join, resolve } from 'pathe';
5-
import { getConfiguration } from '../utils';
5+
import { getConfiguration, languageSelector, generateVueFileBasicTemplate } from '../utils';
66

77
export enum SnippetSource {
88
nuxt = 'Nuxt',
@@ -48,3 +48,51 @@ export const toggleSnippets = async () => {
4848
await manageSnippetState(SnippetSource.nuxt, snippetsConfigurations.nuxt);
4949
await manageSnippetState(SnippetSource.nitro, snippetsConfigurations.nitro);
5050
}
51+
52+
53+
export const vuePageTemplate = languages.registerCompletionItemProvider(
54+
{ language: 'vue' },
55+
{
56+
provideCompletionItems(document: TextDocument, position: Position) {
57+
const completionItem = new CompletionItem('vueBasePage', CompletionItemKind.Snippet);
58+
completionItem.detail = 'Generate a Vue file template';
59+
60+
const template = generateVueFileBasicTemplate('page');
61+
62+
// Create a MarkdownString for documentation with code highlighting
63+
const documentation = new MarkdownString();
64+
documentation.appendMarkdown(`Generate a Vue file template according to your Nuxt configuration.\n\n`);
65+
documentation.appendCodeblock(template, 'vue'); // Specify 'vue' as the language for code block highlighting
66+
67+
completionItem.documentation = documentation;
68+
completionItem.kind = CompletionItemKind.Snippet;
69+
completionItem.insertText = template;
70+
71+
return [completionItem];
72+
}
73+
}
74+
);
75+
76+
77+
export const vueBaseTemplate = languages.registerCompletionItemProvider(
78+
{ language: 'vue' },
79+
{
80+
provideCompletionItems(document: TextDocument, position: Position) {
81+
const completionItem = new CompletionItem('vueBaseLayout', CompletionItemKind.Snippet);
82+
completionItem.detail = 'Generate a Vue file template';
83+
84+
const template = generateVueFileBasicTemplate('layout');
85+
86+
// Create a MarkdownString for documentation with code highlighting
87+
const documentation = new MarkdownString();
88+
documentation.appendMarkdown(`Generate a Vue file template according to your Nuxt configuration.\n\n`);
89+
documentation.appendCodeblock(template, 'vue'); // Specify 'vue' as the language for code block highlighting
90+
91+
completionItem.documentation = documentation;
92+
completionItem.kind = CompletionItemKind.Snippet;
93+
completionItem.insertText = template;
94+
95+
return [completionItem];
96+
}
97+
}
98+
);

ui/build/assets/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)