@@ -3,38 +3,13 @@ import type { UnocssPluginContext, UnoGenerator } from '@unocss/core'
33import type { CompletionItemProvider , Disposable , ExtensionContext } from 'vscode'
44import type { ContextLoader } from './contextLoader'
55import { createAutocomplete } from '@unocss/autocomplete'
6- import { CompletionItem , CompletionItemKind , CompletionList , languages , MarkdownString , Range , window , workspace } from 'vscode'
7- import { useConfigurations } from './configuration'
6+ import { CompletionItem , CompletionItemKind , CompletionList , languages , MarkdownString , Range , window } from 'vscode'
7+ import { getLanguageIds , useConfigurations } from './configuration'
8+ import { delimiters } from './constants'
89import { isCssId } from './integration'
910import { log } from './log'
1011import { getColorString , getCSS , getPrettiedCSS , getPrettiedMarkdown , shouldProvideAutocomplete } from './utils'
1112
12- const defaultLanguageIds = [
13- 'erb' ,
14- 'haml' ,
15- 'hbs' ,
16- 'html' ,
17- 'css' ,
18- 'postcss' ,
19- 'javascript' ,
20- 'javascriptreact' ,
21- 'markdown' ,
22- 'ejs' ,
23- 'php' ,
24- 'svelte' ,
25- 'typescript' ,
26- 'typescriptreact' ,
27- 'vue-html' ,
28- 'vue' ,
29- 'sass' ,
30- 'scss' ,
31- 'less' ,
32- 'stylus' ,
33- 'astro' ,
34- 'rust' ,
35- ]
36- const delimiters = [ '-' , ':' , ' ' , '"' , '\'' ]
37-
3813class UnoCompletionItem extends CompletionItem {
3914 uno : UnoGenerator
4015 value : string
@@ -50,7 +25,6 @@ export async function registerAutoComplete(
5025 contextLoader : ContextLoader ,
5126 ext : ExtensionContext ,
5227) {
53- const allLanguages = await languages . getLanguages ( )
5428 const autoCompletes = new Map < UnocssPluginContext , UnocssAutocomplete > ( )
5529 const { configuration, watchChanged, disposable } = useConfigurations ( ext )
5630
@@ -84,21 +58,6 @@ export async function registerAutoComplete(
8458 return new MarkdownString ( await getPrettiedMarkdown ( uno , util , remToPxRatio ) )
8559 }
8660
87- function validateLanguages ( targets : string [ ] ) {
88- const unValidLanguages : string [ ] = [ ]
89- const validLanguages = targets . filter ( ( language ) => {
90- if ( ! allLanguages . includes ( language ) ) {
91- unValidLanguages . push ( language )
92- return false
93- }
94- return true
95- } )
96- if ( unValidLanguages . length )
97- window . showWarningMessage ( `These language configurations are illegal: ${ unValidLanguages . join ( ',' ) } ` )
98-
99- return validLanguages
100- }
101-
10261 const provider : CompletionItemProvider < UnoCompletionItem > = {
10362 async provideCompletionItems ( doc , position ) {
10463 const id = doc . uri . fsPath
@@ -176,37 +135,33 @@ export async function registerAutoComplete(
176135
177136 let completeUnregister : Disposable
178137
179- const registerProvider = ( ) => {
138+ const registerProvider = async ( ) => {
180139 completeUnregister ?. dispose ?.( )
181140
182- const languagesIds : string [ ] = workspace . getConfiguration ( ) . get ( 'unocss.languageIds' ) || [ ]
183-
184- const validLanguages = validateLanguages ( languagesIds )
185-
186141 completeUnregister = languages . registerCompletionItemProvider (
187- defaultLanguageIds . concat ( validLanguages ) ,
142+ await getLanguageIds ( ) ,
188143 provider ,
189144 ...delimiters ,
190145 )
191146 return completeUnregister
192147 }
193148
194- watchChanged ( [ 'languagesIds' ] , ( ) => {
195- ext . subscriptions . push (
196- registerProvider ( ) ,
197- )
198- } )
199-
200- watchChanged ( [
201- 'matchType' ,
202- 'maxItems' ,
203- 'remToPxRatio' ,
204- 'remToPxPreview' ,
205- ] , ( ) => {
206- autoCompletes . clear ( )
207- } )
208-
209149 ext . subscriptions . push (
210- registerProvider ( ) ,
150+ watchChanged ( [ 'languagesIds' ] , async ( ) => {
151+ ext . subscriptions . push (
152+ await registerProvider ( ) ,
153+ )
154+ } ) ,
155+
156+ watchChanged ( [
157+ 'matchType' ,
158+ 'maxItems' ,
159+ 'remToPxRatio' ,
160+ 'remToPxPreview' ,
161+ ] , ( ) => {
162+ autoCompletes . clear ( )
163+ } ) ,
164+
165+ await registerProvider ( ) ,
211166 )
212167}
0 commit comments