Skip to content

Commit

Permalink
fix: Nuxt components snippets activation (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
adhamfarrag authored Sep 21, 2024
1 parent fb57733 commit 536060a
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 34 deletions.
14 changes: 11 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -1043,7 +1043,7 @@
],
"snippets": [
{
"language": "vue",
"language": "html",
"path": "./snippets/nuxt/components.json"
},
{
Expand All @@ -1068,11 +1068,19 @@
},
{
"language": "javascript",
"path": "./snippets/nitro/imports.json"
"path": "./snippets/nitro/utils.json"
},
{
"language": "typescript",
"path": "./snippets/nitro/utils.json"
},
{
"language": "javascript",
"path": "./snippets/nitro/boilerplates.json"
},
{
"language": "typescript",
"path": "./snippets/nitro/imports.json"
"path": "./snippets/nitro/boilerplates.json"
}
]
},
Expand Down
10 changes: 5 additions & 5 deletions snippets/Nuxt/components.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@
],
"description": "Nuxt | NuxtErrorBoundary"
},
"Nuxt | Template with ID": {
"prefix": "templateWithId",
"body": ["<template #$1>", " $2", "</template>"],
"description": "Nuxt | Template with ID"
},
"Nuxt | NuxtLoadingIndicator": {
"prefix": "nuxtLoadingIndicator",
"body": ["<NuxtLoadingIndicator $1/>"],
Expand Down Expand Up @@ -77,5 +72,10 @@
"prefix": "pageKey",
"body": ["page-key=\"$1\""],
"description": "Nuxt | pageKey"
},
"Nuxt | Template with ID": {
"prefix": "templateWithId",
"body": ["<template #$1>", " $2", "</template>"],
"description": "Nuxt | Template with ID"
}
}
19 changes: 2 additions & 17 deletions snippets/Nitro/imports.json → snippets/nitro/boilerplates.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"defineNitroPlugin": {
"defineNitroPlugin": {
"prefix": "defineNitroPlugin",
"description": "Define Nitro Plugins",
"body": [
Expand All @@ -9,21 +9,6 @@
],
"isFileTemplate": true
},
"getRouteRules": {
"prefix": "getRouteRules",
"description": "Get Route Rules",
"body": ["const ${1:routeRules} = getRouteRules($2);"]
},
"useNitroApp": {
"prefix": "useNitroApp",
"description": "Use Nitro App",
"body": ["const ${1:nitroApp} = useNitroApp();"]
},
"useStorage": {
"prefix": "useStorage",
"description": "Use Storage",
"body": ["const ${1:storage} = useStorage();"]
},
"defineRenderHandler": {
"prefix": "defineRenderHandler",
"body": [
Expand All @@ -35,4 +20,4 @@
],
"description": "defineRenderHandler"
}
}
}
17 changes: 17 additions & 0 deletions snippets/nitro/utils.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"getRouteRules": {
"prefix": "getRouteRules",
"description": "Get Route Rules",
"body": ["const ${1:routeRules} = getRouteRules($2);"]
},
"useNitroApp": {
"prefix": "useNitroApp",
"description": "Use Nitro App",
"body": ["const ${1:nitro} = useNitroApp();"]
},
"useStorage": {
"prefix": "useStorage",
"description": "Use Storage",
"body": ["const ${1:storage} = useStorage();"]
}
}
42 changes: 33 additions & 9 deletions src/snippets/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { CompletionItem, CompletionItemKind, MarkdownString, extensions, languages } from 'vscode';
import { resolve } from 'pathe';
import { readPackageJSON, writePackageJSON } from 'pkg-types'
import { homedir } from 'node:os';
import { generateVueFileBasicTemplate } from '../utils';
import { resolve } from 'pathe';
import { readPackageJSON, writePackageJSON } from 'pkg-types';
import { CompletionItem, CompletionItemKind, MarkdownString, extensions, languages } from 'vscode';
import { generateVueFileTemplate } from '../utils';

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

const extensionDir = resolve(homeDir, '.vscode', 'extensions', `${extensionName}-${nuxtrVersion}`);
const pkgJsonPath = resolve(extensionDir, 'package.json');

const pkgJSON = await readPackageJSON(extensionDir);

let snippets: Snippet[] = pkgJSON?.contributes?.snippets || [];
let disabledSnippets: Snippet[] = pkgJSON?.contributes?.disabled_snippets || [];

Expand Down Expand Up @@ -48,15 +50,37 @@ languages.registerCompletionItemProvider(
{ language: 'vue' },
{
provideCompletionItems() {
const completionItem = new CompletionItem('vueBaseLayout', CompletionItemKind.Snippet);
const completionItem = new CompletionItem('nuxtBaseLayout', CompletionItemKind.Snippet);
completionItem.detail = 'Generate a Nuxt Layout template';

const template = generateVueFileTemplate('layout');

const documentation = new MarkdownString();
documentation.appendMarkdown(`Generate a Nuxt layout template according to your Nuxtr configuration.\n\n`);
documentation.appendCodeblock(template, 'vue');

completionItem.documentation = documentation;
completionItem.kind = CompletionItemKind.Snippet;
completionItem.insertText = template;

return [completionItem];
}
}
);


languages.registerCompletionItemProvider(
{ language: 'vue' },
{
provideCompletionItems() {
const completionItem = new CompletionItem('vueBase', CompletionItemKind.Snippet);
completionItem.detail = 'Generate a Vue file template';

const template = generateVueFileBasicTemplate('layout');
const template = generateVueFileTemplate('page');

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

completionItem.documentation = documentation;
completionItem.kind = CompletionItemKind.Snippet;
Expand All @@ -65,4 +89,4 @@ languages.registerCompletionItemProvider(
return [completionItem];
}
}
);
);

0 comments on commit 536060a

Please sign in to comment.