1
- import { CompletionItem , CompletionItemKind , MarkdownString , extensions , languages } from 'vscode' ;
2
- import { resolve } from 'pathe' ;
3
- import { readPackageJSON , writePackageJSON } from 'pkg-types'
4
1
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' ;
6
6
7
7
interface Snippet {
8
8
language : string ;
@@ -17,7 +17,9 @@ export async function toggleSnippets(source: 'Nuxt' | 'Nitro', moveToDisabled: b
17
17
18
18
const extensionDir = resolve ( homeDir , '.vscode' , 'extensions' , `${ extensionName } -${ nuxtrVersion } ` ) ;
19
19
const pkgJsonPath = resolve ( extensionDir , 'package.json' ) ;
20
+
20
21
const pkgJSON = await readPackageJSON ( extensionDir ) ;
22
+
21
23
let snippets : Snippet [ ] = pkgJSON ?. contributes ?. snippets || [ ] ;
22
24
let disabledSnippets : Snippet [ ] = pkgJSON ?. contributes ?. disabled_snippets || [ ] ;
23
25
@@ -48,15 +50,37 @@ languages.registerCompletionItemProvider(
48
50
{ language : 'vue' } ,
49
51
{
50
52
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 ) ;
52
77
completionItem . detail = 'Generate a Vue file template' ;
53
78
54
- const template = generateVueFileBasicTemplate ( 'layout ') ;
79
+ const template = generateVueFileTemplate ( 'page ') ;
55
80
56
- // Create a MarkdownString for documentation with code highlighting
57
81
const documentation = new MarkdownString ( ) ;
58
82
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' ) ;
60
84
61
85
completionItem . documentation = documentation ;
62
86
completionItem . kind = CompletionItemKind . Snippet ;
0 commit comments