diff --git a/CHANGELOG.md b/CHANGELOG.md index 67bc135f3..ab947520e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - fix: namespaced tag not working without script setup - fix: component intellisense not working in template if TS version < 5.0 ([#2742](https://github.com/johnsoncodehk/volar/issues/2742)) - fix: class is not assignable to generic components ([#2744](https://github.com/johnsoncodehk/volar/issues/2744)) +- fix: components options is not set correctly when component name is kebab-case and auto-importing ([#2745](https://github.com/johnsoncodehk/volar/issues/2745)) ## 1.6.0 (2023/4/27) diff --git a/packages/vue-language-service/src/languageService.ts b/packages/vue-language-service/src/languageService.ts index 2cc8b5228..684595485 100644 --- a/packages/vue-language-service/src/languageService.ts +++ b/packages/vue-language-service/src/languageService.ts @@ -113,6 +113,8 @@ function resolvePlugins( const itemData = item.data as { uri?: string; } | undefined; + let newName: string | undefined; + if (itemData?.uri && item.additionalTextEdits) { patchAdditionalTextEdits(itemData.uri, item.additionalTextEdits); } @@ -126,7 +128,7 @@ function resolvePlugins( && item.additionalTextEdits?.length === 1 && item.additionalTextEdits[0].newText.indexOf('import ' + item.textEdit.newText + ' from ') >= 0 && (await _context.configurationHost?.getConfiguration('vue.complete.normalizeComponentImportName') ?? true) ) { - let newName = item.textEdit.newText.slice(0, -suffix.length); + newName = item.textEdit.newText.slice(0, -suffix.length); newName = newName[0].toUpperCase() + newName.substring(1); if (newName === 'Index') { const tsItem = (item.data as Data).originalItem; @@ -163,7 +165,7 @@ function resolvePlugins( const virtualFile = _context.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; if (virtualFile instanceof vue.VueFile) { const sfc = virtualFile.sfc; - const componentName = item.textEdit.newText; + const componentName = newName ?? item.textEdit.newText; const textDoc = _context.documents.getDocumentByFileName(virtualFile.snapshot, virtualFile.fileName); if (sfc.scriptAst && sfc.script) { const _scriptRanges = vue.scriptRanges.parseScriptRanges(ts, sfc.scriptAst, !!sfc.scriptSetup, true);