diff --git a/CHANGELOG.md b/CHANGELOG.md index f34c1ca467..5ba615d06c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ # Changelog -## 3.0.0 (2025-06-25) +## 3.0.1 (2025-07-02) + +### Bug Fixes + +- fix(language-core): remove calculation logic of element inner loc (#5460) - Thanks to @KazariEX! +- fix(vscode): correct syntax highlight of `v-else` (#5470) - Thanks to @KazariEX! + +### Other Changes + +- docs(vscode): update Russian translation for VS Code extension (#5461) - Thanks to @AndreyYolkin! +- chore: update volar to 2.4.17 + - typescript: correctly use `getModeForUsageLocation` to calculate the resolution mode + +## 3.0.0 (2025-07-01) ### Features diff --git a/extensions/vscode/README.md b/extensions/vscode/README.md index 00546dc1f9..08dd856bd9 100644 --- a/extensions/vscode/README.md +++ b/extensions/vscode/README.md @@ -1,4 +1,4 @@ -# Vue - Official +# Vue (Official) ## Quick Start diff --git a/extensions/vscode/index.ts b/extensions/vscode/index.ts index a42ecadc28..3b874db702 100644 --- a/extensions/vscode/index.ts +++ b/extensions/vscode/index.ts @@ -17,6 +17,25 @@ import { import * as vscode from 'vscode'; import { config } from './lib/config'; +const incompatibleExtensionIds = [ + 'johnsoncodehk.vscode-typescript-vue-plugin', + 'Vue.vscode-typescript-vue-plugin', +]; + +for (const extensionId of incompatibleExtensionIds) { + const extension = vscode.extensions.getExtension(extensionId); + if (extension) { + vscode.window.showErrorMessage( + `The "${extensionId}" extension is incompatible with the Vue extension. Please uninstall it.`, + 'Show Extension', + ).then(action => { + if (action === 'Show Extension') { + vscode.commands.executeCommand('workbench.extensions.search', '@id:' + extensionId); + } + }); + } +} + let client: lsp.BaseLanguageClient | undefined; class _LanguageClient extends lsp.LanguageClient { diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index 027823a8b5..7fe115ea79 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "volar", - "version": "3.0.0", + "version": "3.0.1", "repository": { "type": "git", "url": "https://github.com/vuejs/language-tools.git", @@ -421,11 +421,11 @@ "@types/node": "^22.10.4", "@types/semver": "^7.5.3", "@types/vscode": "1.88.0", - "@volar/vscode": "2.4.16", + "@volar/vscode": "2.4.17", "@vscode/vsce": "^3.2.1", "@vue/compiler-sfc": "^3.5.0", - "@vue/language-server": "3.0.0", - "@vue/typescript-plugin": "3.0.0", + "@vue/language-server": "3.0.1", + "@vue/typescript-plugin": "3.0.1", "reactive-vscode": "^0.2.9", "rolldown": "1.0.0-beta.8", "semver": "^7.5.4", diff --git a/extensions/vscode/package.nls.ja.json b/extensions/vscode/package.nls.ja.json index c7037b1a35..184ac99da2 100644 --- a/extensions/vscode/package.nls.ja.json +++ b/extensions/vscode/package.nls.ja.json @@ -1,9 +1,6 @@ { "configuration.trace.server": "VS Code と Vue 言語サーバー間の通信をトレースします。", "configuration.server.includeLanguages": "拡張機能を有効にする言語を指定します。", - "configuration.splitEditors.icon": "エディターのタイトル領域にエディター分割ボタンを表示します。", - "configuration.splitEditors.layout.left": "左側の分割されたエディターに含めるブロック。", - "configuration.splitEditors.layout.right": "右側の分割されたエディターに含めるブロック。", "configuration.codeActions.askNewComponentName": "コンポーネントを抽出する時に新しいコンポーネント名を尋ねます。", "configuration.suggest.componentNameCasing": "コンポーネント名の命名規則。", "configuration.suggest.propNameCasing": "属性名の命名規則。", @@ -19,6 +16,5 @@ "configuration.format.script.initialIndent": "`\n```", - "configuration.inlayHints.vBindShorthand": "Отображает подсказки для сокращенного синтаксиса v-bind:\n\n```html\n\n \n```", + "configuration.suggest.defineAssignment": "Автоматически добавлять `const props = ` перед `defineProps` при выборе элемента завершения `props`. (также `emit` и `slots`)", + "configuration.autoInsert.dotValue": "Автоматически добавлять `.value` при вводе реактивной переменной", + "configuration.autoInsert.bracketSpacing": "Автоматически добавлять пробелы между двойными фигурными скобками: `{{|}}` -> `{{ | }}`", + "configuration.inlayHints.destructuredProps": "Отображать подсказки для деструктурированных props:\n\n```ts\nwatch(() => /* props. */foo, () => { ... });\n```", + "configuration.inlayHints.missingProps": "Отображать подсказки для отсутствующих обязательных атрибутов:\n\n```html\n\n\n```", + "configuration.inlayHints.inlineHandlerLeading": "Отображать подсказки для аргументов встроенных обработчиков событий:\n\n```html\n */console.log($event)\" />\n```", + "configuration.inlayHints.optionsWrapper": "Отображать подсказки для оберток компонентов:\n\n```vue\n\n```", + "configuration.inlayHints.vBindShorthand": "Отображать подсказки для сокращенного синтаксиса v-bind:\n\n```html\n\n \n```", "configuration.format.template.initialIndent": "Начальный отступ для блока `