Skip to content

Commit 536060a

Browse files
authoredSep 21, 2024··
fix: Nuxt components snippets activation (#166)
1 parent fb57733 commit 536060a

File tree

5 files changed

+68
-34
lines changed

5 files changed

+68
-34
lines changed
 

‎package.json

+11-3
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@
10431043
],
10441044
"snippets": [
10451045
{
1046-
"language": "vue",
1046+
"language": "html",
10471047
"path": "./snippets/nuxt/components.json"
10481048
},
10491049
{
@@ -1068,11 +1068,19 @@
10681068
},
10691069
{
10701070
"language": "javascript",
1071-
"path": "./snippets/nitro/imports.json"
1071+
"path": "./snippets/nitro/utils.json"
1072+
},
1073+
{
1074+
"language": "typescript",
1075+
"path": "./snippets/nitro/utils.json"
1076+
},
1077+
{
1078+
"language": "javascript",
1079+
"path": "./snippets/nitro/boilerplates.json"
10721080
},
10731081
{
10741082
"language": "typescript",
1075-
"path": "./snippets/nitro/imports.json"
1083+
"path": "./snippets/nitro/boilerplates.json"
10761084
}
10771085
]
10781086
},

‎snippets/Nuxt/components.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@
3333
],
3434
"description": "Nuxt | NuxtErrorBoundary"
3535
},
36-
"Nuxt | Template with ID": {
37-
"prefix": "templateWithId",
38-
"body": ["<template #$1>", " $2", "</template>"],
39-
"description": "Nuxt | Template with ID"
40-
},
4136
"Nuxt | NuxtLoadingIndicator": {
4237
"prefix": "nuxtLoadingIndicator",
4338
"body": ["<NuxtLoadingIndicator $1/>"],
@@ -77,5 +72,10 @@
7772
"prefix": "pageKey",
7873
"body": ["page-key=\"$1\""],
7974
"description": "Nuxt | pageKey"
75+
},
76+
"Nuxt | Template with ID": {
77+
"prefix": "templateWithId",
78+
"body": ["<template #$1>", " $2", "</template>"],
79+
"description": "Nuxt | Template with ID"
8080
}
8181
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"defineNitroPlugin": {
2+
"defineNitroPlugin": {
33
"prefix": "defineNitroPlugin",
44
"description": "Define Nitro Plugins",
55
"body": [
@@ -9,21 +9,6 @@
99
],
1010
"isFileTemplate": true
1111
},
12-
"getRouteRules": {
13-
"prefix": "getRouteRules",
14-
"description": "Get Route Rules",
15-
"body": ["const ${1:routeRules} = getRouteRules($2);"]
16-
},
17-
"useNitroApp": {
18-
"prefix": "useNitroApp",
19-
"description": "Use Nitro App",
20-
"body": ["const ${1:nitroApp} = useNitroApp();"]
21-
},
22-
"useStorage": {
23-
"prefix": "useStorage",
24-
"description": "Use Storage",
25-
"body": ["const ${1:storage} = useStorage();"]
26-
},
2712
"defineRenderHandler": {
2813
"prefix": "defineRenderHandler",
2914
"body": [
@@ -35,4 +20,4 @@
3520
],
3621
"description": "defineRenderHandler"
3722
}
38-
}
23+
}

‎snippets/nitro/utils.json

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"getRouteRules": {
3+
"prefix": "getRouteRules",
4+
"description": "Get Route Rules",
5+
"body": ["const ${1:routeRules} = getRouteRules($2);"]
6+
},
7+
"useNitroApp": {
8+
"prefix": "useNitroApp",
9+
"description": "Use Nitro App",
10+
"body": ["const ${1:nitro} = useNitroApp();"]
11+
},
12+
"useStorage": {
13+
"prefix": "useStorage",
14+
"description": "Use Storage",
15+
"body": ["const ${1:storage} = useStorage();"]
16+
}
17+
}

‎src/snippets/index.ts

+33-9
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { CompletionItem, CompletionItemKind, MarkdownString, extensions, languages } from 'vscode';
2-
import { resolve } from 'pathe';
3-
import { readPackageJSON, writePackageJSON } from 'pkg-types'
41
import { homedir } from 'node:os';
5-
import { generateVueFileBasicTemplate } from '../utils';
2+
import { resolve } from 'pathe';
3+
import { readPackageJSON, writePackageJSON } from 'pkg-types';
4+
import { CompletionItem, CompletionItemKind, MarkdownString, extensions, languages } from 'vscode';
5+
import { generateVueFileTemplate } from '../utils';
66

77
interface Snippet {
88
language: string;
@@ -17,7 +17,9 @@ export async function toggleSnippets(source: 'Nuxt' | 'Nitro', moveToDisabled: b
1717

1818
const extensionDir = resolve(homeDir, '.vscode', 'extensions', `${extensionName}-${nuxtrVersion}`);
1919
const pkgJsonPath = resolve(extensionDir, 'package.json');
20+
2021
const pkgJSON = await readPackageJSON(extensionDir);
22+
2123
let snippets: Snippet[] = pkgJSON?.contributes?.snippets || [];
2224
let disabledSnippets: Snippet[] = pkgJSON?.contributes?.disabled_snippets || [];
2325

@@ -48,15 +50,37 @@ languages.registerCompletionItemProvider(
4850
{ language: 'vue' },
4951
{
5052
provideCompletionItems() {
51-
const completionItem = new CompletionItem('vueBaseLayout', CompletionItemKind.Snippet);
53+
const completionItem = new CompletionItem('nuxtBaseLayout', CompletionItemKind.Snippet);
54+
completionItem.detail = 'Generate a Nuxt Layout template';
55+
56+
const template = generateVueFileTemplate('layout');
57+
58+
const documentation = new MarkdownString();
59+
documentation.appendMarkdown(`Generate a Nuxt layout template according to your Nuxtr configuration.\n\n`);
60+
documentation.appendCodeblock(template, 'vue');
61+
62+
completionItem.documentation = documentation;
63+
completionItem.kind = CompletionItemKind.Snippet;
64+
completionItem.insertText = template;
65+
66+
return [completionItem];
67+
}
68+
}
69+
);
70+
71+
72+
languages.registerCompletionItemProvider(
73+
{ language: 'vue' },
74+
{
75+
provideCompletionItems() {
76+
const completionItem = new CompletionItem('vueBase', CompletionItemKind.Snippet);
5277
completionItem.detail = 'Generate a Vue file template';
5378

54-
const template = generateVueFileBasicTemplate('layout');
79+
const template = generateVueFileTemplate('page');
5580

56-
// Create a MarkdownString for documentation with code highlighting
5781
const documentation = new MarkdownString();
5882
documentation.appendMarkdown(`Generate a Vue file template according to your Nuxtr configuration.\n\n`);
59-
documentation.appendCodeblock(template, 'vue'); // Specify 'vue' as the language for code block highlighting
83+
documentation.appendCodeblock(template, 'vue');
6084

6185
completionItem.documentation = documentation;
6286
completionItem.kind = CompletionItemKind.Snippet;
@@ -65,4 +89,4 @@ languages.registerCompletionItemProvider(
6589
return [completionItem];
6690
}
6791
}
68-
);
92+
);

0 commit comments

Comments
 (0)
Please sign in to comment.