From 72cffb4ee21909e1175d894e71a6f50e78d9c8d3 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 09:05:02 +0800 Subject: [PATCH 1/9] feat: add pug example --- .vscode/launch.json | 17 ++ examples/pug-language-server/LICENSE | 21 ++ .../bin/pug-language-server.js | 8 + examples/pug-language-server/package.json | 22 ++ examples/pug-language-server/src/index.ts | 12 + .../pug-language-server/tsconfig.build.json | 23 ++ examples/vscode-pug/.vscodeignore | 5 + examples/vscode-pug/LICENSE | 21 ++ examples/vscode-pug/README.md | 1 + examples/vscode-pug/client.js | 3 + examples/vscode-pug/package.json | 56 +++++ examples/vscode-pug/scripts/build.js | 31 +++ examples/vscode-pug/server.js | 3 + examples/vscode-pug/src/client.ts | 52 +++++ examples/vscode-pug/tsconfig.build.json | 24 ++ .../language-server/src/common/project.ts | 2 +- packages/language-server/src/common/server.ts | 2 +- .../src/common/utils/registerFeatures.ts | 4 +- packages/language-server/src/types.ts | 2 +- pnpm-lock.yaml | 206 ++++++++++-------- tsconfig.build.json | 9 +- 21 files changed, 427 insertions(+), 97 deletions(-) create mode 100644 examples/pug-language-server/LICENSE create mode 100755 examples/pug-language-server/bin/pug-language-server.js create mode 100644 examples/pug-language-server/package.json create mode 100644 examples/pug-language-server/src/index.ts create mode 100644 examples/pug-language-server/tsconfig.build.json create mode 100644 examples/vscode-pug/.vscodeignore create mode 100644 examples/vscode-pug/LICENSE create mode 100644 examples/vscode-pug/README.md create mode 100644 examples/vscode-pug/client.js create mode 100644 examples/vscode-pug/package.json create mode 100644 examples/vscode-pug/scripts/build.js create mode 100644 examples/vscode-pug/server.js create mode 100644 examples/vscode-pug/src/client.ts create mode 100644 examples/vscode-pug/tsconfig.build.json diff --git a/.vscode/launch.json b/.vscode/launch.json index cf487d4b6..0a40f7371 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -19,6 +19,23 @@ "script": "watch" } }, + { + "name": "Launch Pug", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": [ + "--disable-extensions", + "--extensionDevelopmentPath=${workspaceRoot}/extensions/vscode-pug" + ], + "outFiles": [ + "${workspaceRoot}/*/*/out/**/*.js" + ], + "preLaunchTask": { + "type": "npm", + "script": "watch" + } + }, { "name": "Launch Svelte Example", "type": "extensionHost", diff --git a/examples/pug-language-server/LICENSE b/examples/pug-language-server/LICENSE new file mode 100644 index 000000000..b55e47a7e --- /dev/null +++ b/examples/pug-language-server/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present Johnson Chu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/pug-language-server/bin/pug-language-server.js b/examples/pug-language-server/bin/pug-language-server.js new file mode 100755 index 000000000..d18b06411 --- /dev/null +++ b/examples/pug-language-server/bin/pug-language-server.js @@ -0,0 +1,8 @@ +#!/usr/bin/env node +if (process.argv.includes("--version")) { + const pkgJSON = require("../package.json"); + console.log(`${pkgJSON["version"]}`); +} +else { + require("../out/index.js"); +} diff --git a/examples/pug-language-server/package.json b/examples/pug-language-server/package.json new file mode 100644 index 000000000..b7a00a19e --- /dev/null +++ b/examples/pug-language-server/package.json @@ -0,0 +1,22 @@ +{ + "name": "@volar/pug-language-server", + "version": "1.0.19", + "main": "out/index.js", + "license": "MIT", + "files": [ + "out/**/*.js", + "out/**/*.d.ts" + ], + "bin": { + "pug-language-server": "./bin/pug-language-server.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/johnsoncodehk/volar.git", + "directory": "pug-language-tools/pug-language-server" + }, + "dependencies": { + "@volar-plugins/pug": "1.0.19", + "@volar/language-server": "1.0.19" + } +} diff --git a/examples/pug-language-server/src/index.ts b/examples/pug-language-server/src/index.ts new file mode 100644 index 000000000..abc677edb --- /dev/null +++ b/examples/pug-language-server/src/index.ts @@ -0,0 +1,12 @@ +import createPugPlugin from '@volar-plugins/pug'; +import { createLanguageServer, LanguageServerPlugin } from '@volar/language-server/node'; + +const plugin: LanguageServerPlugin = () => ({ + getServicePlugins() { + return [ + createPugPlugin(), + ]; + }, +}); + +createLanguageServer([plugin]); diff --git a/examples/pug-language-server/tsconfig.build.json b/examples/pug-language-server/tsconfig.build.json new file mode 100644 index 000000000..b83fa458c --- /dev/null +++ b/examples/pug-language-server/tsconfig.build.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "noEmit": false, + "outDir": "out", + "rootDir": "src", + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules", + ".vscode-test" + ], + "references": [ + { + "path": "../../packages/language-server/tsconfig.build.json" + }, + { + "path": "../../plugins/pug/tsconfig.build.json" + } + ] +} \ No newline at end of file diff --git a/examples/vscode-pug/.vscodeignore b/examples/vscode-pug/.vscodeignore new file mode 100644 index 000000000..dc83992c1 --- /dev/null +++ b/examples/vscode-pug/.vscodeignore @@ -0,0 +1,5 @@ +out +scripts +src +tsconfig.build.json +tsconfig.build.tsbuildinfo diff --git a/examples/vscode-pug/LICENSE b/examples/vscode-pug/LICENSE new file mode 100644 index 000000000..b55e47a7e --- /dev/null +++ b/examples/vscode-pug/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present Johnson Chu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/vscode-pug/README.md b/examples/vscode-pug/README.md new file mode 100644 index 000000000..116b81ccb --- /dev/null +++ b/examples/vscode-pug/README.md @@ -0,0 +1 @@ +# Pug Language Features (Volar) diff --git a/examples/vscode-pug/client.js b/examples/vscode-pug/client.js new file mode 100644 index 000000000..a83481c85 --- /dev/null +++ b/examples/vscode-pug/client.js @@ -0,0 +1,3 @@ +let modulePath = './dist/node/client'; +try { modulePath = require.resolve('./out/client'); } catch { } +module.exports = require(modulePath); diff --git a/examples/vscode-pug/package.json b/examples/vscode-pug/package.json new file mode 100644 index 000000000..f7968fb2e --- /dev/null +++ b/examples/vscode-pug/package.json @@ -0,0 +1,56 @@ +{ + "private": true, + "name": "vscode-pug", + "version": "1.0.19", + "repository": { + "type": "git", + "url": "https://github.com/johnsoncodehk/volar.git", + "directory": "extensions/vscode-pug" + }, + "displayName": "Pug (Volar)", + "description": "Pug (Volar)", + "author": "johnsoncodehk", + "publisher": "johnsoncodehk", + "engines": { + "vscode": "^1.67.0" + }, + "activationEvents": [ + "onLanguage:jade" + ], + "main": "client", + "contributes": { + "configuration": { + "type": "object", + "title": "Volar-Pug", + "properties": { + "volar-pug-language-server.trace.server": { + "scope": "window", + "type": "string", + "enum": [ + "off", + "messages", + "verbose" + ], + "default": "off", + "description": "Traces the communication between VS Code and the language server." + } + } + } + }, + "scripts": { + "prebuild": "cd ../.. && npm run build", + "build": "node scripts/build -- --minify", + "pack": "npm run build && vsce package --pre-release", + "release": "npm run build && vsce publish --pre-release" + }, + "devDependencies": { + "@volar/pug-language-server": "1.0.19", + "@types/vscode": "1.67.0", + "@volar/language-server": "1.0.19", + "@volar/vscode-language-client": "1.0.19", + "esbuild": "latest", + "typesafe-path": "^0.2.2", + "vsce": "latest", + "vscode-languageclient": "^8.0.2" + } +} diff --git a/examples/vscode-pug/scripts/build.js b/examples/vscode-pug/scripts/build.js new file mode 100644 index 000000000..f37b53b00 --- /dev/null +++ b/examples/vscode-pug/scripts/build.js @@ -0,0 +1,31 @@ +require('esbuild').build({ + entryPoints: { + client: './out/client.js', + server: './node_modules/@volar-examples/angular-language-server/bin/angular-language-server.js', + }, + bundle: true, + metafile: process.argv.includes('--metafile'), + outdir: './dist/node', + external: [ + 'vscode', + ], + format: 'cjs', + platform: 'node', + tsconfig: '../../tsconfig.build.json', + define: { 'process.env.NODE_ENV': '"production"' }, + minify: process.argv.includes('--minify'), + watch: process.argv.includes('--watch'), + plugins: [ + { + name: 'umd2esm', + setup(build) { + build.onResolve({ filter: /^(vscode-.*|estree-walker|jsonc-parser)/ }, args => { + const pathUmdMay = require.resolve(args.path, { paths: [args.resolveDir] }) + // Call twice the replace is to solve the problem of the path in Windows + const pathEsm = pathUmdMay.replace('/umd/', '/esm/').replace('\\umd\\', '\\esm\\') + return { path: pathEsm } + }) + }, + }, + ], +}).catch(() => process.exit(1)) diff --git a/examples/vscode-pug/server.js b/examples/vscode-pug/server.js new file mode 100644 index 000000000..3f43fffc7 --- /dev/null +++ b/examples/vscode-pug/server.js @@ -0,0 +1,3 @@ +let modulePath = './dist/node/server'; +try { modulePath = require.resolve('@volar/pug-language-server/bin/pug-language-server'); } catch { } +module.exports = require(modulePath); diff --git a/examples/vscode-pug/src/client.ts b/examples/vscode-pug/src/client.ts new file mode 100644 index 000000000..0ea06c946 --- /dev/null +++ b/examples/vscode-pug/src/client.ts @@ -0,0 +1,52 @@ +import type { LanguageServerInitializationOptions } from '@volar/language-server'; +import * as path from 'typesafe-path'; +import * as vscode from 'vscode'; +import * as lsp from 'vscode-languageclient/node'; + +let client: lsp.BaseLanguageClient; + +export async function activate(context: vscode.ExtensionContext) { + + const documentSelector: lsp.DocumentFilter[] = [ + { language: 'jade' }, + ]; + const initializationOptions: LanguageServerInitializationOptions = { + typescript: { + tsdk: path.join( + vscode.env.appRoot as path.OsPath, + 'extensions/node_modules/typescript/lib' as path.PosixPath, + ), + }, + noProjectReferences: true, + }; + const serverModule = vscode.Uri.joinPath(context.extensionUri, 'server.js'); + const runOptions = { execArgv: [] }; + const debugOptions = { execArgv: ['--nolazy', '--inspect=' + 6009] }; + const serverOptions: lsp.ServerOptions = { + run: { + module: serverModule.fsPath, + transport: lsp.TransportKind.ipc, + options: runOptions + }, + debug: { + module: serverModule.fsPath, + transport: lsp.TransportKind.ipc, + options: debugOptions + }, + }; + const clientOptions: lsp.LanguageClientOptions = { + documentSelector, + initializationOptions, + }; + client = new lsp.LanguageClient( + 'volar-pug-language-server', + 'Pug (Volar Example)', + serverOptions, + clientOptions, + ); + await client.start(); +} + +export function deactivate(): Thenable | undefined { + return client?.stop(); +} diff --git a/examples/vscode-pug/tsconfig.build.json b/examples/vscode-pug/tsconfig.build.json new file mode 100644 index 000000000..4376f71d8 --- /dev/null +++ b/examples/vscode-pug/tsconfig.build.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "noEmit": false, + "outDir": "out", + "rootDir": "src", + }, + "include": [ + "src", + "src/**/*.json" + ], + "exclude": [ + "node_modules", + ".vscode-test" + ], + "references": [ + { + "path": "../../packages/language-server/tsconfig.build.json" + }, + { + "path": "../pug-language-server/tsconfig.build.json" + } + ] +} \ No newline at end of file diff --git a/packages/language-server/src/common/project.ts b/packages/language-server/src/common/project.ts index 65455e0aa..4c0653a05 100644 --- a/packages/language-server/src/common/project.ts +++ b/packages/language-server/src/common/project.ts @@ -271,7 +271,7 @@ function createParsedCommandLine( tsConfig: path.PosixPath | ts.CompilerOptions, plugins: ReturnType[], ): ts.ParsedCommandLine { - const extraFileExtensions = plugins.map(plugin => plugin.extraFileExtensions).flat(); + const extraFileExtensions = plugins.map(plugin => plugin.extraFileExtensions ?? []).flat(); try { let content: ts.ParsedCommandLine; if (typeof tsConfig === 'string') { diff --git a/packages/language-server/src/common/server.ts b/packages/language-server/src/common/server.ts index e7e4a404a..682d54b74 100644 --- a/packages/language-server/src/common/server.ts +++ b/packages/language-server/src/common/server.ts @@ -99,7 +99,7 @@ export function createCommonLanguageServer(context: ServerContext) { 'jsx', 'tsx', 'json', - ...plugins.map(plugin => plugin.extraFileExtensions.map(ext => ext.extension)).flat(), + ...plugins.map(plugin => plugin.extraFileExtensions?.map(ext => ext.extension) ?? []).flat(), ].join(',')}}` }, ] diff --git a/packages/language-server/src/common/utils/registerFeatures.ts b/packages/language-server/src/common/utils/registerFeatures.ts index 08ccc17dd..65675d6c6 100644 --- a/packages/language-server/src/common/utils/registerFeatures.ts +++ b/packages/language-server/src/common/utils/registerFeatures.ts @@ -136,7 +136,7 @@ export function setupCapabilities( if (!initOptions.respectClientCapabilities || params.textDocument?.diagnostic && (initOptions.diagnosticModel ?? DiagnosticModel.Push) === DiagnosticModel.Pull) { server.diagnosticProvider = { documentSelector: [ - ...plugins.map(plugin => plugin.extraFileExtensions.map(ext => ({ pattern: `**/*.${ext.extension}` }))).flat(), + ...plugins.map(plugin => plugin.extraFileExtensions?.map(ext => ({ pattern: `**/*.${ext.extension}` })) ?? []).flat(), { pattern: '**/*.{ts,js,tsx,jsx}' }, ], interFileDependencies: true, @@ -150,7 +150,7 @@ export function setupCapabilities( fileOperations: { willRename: { filters: [ - ...plugins.map(plugin => plugin.extraFileExtensions.map(ext => ({ pattern: { glob: `**/*.${ext.extension}` } }))).flat(), + ...plugins.map(plugin => plugin.extraFileExtensions?.map(ext => ({ pattern: { glob: `**/*.${ext.extension}` } })) ?? []).flat(), { pattern: { glob: '**/*.js' } }, { pattern: { glob: '**/*.cjs' } }, { pattern: { glob: '**/*.mjs' } }, diff --git a/packages/language-server/src/types.ts b/packages/language-server/src/types.ts index 5067f459f..4ece96504 100644 --- a/packages/language-server/src/types.ts +++ b/packages/language-server/src/types.ts @@ -41,7 +41,7 @@ export type LanguageServerPlugin< C = embeddedLS.LanguageService > = (initOptions: A) => { - extraFileExtensions: ts.FileExtensionInfo[]; + extraFileExtensions?: ts.FileExtensionInfo[]; resolveLanguageServiceHost?( ts: typeof import('typescript/lib/tsserverlibrary'), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81de61ace..5df08e0aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,7 +25,7 @@ importers: specifiers: vitepress: latest optionalDependencies: - vitepress: 1.0.0-alpha.33 + vitepress: 1.0.0-alpha.34 examples/angular-language-core: specifiers: @@ -54,6 +54,14 @@ importers: '@volar/language-server': link:../../packages/language-server '@volar/shared': link:../../packages/shared + examples/pug-language-server: + specifiers: + '@volar-plugins/pug': 1.0.19 + '@volar/language-server': 1.0.19 + dependencies: + '@volar-plugins/pug': link:../../plugins/pug + '@volar/language-server': link:../../packages/language-server + examples/svelte-language-core: specifiers: '@jridgewell/sourcemap-codec': ^1.4.14 @@ -111,7 +119,27 @@ importers: '@volar-examples/angular-language-server': link:../angular-language-server '@volar/language-server': link:../../packages/language-server '@volar/vscode-language-client': link:../../packages/vscode-language-client - esbuild: 0.16.12 + esbuild: 0.16.13 + typesafe-path: 0.2.2 + vsce: 2.15.0 + vscode-languageclient: 8.0.2 + + examples/vscode-pug: + specifiers: + '@types/vscode': 1.67.0 + '@volar/language-server': 1.0.19 + '@volar/pug-language-server': 1.0.19 + '@volar/vscode-language-client': 1.0.19 + esbuild: latest + typesafe-path: ^0.2.2 + vsce: latest + vscode-languageclient: ^8.0.2 + devDependencies: + '@types/vscode': 1.67.0 + '@volar/language-server': link:../../packages/language-server + '@volar/pug-language-server': link:../pug-language-server + '@volar/vscode-language-client': link:../../packages/vscode-language-client + esbuild: 0.16.13 typesafe-path: 0.2.2 vsce: 2.15.0 vscode-languageclient: 8.0.2 @@ -154,7 +182,7 @@ importers: dependencies: typescript-vue-plugin-forward: file:extensions/vscode-typescript-vue-plugin/typescript-vue-plugin-forward devDependencies: - esbuild: 0.16.12 + esbuild: 0.16.13 typescript-vue-plugin: link:../../vue-language-tools/typescript-vue-plugin vsce: 2.15.0 @@ -187,8 +215,8 @@ importers: '@volar/vscode-language-client': link:../../packages/vscode-language-client '@volar/vue-language-core': link:../../vue-language-tools/vue-language-core '@volar/vue-language-server': link:../../vue-language-tools/vue-language-server - esbuild: 0.16.12 - esbuild-plugin-copy: 2.0.1_esbuild@0.16.12 + esbuild: 0.16.13 + esbuild-plugin-copy: 2.0.1_esbuild@0.16.13 esbuild-visualizer: 0.4.0 path-browserify: 1.0.1 punycode: 2.1.1 @@ -768,15 +796,15 @@ packages: to-fast-properties: 2.0.0 dev: false - /@docsearch/css/3.3.0: - resolution: {integrity: sha512-rODCdDtGyudLj+Va8b6w6Y85KE85bXRsps/R4Yjwt5vueXKXZQKYw0aA9knxLBT6a/bI/GMrAcmCR75KYOM6hg==} + /@docsearch/css/3.3.1: + resolution: {integrity: sha512-nznHXeFHpAYjyaSNFNFpU+IJPjQA7AINM8ONjDx/Zx4O/pGAvqwgmcLNc7zR8qXRutqnzLo06yN63xFn36KFBw==} dev: false optional: true - /@docsearch/js/3.3.0: - resolution: {integrity: sha512-oFXWRPNvPxAzBhnFJ9UCFIYZiQNc3Yrv6912nZHw/UIGxsyzKpNRZgHq8HDk1niYmOSoLKtVFcxkccpQmYGFyg==} + /@docsearch/js/3.3.1: + resolution: {integrity: sha512-BCVu7njUFJSUXDNvgK65xNYU1L7U3CKFJlawDXql17nQwfpBrNZHqp+eb8z9qu0SzauQKss9tsf/qwlFJ9BOGw==} dependencies: - '@docsearch/react': 3.3.0 + '@docsearch/react': 3.3.1 preact: 10.11.3 transitivePeerDependencies: - '@algolia/client-search' @@ -786,8 +814,8 @@ packages: dev: false optional: true - /@docsearch/react/3.3.0: - resolution: {integrity: sha512-fhS5adZkae2SSdMYEMVg6pxI5a/cE+tW16ki1V0/ur4Fdok3hBRkmN/H8VvlXnxzggkQIIRIVvYPn00JPjen3A==} + /@docsearch/react/3.3.1: + resolution: {integrity: sha512-wdeQBODPkue6yVEEg4ntt+TiGJ6iXMBUNjBQJ0s1WVoc1OdcCnks/lkQ5LEfXETYR/q9QSbCCBnMjvnSoILaag==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -802,7 +830,7 @@ packages: dependencies: '@algolia/autocomplete-core': 1.7.2 '@algolia/autocomplete-preset-algolia': 1.7.2_algoliasearch@4.14.2 - '@docsearch/css': 3.3.0 + '@docsearch/css': 3.3.1 algoliasearch: 4.14.2 transitivePeerDependencies: - '@algolia/client-search' @@ -825,176 +853,176 @@ packages: resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} dev: false - /@esbuild/android-arm/0.16.12: - resolution: {integrity: sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==} + /@esbuild/android-arm/0.16.13: + resolution: {integrity: sha512-JmtqThupn9Yf+FzANE+GG73ASUkssnPwOsndUElhp23685QzRK+MO1UompOlBaXV9D5FTuYcPnw7p4mCq2YbZQ==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm64/0.16.12: - resolution: {integrity: sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==} + /@esbuild/android-arm64/0.16.13: + resolution: {integrity: sha512-r4xetsd1ez1NF9/9R2f9Q6AlxqiZLwUqo7ICOcvEVwopVkXUcspIjEbJk0EVTgT6Cp5+ymzGPT6YNV0ievx4yA==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64/0.16.12: - resolution: {integrity: sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==} + /@esbuild/android-x64/0.16.13: + resolution: {integrity: sha512-hKt1bFht/Vtp0xJ0ZVzFMnPy1y1ycmM3KNnp3zsyZfQmw7nhs2WLO4vxdR5YG+6RsHKCb2zbZ3VwlC0Tij0qyA==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /@esbuild/darwin-arm64/0.16.12: - resolution: {integrity: sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==} + /@esbuild/darwin-arm64/0.16.13: + resolution: {integrity: sha512-ogrVuNi2URocrr3Ps20f075EMm9V7IeenOi9FRj4qdbT6mQlwLuP4l90PW2iBrKERx0oRkcZprEUNsz/3xd7ww==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64/0.16.12: - resolution: {integrity: sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==} + /@esbuild/darwin-x64/0.16.13: + resolution: {integrity: sha512-Agajik9SBGiKD7FPXE+ExW6x3MgA/dUdpZnXa9y1tyfE4lKQx+eQiknSdrBnWPeqa9wL0AOvkhghmYhpVkyqkA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64/0.16.12: - resolution: {integrity: sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==} + /@esbuild/freebsd-arm64/0.16.13: + resolution: {integrity: sha512-KxMO3/XihBcHM+xQUM6nQZO1SgQuOsd1DCnKF1a4SIf/i5VD45vrqN3k8ePgFrEbMi7m5JeGmvNqwJXinF0a4Q==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64/0.16.12: - resolution: {integrity: sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==} + /@esbuild/freebsd-x64/0.16.13: + resolution: {integrity: sha512-Ez15oqV1vwvZ30cVLeBW14BsWq/fdWNQGMOxxqaSJVQVLqHhvgfQ7gxGDiN9tpJdeQhqJO+Q0r02/Tce5+USNg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm/0.16.12: - resolution: {integrity: sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==} + /@esbuild/linux-arm/0.16.13: + resolution: {integrity: sha512-18dLd2L3mda+iFj6sswyBMSh2UwniamD9M4DwPv8VM+9apRFlQ5IGKxBdumnTuOI4NvwwAernmUseWhYQ9k+rg==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm64/0.16.12: - resolution: {integrity: sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==} + /@esbuild/linux-arm64/0.16.13: + resolution: {integrity: sha512-qi5n7KwcGViyJeZeQnu8fB6dC3Mlm5PGaqSv2HhQDDx/MPvVfQGNMcv7zcBL4qk3FkuWhGVwXkjQ76x7R0PWlA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32/0.16.12: - resolution: {integrity: sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==} + /@esbuild/linux-ia32/0.16.13: + resolution: {integrity: sha512-2489Xad9sr+6GD7nB913fUqpCsSwVwgskkQTq4Or2mZntSPYPebyJm8l1YruHo7oqYMTGV6RiwGE4gRo3H+EPQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64/0.16.12: - resolution: {integrity: sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==} + /@esbuild/linux-loong64/0.16.13: + resolution: {integrity: sha512-x8KplRu9Y43Px8I9YS+sPBwQ+fw44Mvp2BPVADopKDWz+h3fcj1BvRU58kxb89WObmwKX9sWdtYzepL4Fmx03A==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el/0.16.12: - resolution: {integrity: sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==} + /@esbuild/linux-mips64el/0.16.13: + resolution: {integrity: sha512-qhhdWph9FLwD9rVVC/nUf7k2U4NZIA6/mGx0B7+O6PFV0GjmPA2E3zDQ4NUjq9P26E0DeAZy9akH9dYcUBRU7A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64/0.16.12: - resolution: {integrity: sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==} + /@esbuild/linux-ppc64/0.16.13: + resolution: {integrity: sha512-cVWAPKsrRVxI1jCeJHnYSbE3BrEU+pZTZK2gfao9HRxuc+3m4+RLfs3EVEpGLmMKEcWfVCB9wZ3yNxnknutGKQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64/0.16.12: - resolution: {integrity: sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==} + /@esbuild/linux-riscv64/0.16.13: + resolution: {integrity: sha512-Agb7dbRyZWnmPn5Vvf0eyqaEUqSsaIUwwyInu2EoFTaIDRp093QU2M5alUyOooMLkRbD1WvqQNwx08Z/g+SAcQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x/0.16.12: - resolution: {integrity: sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==} + /@esbuild/linux-s390x/0.16.13: + resolution: {integrity: sha512-AqRBIrc/+kl08ahliNG+EyU+j41wIzQfwBTKpi80cCDiYvYFPuXjvzZsD9muiu58Isj0RVni9VgC4xK/AnSW4g==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-x64/0.16.12: - resolution: {integrity: sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==} + /@esbuild/linux-x64/0.16.13: + resolution: {integrity: sha512-S4wn2BimuhPcoArRtVrdHUKIymCCZcYAXQE47kUiX4yrUrEX2/ifn5eKNbZ5c1jJKUlh1gC2ESIN+iw3wQax3g==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64/0.16.12: - resolution: {integrity: sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==} + /@esbuild/netbsd-x64/0.16.13: + resolution: {integrity: sha512-2c8JWgfUMlQHTdaR5X3xNMwqOyad8kgeCupuVkdm3QkUOzGREjlTETQsK6oHifocYzDCo9FeKcUwsK356SdR+g==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64/0.16.12: - resolution: {integrity: sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==} + /@esbuild/openbsd-x64/0.16.13: + resolution: {integrity: sha512-Bwh+PmKD/LK+xBjqIpnYnKYj0fIyQJ0YpRxsn0F+WfzvQ2OA+GKDlf8AHosiCns26Q4Dje388jQVwfOBZ1GaFw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64/0.16.12: - resolution: {integrity: sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==} + /@esbuild/sunos-x64/0.16.13: + resolution: {integrity: sha512-8wwk6f9XGnhrF94/DBdFM4Xm1JeCyGTCj67r516VS9yvBVQf3Rar54L+XPVDs/oZOokwH+XsktrgkuTMAmjntg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64/0.16.12: - resolution: {integrity: sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==} + /@esbuild/win32-arm64/0.16.13: + resolution: {integrity: sha512-Jmwbp/5ArLCiRAHC33ODfcrlIcbP/exXkOEUVkADNJC4e/so2jm+i8IQFvVX/lA2GWvK3GdgcN0VFfp9YITAbg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32/0.16.12: - resolution: {integrity: sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==} + /@esbuild/win32-ia32/0.16.13: + resolution: {integrity: sha512-AX6WjntGjhJHzrPSVvjMD7grxt41koHfAOx6lxLorrpDwwIKKPaGDASPZgvFIZHTbwhOtILW6vAXxYPDsKpDJA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64/0.16.12: - resolution: {integrity: sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==} + /@esbuild/win32-x64/0.16.13: + resolution: {integrity: sha512-A+U4gM6OOkPS03UgVU08GTpAAAxPsP/8Z4FmneGo4TaVSD99bK9gVJXlqUEPMO/htFXEAht2O6pX4ErtLY5tVg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2956,13 +2984,13 @@ packages: dev: false optional: true - /esbuild-plugin-copy/2.0.1_esbuild@0.16.12: + /esbuild-plugin-copy/2.0.1_esbuild@0.16.13: resolution: {integrity: sha512-/mvriqGv2QAyrkui3REZaLEjwqESBKWZQQJtOZEausI8C4QMChREXGASNzmWpTlHo/v+ipLW73QCiNemBKggMw==} peerDependencies: esbuild: '>= 0.14.0' dependencies: chalk: 4.1.2 - esbuild: 0.16.12 + esbuild: 0.16.13 fs-extra: 10.1.0 globby: 11.1.0 dev: true @@ -2976,34 +3004,34 @@ packages: yargs: 17.6.2 dev: true - /esbuild/0.16.12: - resolution: {integrity: sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==} + /esbuild/0.16.13: + resolution: {integrity: sha512-oYwFdSEIoKM1oYzyem1osgKJAvg5447XF+05ava21fOtilyb2HeQQh26/74K4WeAk5dZmj/Mx10zUqUnI14jhA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.16.12 - '@esbuild/android-arm64': 0.16.12 - '@esbuild/android-x64': 0.16.12 - '@esbuild/darwin-arm64': 0.16.12 - '@esbuild/darwin-x64': 0.16.12 - '@esbuild/freebsd-arm64': 0.16.12 - '@esbuild/freebsd-x64': 0.16.12 - '@esbuild/linux-arm': 0.16.12 - '@esbuild/linux-arm64': 0.16.12 - '@esbuild/linux-ia32': 0.16.12 - '@esbuild/linux-loong64': 0.16.12 - '@esbuild/linux-mips64el': 0.16.12 - '@esbuild/linux-ppc64': 0.16.12 - '@esbuild/linux-riscv64': 0.16.12 - '@esbuild/linux-s390x': 0.16.12 - '@esbuild/linux-x64': 0.16.12 - '@esbuild/netbsd-x64': 0.16.12 - '@esbuild/openbsd-x64': 0.16.12 - '@esbuild/sunos-x64': 0.16.12 - '@esbuild/win32-arm64': 0.16.12 - '@esbuild/win32-ia32': 0.16.12 - '@esbuild/win32-x64': 0.16.12 + '@esbuild/android-arm': 0.16.13 + '@esbuild/android-arm64': 0.16.13 + '@esbuild/android-x64': 0.16.13 + '@esbuild/darwin-arm64': 0.16.13 + '@esbuild/darwin-x64': 0.16.13 + '@esbuild/freebsd-arm64': 0.16.13 + '@esbuild/freebsd-x64': 0.16.13 + '@esbuild/linux-arm': 0.16.13 + '@esbuild/linux-arm64': 0.16.13 + '@esbuild/linux-ia32': 0.16.13 + '@esbuild/linux-loong64': 0.16.13 + '@esbuild/linux-mips64el': 0.16.13 + '@esbuild/linux-ppc64': 0.16.13 + '@esbuild/linux-riscv64': 0.16.13 + '@esbuild/linux-s390x': 0.16.13 + '@esbuild/linux-x64': 0.16.13 + '@esbuild/netbsd-x64': 0.16.13 + '@esbuild/openbsd-x64': 0.16.13 + '@esbuild/sunos-x64': 0.16.13 + '@esbuild/win32-arm64': 0.16.13 + '@esbuild/win32-ia32': 0.16.13 + '@esbuild/win32-x64': 0.16.13 /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -6314,7 +6342,7 @@ packages: terser: optional: true dependencies: - esbuild: 0.16.12 + esbuild: 0.16.13 postcss: 8.4.20 resolve: 1.22.1 rollup: 3.7.5 @@ -6349,7 +6377,7 @@ packages: optional: true dependencies: '@types/node': 18.11.18 - esbuild: 0.16.12 + esbuild: 0.16.13 postcss: 8.4.20 resolve: 1.22.1 rollup: 3.7.5 @@ -6357,13 +6385,13 @@ packages: fsevents: 2.3.2 dev: true - /vitepress/1.0.0-alpha.33: - resolution: {integrity: sha512-EhMDqWLllYr5mXqAz4GCQ1o/bu5umQ6C2d8voiSaTHMkYCxsGc31ETykflM6NOhGx6yccwXygrYIIeN1l6BUEA==} + /vitepress/1.0.0-alpha.34: + resolution: {integrity: sha512-ALJLEZYM0rgXDBV8n6P6VXdR8fMjJJIZpm7QqU6CqJwB6JKHW7RBmokx9RcEtPRg/JshYTXO8f6AKPI9BByxkw==} hasBin: true requiresBuild: true dependencies: - '@docsearch/css': 3.3.0 - '@docsearch/js': 3.3.0 + '@docsearch/css': 3.3.1 + '@docsearch/js': 3.3.1 '@vitejs/plugin-vue': 4.0.0_vite@4.0.3+vue@3.2.45 '@vue/devtools-api': 6.4.5 '@vueuse/core': 9.9.0_vue@3.2.45 diff --git a/tsconfig.build.json b/tsconfig.build.json index 0c8d2c218..201387596 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -9,9 +9,15 @@ { "path": "./extensions/vscode-typescript-vue-plugin/tsconfig.build.json" }, + { + "path": "./examples/vscode-pug/tsconfig.build.json" + }, { "path": "./examples/vscode-svelte/tsconfig.build.json" }, + { + "path": "./examples/vscode-angular/tsconfig.build.json" + }, // Extra Pkgs { "path": "./vue-language-tools/vue-language-plugin-pug/tsconfig.build.json" @@ -35,9 +41,6 @@ { "path": "./examples/vscode-svelte/tsconfig.build.json" }, - { - "path": "./examples/vscode-angular/tsconfig.build.json" - }, // IDE / tests { "path": "./tsconfig.json" From da050d3b629ea5cc4cf53c697f3febf7c34c3836 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 09:06:53 +0800 Subject: [PATCH 2/9] chore: fix launch path --- .vscode/launch.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 0a40f7371..c869fbc7d 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -26,7 +26,7 @@ "runtimeExecutable": "${execPath}", "args": [ "--disable-extensions", - "--extensionDevelopmentPath=${workspaceRoot}/extensions/vscode-pug" + "--extensionDevelopmentPath=${workspaceRoot}/examples/vscode-pug" ], "outFiles": [ "${workspaceRoot}/*/*/out/**/*.js" From f6e945ab13ed68d5acbdfdd4e90daa4943dc1feb Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 10:16:22 +0800 Subject: [PATCH 3/9] feat(vscode-pug): formatting support --- examples/pug-language-server/package.json | 1 + examples/pug-language-server/src/index.ts | 3 ++ .../pug-language-server/tsconfig.build.json | 3 ++ examples/vscode-pug/src/client.ts | 6 ++- .../src/common/utils/registerFeatures.ts | 44 +++++++++++++------ plugins/pug/src/index.ts | 3 ++ pnpm-lock.yaml | 2 + 7 files changed, 47 insertions(+), 15 deletions(-) diff --git a/examples/pug-language-server/package.json b/examples/pug-language-server/package.json index b7a00a19e..fd28ffc7f 100644 --- a/examples/pug-language-server/package.json +++ b/examples/pug-language-server/package.json @@ -17,6 +17,7 @@ }, "dependencies": { "@volar-plugins/pug": "1.0.19", + "@volar-plugins/pug-beautify": "1.0.19", "@volar/language-server": "1.0.19" } } diff --git a/examples/pug-language-server/src/index.ts b/examples/pug-language-server/src/index.ts index abc677edb..1b1f417eb 100644 --- a/examples/pug-language-server/src/index.ts +++ b/examples/pug-language-server/src/index.ts @@ -1,10 +1,13 @@ import createPugPlugin from '@volar-plugins/pug'; +import createPugBeautifyPlugin from '@volar-plugins/pug-beautify'; import { createLanguageServer, LanguageServerPlugin } from '@volar/language-server/node'; const plugin: LanguageServerPlugin = () => ({ + extraFileExtensions: [{ extension: 'pug', isMixedContent: true }], getServicePlugins() { return [ createPugPlugin(), + createPugBeautifyPlugin(), ]; }, }); diff --git a/examples/pug-language-server/tsconfig.build.json b/examples/pug-language-server/tsconfig.build.json index b83fa458c..6e542237f 100644 --- a/examples/pug-language-server/tsconfig.build.json +++ b/examples/pug-language-server/tsconfig.build.json @@ -18,6 +18,9 @@ }, { "path": "../../plugins/pug/tsconfig.build.json" + }, + { + "path": "../../plugins/pug-beautify/tsconfig.build.json" } ] } \ No newline at end of file diff --git a/examples/vscode-pug/src/client.ts b/examples/vscode-pug/src/client.ts index 0ea06c946..edf0a39e2 100644 --- a/examples/vscode-pug/src/client.ts +++ b/examples/vscode-pug/src/client.ts @@ -1,4 +1,4 @@ -import type { LanguageServerInitializationOptions } from '@volar/language-server'; +import { LanguageServerInitializationOptions, ServerMode, DiagnosticModel } from '@volar/language-server'; import * as path from 'typesafe-path'; import * as vscode from 'vscode'; import * as lsp from 'vscode-languageclient/node'; @@ -17,7 +17,9 @@ export async function activate(context: vscode.ExtensionContext) { 'extensions/node_modules/typescript/lib' as path.PosixPath, ), }, - noProjectReferences: true, + diagnosticModel: DiagnosticModel.Pull, + serverMode: ServerMode.Syntactic, // avoid cross file behavior for better performance + disableFileWatcher: true, }; const serverModule = vscode.Uri.joinPath(context.extensionUri, 'server.js'); const runOptions = { execArgv: [] }; diff --git a/packages/language-server/src/common/utils/registerFeatures.ts b/packages/language-server/src/common/utils/registerFeatures.ts index 65675d6c6..521e1c19e 100644 --- a/packages/language-server/src/common/utils/registerFeatures.ts +++ b/packages/language-server/src/common/utils/registerFeatures.ts @@ -133,11 +133,23 @@ export function setupCapabilities( if (!initOptions.respectClientCapabilities || params.textDocument?.inlayHint) { server.inlayHintProvider = true; } - if (!initOptions.respectClientCapabilities || params.textDocument?.diagnostic && (initOptions.diagnosticModel ?? DiagnosticModel.Push) === DiagnosticModel.Pull) { + if ((!initOptions.respectClientCapabilities || params.textDocument?.diagnostic) && (initOptions.diagnosticModel ?? DiagnosticModel.Push) === DiagnosticModel.Pull) { server.diagnosticProvider = { documentSelector: [ - ...plugins.map(plugin => plugin.extraFileExtensions?.map(ext => ({ pattern: `**/*.${ext.extension}` })) ?? []).flat(), - { pattern: '**/*.{ts,js,tsx,jsx}' }, + { + pattern: `**/*.{${[ + 'js', + 'cjs', + 'mjs', + 'ts', + 'cts', + 'mts', + 'jsx', + 'tsx', + // 'json', + ...plugins.map(plugin => plugin.extraFileExtensions?.map(ext => ext.extension) ?? []).flat(), + ].join(',')}}` + } ], interFileDependencies: true, workspaceDiagnostics: false, @@ -150,16 +162,22 @@ export function setupCapabilities( fileOperations: { willRename: { filters: [ - ...plugins.map(plugin => plugin.extraFileExtensions?.map(ext => ({ pattern: { glob: `**/*.${ext.extension}` } })) ?? []).flat(), - { pattern: { glob: '**/*.js' } }, - { pattern: { glob: '**/*.cjs' } }, - { pattern: { glob: '**/*.mjs' } }, - { pattern: { glob: '**/*.ts' } }, - { pattern: { glob: '**/*.cts' } }, - { pattern: { glob: '**/*.mts' } }, - { pattern: { glob: '**/*.jsx' } }, - { pattern: { glob: '**/*.tsx' } }, - { pattern: { glob: '**/*.json' } }, + { + pattern: { + glob: `**/*.{${[ + 'js', + 'cjs', + 'mjs', + 'ts', + 'cts', + 'mts', + 'jsx', + 'tsx', + 'json', + ...plugins.map(plugin => plugin.extraFileExtensions?.map(ext => ext.extension) ?? []).flat(), + ].join(',')}}` + } + }, ] } } diff --git a/plugins/pug/src/index.ts b/plugins/pug/src/index.ts index 46a91bf0d..6019141a3 100644 --- a/plugins/pug/src/index.ts +++ b/plugins/pug/src/index.ts @@ -48,6 +48,7 @@ export default function (): LanguageServicePlugin & ReturnType Date: Tue, 3 Jan 2023 10:36:55 +0800 Subject: [PATCH 4/9] refactor: move pug packages to pug-language-tools/* --- .vscode/launch.json | 2 +- lerna.json | 1 + pnpm-lock.yaml | 125 ++++++++++-------- .../pug-language-server/LICENSE | 0 .../bin/pug-language-server.js | 0 .../pug-language-server/package.json | 0 .../pug-language-server/src/index.ts | 0 .../pug-language-server/tsconfig.build.json | 0 .../pug-language-service}/LICENSE | 0 .../pug-language-service/package.json | 2 +- .../pug-language-service/src/baseParse.ts | 0 .../pug-language-service/src/index.ts | 0 .../pug-language-service/src/pugDocument.ts | 0 .../src/services/completion.ts | 0 .../src/services/documentHighlight.ts | 0 .../src/services/documentLinks.ts | 0 .../src/services/documentSymbol.ts | 0 .../src/services/foldingRanges.ts | 0 .../src/services/hover.ts | 0 .../src/services/quoteComplete.ts | 0 .../src/services/scanner.ts | 0 .../src/services/selectionRanges.ts | 0 .../pug-language-service/tsconfig.build.json | 0 .../vscode-pug/.vscodeignore | 0 .../vscode-pug}/LICENSE | 0 .../vscode-pug/README.md | 0 .../vscode-pug/client.js | 0 .../vscode-pug/package.json | 6 +- .../vscode-pug/scripts/build.js | 0 .../vscode-pug/server.js | 0 .../vscode-pug/src/client.ts | 7 +- .../vscode-pug/tsconfig.build.json | 0 32 files changed, 76 insertions(+), 67 deletions(-) rename {examples => pug-language-tools}/pug-language-server/LICENSE (100%) rename {examples => pug-language-tools}/pug-language-server/bin/pug-language-server.js (100%) rename {examples => pug-language-tools}/pug-language-server/package.json (100%) rename {examples => pug-language-tools}/pug-language-server/src/index.ts (100%) rename {examples => pug-language-tools}/pug-language-server/tsconfig.build.json (100%) rename {examples/vscode-pug => pug-language-tools/pug-language-service}/LICENSE (100%) rename {packages => pug-language-tools}/pug-language-service/package.json (91%) rename {packages => pug-language-tools}/pug-language-service/src/baseParse.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/index.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/pugDocument.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/completion.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/documentHighlight.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/documentLinks.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/documentSymbol.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/foldingRanges.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/hover.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/quoteComplete.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/scanner.ts (100%) rename {packages => pug-language-tools}/pug-language-service/src/services/selectionRanges.ts (100%) rename {packages => pug-language-tools}/pug-language-service/tsconfig.build.json (100%) rename {examples => pug-language-tools}/vscode-pug/.vscodeignore (100%) rename {packages/pug-language-service => pug-language-tools/vscode-pug}/LICENSE (100%) rename {examples => pug-language-tools}/vscode-pug/README.md (100%) rename {examples => pug-language-tools}/vscode-pug/client.js (100%) rename {examples => pug-language-tools}/vscode-pug/package.json (89%) rename {examples => pug-language-tools}/vscode-pug/scripts/build.js (100%) rename {examples => pug-language-tools}/vscode-pug/server.js (100%) rename {examples => pug-language-tools}/vscode-pug/src/client.ts (92%) rename {examples => pug-language-tools}/vscode-pug/tsconfig.build.json (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index c869fbc7d..0146ac263 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -26,7 +26,7 @@ "runtimeExecutable": "${execPath}", "args": [ "--disable-extensions", - "--extensionDevelopmentPath=${workspaceRoot}/examples/vscode-pug" + "--extensionDevelopmentPath=${workspaceRoot}/pug-language-tools/vscode-pug" ], "outFiles": [ "${workspaceRoot}/*/*/out/**/*.js" diff --git a/lerna.json b/lerna.json index 4916c90c3..2ec144933 100644 --- a/lerna.json +++ b/lerna.json @@ -6,6 +6,7 @@ "extensions/*", "packages/*", "plugins/*", + "pug-language-tools/*", "vue-language-tools/*" ], "version": "1.0.19" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51d64fde6..1d39c0234 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,16 +54,6 @@ importers: '@volar/language-server': link:../../packages/language-server '@volar/shared': link:../../packages/shared - examples/pug-language-server: - specifiers: - '@volar-plugins/pug': 1.0.19 - '@volar-plugins/pug-beautify': 1.0.19 - '@volar/language-server': 1.0.19 - dependencies: - '@volar-plugins/pug': link:../../plugins/pug - '@volar-plugins/pug-beautify': link:../../plugins/pug-beautify - '@volar/language-server': link:../../packages/language-server - examples/svelte-language-core: specifiers: '@jridgewell/sourcemap-codec': ^1.4.14 @@ -126,26 +116,6 @@ importers: vsce: 2.15.0 vscode-languageclient: 8.0.2 - examples/vscode-pug: - specifiers: - '@types/vscode': 1.67.0 - '@volar/language-server': 1.0.19 - '@volar/pug-language-server': 1.0.19 - '@volar/vscode-language-client': 1.0.19 - esbuild: latest - typesafe-path: ^0.2.2 - vsce: latest - vscode-languageclient: ^8.0.2 - devDependencies: - '@types/vscode': 1.67.0 - '@volar/language-server': link:../../packages/language-server - '@volar/pug-language-server': link:../pug-language-server - '@volar/vscode-language-client': link:../../packages/vscode-language-client - esbuild: 0.16.13 - typesafe-path: 0.2.2 - vsce: 2.15.0 - vscode-languageclient: 8.0.2 - examples/vscode-svelte: specifiers: '@types/vscode': 1.67.0 @@ -293,31 +263,6 @@ importers: devDependencies: '@types/ws': 8.5.3 - packages/pug-language-service: - specifiers: - '@volar/language-service': 1.0.19 - '@volar/shared': 1.0.19 - '@volar/source-map': 1.0.19 - '@volar/transforms': 1.0.19 - muggle-string: ^0.1.0 - pug-lexer: ^5.0.1 - pug-parser: ^6.0.0 - vscode-html-languageservice: ^5.0.3 - vscode-languageserver-textdocument: ^1.0.8 - vscode-languageserver-types: ^3.17.2 - dependencies: - '@volar/language-service': link:../language-service - '@volar/shared': link:../shared - '@volar/source-map': link:../source-map - '@volar/transforms': link:../transforms - muggle-string: 0.1.0 - pug-lexer: 5.0.1 - pug-parser: 6.0.0 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.2 - devDependencies: - vscode-html-languageservice: 5.0.3 - packages/shared: specifiers: typesafe-path: ^0.2.2 @@ -417,7 +362,7 @@ importers: vscode-languageserver-textdocument: ^1.0.8 dependencies: '@volar-plugins/html': link:../html - '@volar/pug-language-service': link:../../packages/pug-language-service + '@volar/pug-language-service': 1.0.19 vscode-html-languageservice: 5.0.3 vscode-languageserver-textdocument: 1.0.8 @@ -505,7 +450,7 @@ importers: '@volar/source-map': 1.0.19 '@volar/vue-language-core': 1.0.19 dependencies: - '@volar/pug-language-service': link:../../packages/pug-language-service + '@volar/pug-language-service': 1.0.19 '@volar/source-map': link:../../packages/source-map devDependencies: '@volar/vue-language-core': link:../vue-language-core @@ -1666,6 +1611,68 @@ packages: dev: false optional: true + /@volar/language-core/1.0.19: + resolution: {integrity: sha512-BRxhwqn66VHeLIxxgV4ybY9NDtwMp2bl1w7085qlK7i1pa4jeFR5lJG2U5qd0oI3e0PIWML+PryxSrKNd3+SZw==} + dependencies: + '@volar/source-map': 1.0.19 + muggle-string: 0.1.0 + dev: false + + /@volar/language-service/1.0.19: + resolution: {integrity: sha512-A+s0TCsXFl6rPxbfMyapJF2iMGpQsrmkcYcGe4kcmfnotc2YIYZIogD8l7EjFvzIeSC7ydGINR/flxsYegHfow==} + dependencies: + '@volar/language-core': 1.0.19 + '@volar/shared': 1.0.19 + '@volar/source-map': 1.0.19 + '@volar/transforms': 1.0.19 + '@volar/typescript-faster': 1.0.19 + vscode-html-languageservice: 5.0.3 + vscode-json-languageservice: 5.1.3 + vscode-languageserver-protocol: 3.17.2 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 + dev: false + + /@volar/pug-language-service/1.0.19: + resolution: {integrity: sha512-paeRX40lNBjiIEGZ2uZZM1Z8eSkOy1ThF5ta4d3BlPP6vToUxRr2kBtZ0vn+IBfVVL3+S1Z3OKddnuW2FoVx0g==} + dependencies: + '@volar/language-service': 1.0.19 + '@volar/shared': 1.0.19 + '@volar/source-map': 1.0.19 + '@volar/transforms': 1.0.19 + muggle-string: 0.1.0 + pug-lexer: 5.0.1 + pug-parser: 6.0.0 + vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-types: 3.17.2 + dev: false + + /@volar/shared/1.0.19: + resolution: {integrity: sha512-152MreRvIlZEwHhwZ3ogC71N9Bzl+AVzxPCfwOmBMaXc+r06UxKfTPI9eYu8/ypnVNY5UDPg497PY/DbYlMh3w==} + dependencies: + typesafe-path: 0.2.2 + vscode-uri: 3.0.7 + dev: false + + /@volar/source-map/1.0.19: + resolution: {integrity: sha512-5fYKsl1evR/QAZ9LADto3kzbYKfpjZLWS9reNpxGR3ODPFTpaJgYk4lqghFyq4yU7/e/ZPZ1zLXjEsnL526URw==} + dependencies: + muggle-string: 0.1.0 + dev: false + + /@volar/transforms/1.0.19: + resolution: {integrity: sha512-Y4SUOwssISJGWpaawEUi854imCTQNx3wcZ+KSrgts2IJeiJlcnTz8imt/WAgcZ4Rw/pPq0uOZDHqIEv2/p3viQ==} + dependencies: + '@volar/shared': 1.0.19 + vscode-languageserver-types: 3.17.2 + dev: false + + /@volar/typescript-faster/1.0.19: + resolution: {integrity: sha512-b5Yedv+TsK7HCZSTGZqvGuDoaHy8OjRwRRAOzB0f3F/tvkKog5jjY2nav+2GLAyMc3whVTNQMhpfwBCemgqBVQ==} + dependencies: + semver: 7.3.8 + dev: false + /@vscode/emmet-helper/2.8.4: resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==} dependencies: @@ -1679,6 +1686,7 @@ packages: /@vscode/l10n/0.0.10: resolution: {integrity: sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==} + dev: false /@vscode/test-web/0.0.33: resolution: {integrity: sha512-bnL5yZZk7fVkQzSxtjXqdVOTOEOhRkrePVCILON8qr2ddmVMRLY1vo4HLmVkmkBRrk1cuZCEgD4+EA9QD+h4oA==} @@ -6510,6 +6518,7 @@ packages: vscode-languageserver-textdocument: 1.0.8 vscode-languageserver-types: 3.17.2 vscode-uri: 3.0.7 + dev: false /vscode-json-languageservice/5.1.3: resolution: {integrity: sha512-p0O1Ql5+zyWFIBU4cSxnDcuq9OnbE0MmvNKDYYvz4EPsZ9EHBT3I6KJb5Gk3snkj+jQTFILEZ06cfY7WZxxqPw==} @@ -6541,6 +6550,7 @@ packages: /vscode-languageserver-textdocument/1.0.8: resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + dev: false /vscode-languageserver-types/3.17.2: resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} @@ -6571,6 +6581,7 @@ packages: /vscode-uri/3.0.7: resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + dev: false /vue-demi/0.13.11_vue@3.2.45: resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} diff --git a/examples/pug-language-server/LICENSE b/pug-language-tools/pug-language-server/LICENSE similarity index 100% rename from examples/pug-language-server/LICENSE rename to pug-language-tools/pug-language-server/LICENSE diff --git a/examples/pug-language-server/bin/pug-language-server.js b/pug-language-tools/pug-language-server/bin/pug-language-server.js similarity index 100% rename from examples/pug-language-server/bin/pug-language-server.js rename to pug-language-tools/pug-language-server/bin/pug-language-server.js diff --git a/examples/pug-language-server/package.json b/pug-language-tools/pug-language-server/package.json similarity index 100% rename from examples/pug-language-server/package.json rename to pug-language-tools/pug-language-server/package.json diff --git a/examples/pug-language-server/src/index.ts b/pug-language-tools/pug-language-server/src/index.ts similarity index 100% rename from examples/pug-language-server/src/index.ts rename to pug-language-tools/pug-language-server/src/index.ts diff --git a/examples/pug-language-server/tsconfig.build.json b/pug-language-tools/pug-language-server/tsconfig.build.json similarity index 100% rename from examples/pug-language-server/tsconfig.build.json rename to pug-language-tools/pug-language-server/tsconfig.build.json diff --git a/examples/vscode-pug/LICENSE b/pug-language-tools/pug-language-service/LICENSE similarity index 100% rename from examples/vscode-pug/LICENSE rename to pug-language-tools/pug-language-service/LICENSE diff --git a/packages/pug-language-service/package.json b/pug-language-tools/pug-language-service/package.json similarity index 91% rename from packages/pug-language-service/package.json rename to pug-language-tools/pug-language-service/package.json index d7e7e5c78..b647ff8d9 100644 --- a/packages/pug-language-service/package.json +++ b/pug-language-tools/pug-language-service/package.json @@ -10,7 +10,7 @@ "repository": { "type": "git", "url": "https://github.com/johnsoncodehk/volar.git", - "directory": "packages/pug-language-service" + "directory": "pug-language-tools/pug-language-service" }, "devDependencies": { "vscode-html-languageservice": "^5.0.3" diff --git a/packages/pug-language-service/src/baseParse.ts b/pug-language-tools/pug-language-service/src/baseParse.ts similarity index 100% rename from packages/pug-language-service/src/baseParse.ts rename to pug-language-tools/pug-language-service/src/baseParse.ts diff --git a/packages/pug-language-service/src/index.ts b/pug-language-tools/pug-language-service/src/index.ts similarity index 100% rename from packages/pug-language-service/src/index.ts rename to pug-language-tools/pug-language-service/src/index.ts diff --git a/packages/pug-language-service/src/pugDocument.ts b/pug-language-tools/pug-language-service/src/pugDocument.ts similarity index 100% rename from packages/pug-language-service/src/pugDocument.ts rename to pug-language-tools/pug-language-service/src/pugDocument.ts diff --git a/packages/pug-language-service/src/services/completion.ts b/pug-language-tools/pug-language-service/src/services/completion.ts similarity index 100% rename from packages/pug-language-service/src/services/completion.ts rename to pug-language-tools/pug-language-service/src/services/completion.ts diff --git a/packages/pug-language-service/src/services/documentHighlight.ts b/pug-language-tools/pug-language-service/src/services/documentHighlight.ts similarity index 100% rename from packages/pug-language-service/src/services/documentHighlight.ts rename to pug-language-tools/pug-language-service/src/services/documentHighlight.ts diff --git a/packages/pug-language-service/src/services/documentLinks.ts b/pug-language-tools/pug-language-service/src/services/documentLinks.ts similarity index 100% rename from packages/pug-language-service/src/services/documentLinks.ts rename to pug-language-tools/pug-language-service/src/services/documentLinks.ts diff --git a/packages/pug-language-service/src/services/documentSymbol.ts b/pug-language-tools/pug-language-service/src/services/documentSymbol.ts similarity index 100% rename from packages/pug-language-service/src/services/documentSymbol.ts rename to pug-language-tools/pug-language-service/src/services/documentSymbol.ts diff --git a/packages/pug-language-service/src/services/foldingRanges.ts b/pug-language-tools/pug-language-service/src/services/foldingRanges.ts similarity index 100% rename from packages/pug-language-service/src/services/foldingRanges.ts rename to pug-language-tools/pug-language-service/src/services/foldingRanges.ts diff --git a/packages/pug-language-service/src/services/hover.ts b/pug-language-tools/pug-language-service/src/services/hover.ts similarity index 100% rename from packages/pug-language-service/src/services/hover.ts rename to pug-language-tools/pug-language-service/src/services/hover.ts diff --git a/packages/pug-language-service/src/services/quoteComplete.ts b/pug-language-tools/pug-language-service/src/services/quoteComplete.ts similarity index 100% rename from packages/pug-language-service/src/services/quoteComplete.ts rename to pug-language-tools/pug-language-service/src/services/quoteComplete.ts diff --git a/packages/pug-language-service/src/services/scanner.ts b/pug-language-tools/pug-language-service/src/services/scanner.ts similarity index 100% rename from packages/pug-language-service/src/services/scanner.ts rename to pug-language-tools/pug-language-service/src/services/scanner.ts diff --git a/packages/pug-language-service/src/services/selectionRanges.ts b/pug-language-tools/pug-language-service/src/services/selectionRanges.ts similarity index 100% rename from packages/pug-language-service/src/services/selectionRanges.ts rename to pug-language-tools/pug-language-service/src/services/selectionRanges.ts diff --git a/packages/pug-language-service/tsconfig.build.json b/pug-language-tools/pug-language-service/tsconfig.build.json similarity index 100% rename from packages/pug-language-service/tsconfig.build.json rename to pug-language-tools/pug-language-service/tsconfig.build.json diff --git a/examples/vscode-pug/.vscodeignore b/pug-language-tools/vscode-pug/.vscodeignore similarity index 100% rename from examples/vscode-pug/.vscodeignore rename to pug-language-tools/vscode-pug/.vscodeignore diff --git a/packages/pug-language-service/LICENSE b/pug-language-tools/vscode-pug/LICENSE similarity index 100% rename from packages/pug-language-service/LICENSE rename to pug-language-tools/vscode-pug/LICENSE diff --git a/examples/vscode-pug/README.md b/pug-language-tools/vscode-pug/README.md similarity index 100% rename from examples/vscode-pug/README.md rename to pug-language-tools/vscode-pug/README.md diff --git a/examples/vscode-pug/client.js b/pug-language-tools/vscode-pug/client.js similarity index 100% rename from examples/vscode-pug/client.js rename to pug-language-tools/vscode-pug/client.js diff --git a/examples/vscode-pug/package.json b/pug-language-tools/vscode-pug/package.json similarity index 89% rename from examples/vscode-pug/package.json rename to pug-language-tools/vscode-pug/package.json index f7968fb2e..2daa2d320 100644 --- a/examples/vscode-pug/package.json +++ b/pug-language-tools/vscode-pug/package.json @@ -5,10 +5,10 @@ "repository": { "type": "git", "url": "https://github.com/johnsoncodehk/volar.git", - "directory": "extensions/vscode-pug" + "directory": "pug-language-tools/vscode-pug" }, - "displayName": "Pug (Volar)", - "description": "Pug (Volar)", + "displayName": "Pug Language Features (Volar)", + "description": "Pug Language Features (Volar)", "author": "johnsoncodehk", "publisher": "johnsoncodehk", "engines": { diff --git a/examples/vscode-pug/scripts/build.js b/pug-language-tools/vscode-pug/scripts/build.js similarity index 100% rename from examples/vscode-pug/scripts/build.js rename to pug-language-tools/vscode-pug/scripts/build.js diff --git a/examples/vscode-pug/server.js b/pug-language-tools/vscode-pug/server.js similarity index 100% rename from examples/vscode-pug/server.js rename to pug-language-tools/vscode-pug/server.js diff --git a/examples/vscode-pug/src/client.ts b/pug-language-tools/vscode-pug/src/client.ts similarity index 92% rename from examples/vscode-pug/src/client.ts rename to pug-language-tools/vscode-pug/src/client.ts index edf0a39e2..c626bd4f0 100644 --- a/examples/vscode-pug/src/client.ts +++ b/pug-language-tools/vscode-pug/src/client.ts @@ -7,9 +7,6 @@ let client: lsp.BaseLanguageClient; export async function activate(context: vscode.ExtensionContext) { - const documentSelector: lsp.DocumentFilter[] = [ - { language: 'jade' }, - ]; const initializationOptions: LanguageServerInitializationOptions = { typescript: { tsdk: path.join( @@ -37,12 +34,12 @@ export async function activate(context: vscode.ExtensionContext) { }, }; const clientOptions: lsp.LanguageClientOptions = { - documentSelector, + documentSelector: [{ language: 'jade' }], initializationOptions, }; client = new lsp.LanguageClient( 'volar-pug-language-server', - 'Pug (Volar Example)', + 'Pug (Volar)', serverOptions, clientOptions, ); diff --git a/examples/vscode-pug/tsconfig.build.json b/pug-language-tools/vscode-pug/tsconfig.build.json similarity index 100% rename from examples/vscode-pug/tsconfig.build.json rename to pug-language-tools/vscode-pug/tsconfig.build.json From 539e4986f435cbfc561ecfc73fe95f1a67cdd456 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 10:43:10 +0800 Subject: [PATCH 5/9] chore: fix build --- plugins/pug/tsconfig.build.json | 2 +- .../pug-language-service/tsconfig.build.json | 8 ++++---- tsconfig.build.json | 2 +- .../vue-language-plugin-pug/tsconfig.build.json | 2 +- .../vue-language-service/tsconfig.build.json | 7 ++++--- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/plugins/pug/tsconfig.build.json b/plugins/pug/tsconfig.build.json index c1cc13fc9..1390a40a5 100644 --- a/plugins/pug/tsconfig.build.json +++ b/plugins/pug/tsconfig.build.json @@ -16,7 +16,7 @@ "path": "../../packages/language-service/tsconfig.build.json" }, { - "path": "../../packages/pug-language-service/tsconfig.build.json" + "path": "../../pug-language-tools/pug-language-service/tsconfig.build.json" }, ], } \ No newline at end of file diff --git a/pug-language-tools/pug-language-service/tsconfig.build.json b/pug-language-tools/pug-language-service/tsconfig.build.json index 85d03a9dd..3e8014af6 100644 --- a/pug-language-tools/pug-language-service/tsconfig.build.json +++ b/pug-language-tools/pug-language-service/tsconfig.build.json @@ -14,16 +14,16 @@ ], "references": [ { - "path": "../shared/tsconfig.build.json" + "path": "../../packages/shared/tsconfig.build.json" }, { - "path": "../source-map/tsconfig.build.json" + "path": "../../packages/source-map/tsconfig.build.json" }, { - "path": "../language-service/tsconfig.build.json" + "path": "../../packages/language-service/tsconfig.build.json" }, { - "path": "../transforms/tsconfig.build.json" + "path": "../../packages/transforms/tsconfig.build.json" }, ], } \ No newline at end of file diff --git a/tsconfig.build.json b/tsconfig.build.json index 201387596..33f4e8305 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -10,7 +10,7 @@ "path": "./extensions/vscode-typescript-vue-plugin/tsconfig.build.json" }, { - "path": "./examples/vscode-pug/tsconfig.build.json" + "path": "./pug-language-tools/vscode-pug/tsconfig.build.json" }, { "path": "./examples/vscode-svelte/tsconfig.build.json" diff --git a/vue-language-tools/vue-language-plugin-pug/tsconfig.build.json b/vue-language-tools/vue-language-plugin-pug/tsconfig.build.json index 2fea0a2d6..808d5d348 100644 --- a/vue-language-tools/vue-language-plugin-pug/tsconfig.build.json +++ b/vue-language-tools/vue-language-plugin-pug/tsconfig.build.json @@ -14,7 +14,7 @@ ], "references": [ { - "path": "../../packages/pug-language-service/tsconfig.build.json" + "path": "../../pug-language-tools/pug-language-service/tsconfig.build.json" }, { "path": "../../packages/source-map/tsconfig.build.json" diff --git a/vue-language-tools/vue-language-service/tsconfig.build.json b/vue-language-tools/vue-language-service/tsconfig.build.json index 12eafedeb..5ba4c6f8a 100644 --- a/vue-language-tools/vue-language-service/tsconfig.build.json +++ b/vue-language-tools/vue-language-service/tsconfig.build.json @@ -45,9 +45,6 @@ { "path": "../../packages/language-service/tsconfig.build.json" }, - { - "path": "../../packages/pug-language-service/tsconfig.build.json" - }, { "path": "../../packages/shared/tsconfig.build.json" }, @@ -64,5 +61,9 @@ { "path": "../vue-typescript/tsconfig.build.json" }, + // pug-language-tools + { + "path": "../../pug-language-tools/pug-language-service/tsconfig.build.json" + }, ], } \ No newline at end of file From b936cdad0a34dba0c71b8f94c065d8b46ab0dff3 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 10:47:42 +0800 Subject: [PATCH 6/9] chore: fix build --- pnpm-lock.yaml | 125 ++++++++++++++++++++------------------------ pnpm-workspace.yaml | 1 + 2 files changed, 58 insertions(+), 68 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d39c0234..feabc5115 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -362,7 +362,7 @@ importers: vscode-languageserver-textdocument: ^1.0.8 dependencies: '@volar-plugins/html': link:../html - '@volar/pug-language-service': 1.0.19 + '@volar/pug-language-service': link:../../pug-language-tools/pug-language-service vscode-html-languageservice: 5.0.3 vscode-languageserver-textdocument: 1.0.8 @@ -401,6 +401,61 @@ importers: '@volar/shared': link:../../packages/shared vscode-languageserver-textdocument: 1.0.8 + pug-language-tools/pug-language-server: + specifiers: + '@volar-plugins/pug': 1.0.19 + '@volar-plugins/pug-beautify': 1.0.19 + '@volar/language-server': 1.0.19 + dependencies: + '@volar-plugins/pug': link:../../plugins/pug + '@volar-plugins/pug-beautify': link:../../plugins/pug-beautify + '@volar/language-server': link:../../packages/language-server + + pug-language-tools/pug-language-service: + specifiers: + '@volar/language-service': 1.0.19 + '@volar/shared': 1.0.19 + '@volar/source-map': 1.0.19 + '@volar/transforms': 1.0.19 + muggle-string: ^0.1.0 + pug-lexer: ^5.0.1 + pug-parser: ^6.0.0 + vscode-html-languageservice: ^5.0.3 + vscode-languageserver-textdocument: ^1.0.8 + vscode-languageserver-types: ^3.17.2 + dependencies: + '@volar/language-service': link:../../packages/language-service + '@volar/shared': link:../../packages/shared + '@volar/source-map': link:../../packages/source-map + '@volar/transforms': link:../../packages/transforms + muggle-string: 0.1.0 + pug-lexer: 5.0.1 + pug-parser: 6.0.0 + vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-types: 3.17.2 + devDependencies: + vscode-html-languageservice: 5.0.3 + + pug-language-tools/vscode-pug: + specifiers: + '@types/vscode': 1.67.0 + '@volar/language-server': 1.0.19 + '@volar/pug-language-server': 1.0.19 + '@volar/vscode-language-client': 1.0.19 + esbuild: latest + typesafe-path: ^0.2.2 + vsce: latest + vscode-languageclient: ^8.0.2 + devDependencies: + '@types/vscode': 1.67.0 + '@volar/language-server': link:../../packages/language-server + '@volar/pug-language-server': link:../pug-language-server + '@volar/vscode-language-client': link:../../packages/vscode-language-client + esbuild: 0.16.13 + typesafe-path: 0.2.2 + vsce: 2.15.0 + vscode-languageclient: 8.0.2 + vue-language-tools/typescript-vue-plugin: specifiers: '@volar/typescript-faster': 1.0.19 @@ -450,7 +505,7 @@ importers: '@volar/source-map': 1.0.19 '@volar/vue-language-core': 1.0.19 dependencies: - '@volar/pug-language-service': 1.0.19 + '@volar/pug-language-service': link:../../pug-language-tools/pug-language-service '@volar/source-map': link:../../packages/source-map devDependencies: '@volar/vue-language-core': link:../vue-language-core @@ -1611,68 +1666,6 @@ packages: dev: false optional: true - /@volar/language-core/1.0.19: - resolution: {integrity: sha512-BRxhwqn66VHeLIxxgV4ybY9NDtwMp2bl1w7085qlK7i1pa4jeFR5lJG2U5qd0oI3e0PIWML+PryxSrKNd3+SZw==} - dependencies: - '@volar/source-map': 1.0.19 - muggle-string: 0.1.0 - dev: false - - /@volar/language-service/1.0.19: - resolution: {integrity: sha512-A+s0TCsXFl6rPxbfMyapJF2iMGpQsrmkcYcGe4kcmfnotc2YIYZIogD8l7EjFvzIeSC7ydGINR/flxsYegHfow==} - dependencies: - '@volar/language-core': 1.0.19 - '@volar/shared': 1.0.19 - '@volar/source-map': 1.0.19 - '@volar/transforms': 1.0.19 - '@volar/typescript-faster': 1.0.19 - vscode-html-languageservice: 5.0.3 - vscode-json-languageservice: 5.1.3 - vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.8 - vscode-uri: 3.0.7 - dev: false - - /@volar/pug-language-service/1.0.19: - resolution: {integrity: sha512-paeRX40lNBjiIEGZ2uZZM1Z8eSkOy1ThF5ta4d3BlPP6vToUxRr2kBtZ0vn+IBfVVL3+S1Z3OKddnuW2FoVx0g==} - dependencies: - '@volar/language-service': 1.0.19 - '@volar/shared': 1.0.19 - '@volar/source-map': 1.0.19 - '@volar/transforms': 1.0.19 - muggle-string: 0.1.0 - pug-lexer: 5.0.1 - pug-parser: 6.0.0 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.2 - dev: false - - /@volar/shared/1.0.19: - resolution: {integrity: sha512-152MreRvIlZEwHhwZ3ogC71N9Bzl+AVzxPCfwOmBMaXc+r06UxKfTPI9eYu8/ypnVNY5UDPg497PY/DbYlMh3w==} - dependencies: - typesafe-path: 0.2.2 - vscode-uri: 3.0.7 - dev: false - - /@volar/source-map/1.0.19: - resolution: {integrity: sha512-5fYKsl1evR/QAZ9LADto3kzbYKfpjZLWS9reNpxGR3ODPFTpaJgYk4lqghFyq4yU7/e/ZPZ1zLXjEsnL526URw==} - dependencies: - muggle-string: 0.1.0 - dev: false - - /@volar/transforms/1.0.19: - resolution: {integrity: sha512-Y4SUOwssISJGWpaawEUi854imCTQNx3wcZ+KSrgts2IJeiJlcnTz8imt/WAgcZ4Rw/pPq0uOZDHqIEv2/p3viQ==} - dependencies: - '@volar/shared': 1.0.19 - vscode-languageserver-types: 3.17.2 - dev: false - - /@volar/typescript-faster/1.0.19: - resolution: {integrity: sha512-b5Yedv+TsK7HCZSTGZqvGuDoaHy8OjRwRRAOzB0f3F/tvkKog5jjY2nav+2GLAyMc3whVTNQMhpfwBCemgqBVQ==} - dependencies: - semver: 7.3.8 - dev: false - /@vscode/emmet-helper/2.8.4: resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==} dependencies: @@ -1686,7 +1679,6 @@ packages: /@vscode/l10n/0.0.10: resolution: {integrity: sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==} - dev: false /@vscode/test-web/0.0.33: resolution: {integrity: sha512-bnL5yZZk7fVkQzSxtjXqdVOTOEOhRkrePVCILON8qr2ddmVMRLY1vo4HLmVkmkBRrk1cuZCEgD4+EA9QD+h4oA==} @@ -6518,7 +6510,6 @@ packages: vscode-languageserver-textdocument: 1.0.8 vscode-languageserver-types: 3.17.2 vscode-uri: 3.0.7 - dev: false /vscode-json-languageservice/5.1.3: resolution: {integrity: sha512-p0O1Ql5+zyWFIBU4cSxnDcuq9OnbE0MmvNKDYYvz4EPsZ9EHBT3I6KJb5Gk3snkj+jQTFILEZ06cfY7WZxxqPw==} @@ -6550,7 +6541,6 @@ packages: /vscode-languageserver-textdocument/1.0.8: resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} - dev: false /vscode-languageserver-types/3.17.2: resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} @@ -6581,7 +6571,6 @@ packages: /vscode-uri/3.0.7: resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} - dev: false /vue-demi/0.13.11_vue@3.2.45: resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b8001422e..a709d6d21 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,4 +4,5 @@ packages: - 'extensions/*' - 'packages/*' - 'plugins/*' + - 'pug-language-tools/*' - 'vue-language-tools/*' From 87d6ed54228462010d213235eb336d6d047ac87e Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 10:51:35 +0800 Subject: [PATCH 7/9] chore: remove `--filter` for ci --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dca795bee..b527984ec 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,6 +22,6 @@ jobs: # install pnpm - run: npm i -g pnpm - - run: pnpm install --frozen-lockfile --no-optional --filter "." --filter "./packages/**" --filter "./plugins/**" --filter "./vue-language-tools/**" + - run: pnpm install --frozen-lockfile --no-optional - run: pnpm run build-ci - run: pnpm run test From 7f4c621f4c7aa2aed250074ac1dcd3c5241dba0c Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 11:06:59 +0800 Subject: [PATCH 8/9] workflow: add pug extension release script --- package.json | 5 +++-- pnpm-lock.yaml | 2 -- pug-language-tools/vscode-pug/package.json | 1 - pug-language-tools/vscode-pug/scripts/build.js | 2 +- pug-language-tools/vscode-pug/src/client.ts | 1 - 5 files changed, 4 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 1b87d1d34..7406f5968 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,11 @@ "watch:typescript-vue-plugin": "cd ./extensions/vscode-typescript-vue-plugin && npm run watch", "prerelease": "npm run build && npm run test", "version:test": "lerna version --exact --force-publish --yes --sync-workspace-lock --no-push --no-git-tag-version", - "release": "npm run release:base && npm run release:vue-language-features && npm run release:typescript-vue-plugin", + "release": "npm run release:base && npm run release:vue && npm run release:pug && npm run release:typescript-vue-plugin", "release:base": "lerna publish --exact --force-publish --yes --sync-workspace-lock", "release:base-next": "lerna publish --exact --force-publish --yes --sync-workspace-lock --dist-tag next", - "release:vue-language-features": "cd ./extensions/vscode-vue-language-features && npm run release", + "release:vue": "cd ./extensions/vscode-vue-language-features && npm run release", + "release:pug": "cd ./pug-language-tools/vscode-pug && npm run release", "release:typescript-vue-plugin": "cd ./extensions/vscode-typescript-vue-plugin && npm run release", "test": "vitest run", "docs:dev": "cd docs && npm run dev", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index feabc5115..421623264 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -441,7 +441,6 @@ importers: '@types/vscode': 1.67.0 '@volar/language-server': 1.0.19 '@volar/pug-language-server': 1.0.19 - '@volar/vscode-language-client': 1.0.19 esbuild: latest typesafe-path: ^0.2.2 vsce: latest @@ -450,7 +449,6 @@ importers: '@types/vscode': 1.67.0 '@volar/language-server': link:../../packages/language-server '@volar/pug-language-server': link:../pug-language-server - '@volar/vscode-language-client': link:../../packages/vscode-language-client esbuild: 0.16.13 typesafe-path: 0.2.2 vsce: 2.15.0 diff --git a/pug-language-tools/vscode-pug/package.json b/pug-language-tools/vscode-pug/package.json index 2daa2d320..42e018f11 100644 --- a/pug-language-tools/vscode-pug/package.json +++ b/pug-language-tools/vscode-pug/package.json @@ -47,7 +47,6 @@ "@volar/pug-language-server": "1.0.19", "@types/vscode": "1.67.0", "@volar/language-server": "1.0.19", - "@volar/vscode-language-client": "1.0.19", "esbuild": "latest", "typesafe-path": "^0.2.2", "vsce": "latest", diff --git a/pug-language-tools/vscode-pug/scripts/build.js b/pug-language-tools/vscode-pug/scripts/build.js index f37b53b00..b7d52f71a 100644 --- a/pug-language-tools/vscode-pug/scripts/build.js +++ b/pug-language-tools/vscode-pug/scripts/build.js @@ -1,7 +1,7 @@ require('esbuild').build({ entryPoints: { client: './out/client.js', - server: './node_modules/@volar-examples/angular-language-server/bin/angular-language-server.js', + server: './node_modules/@volar/pug-language-server/bin/pug-language-server.js', }, bundle: true, metafile: process.argv.includes('--metafile'), diff --git a/pug-language-tools/vscode-pug/src/client.ts b/pug-language-tools/vscode-pug/src/client.ts index c626bd4f0..9af36843a 100644 --- a/pug-language-tools/vscode-pug/src/client.ts +++ b/pug-language-tools/vscode-pug/src/client.ts @@ -16,7 +16,6 @@ export async function activate(context: vscode.ExtensionContext) { }, diagnosticModel: DiagnosticModel.Pull, serverMode: ServerMode.Syntactic, // avoid cross file behavior for better performance - disableFileWatcher: true, }; const serverModule = vscode.Uri.joinPath(context.extensionUri, 'server.js'); const runOptions = { execArgv: [] }; From f8df7870b385419846b83c965401698cb73acf01 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Tue, 3 Jan 2023 11:10:27 +0800 Subject: [PATCH 9/9] chore: readme --- pug-language-tools/vscode-pug/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pug-language-tools/vscode-pug/README.md b/pug-language-tools/vscode-pug/README.md index 116b81ccb..38850bfe1 100644 --- a/pug-language-tools/vscode-pug/README.md +++ b/pug-language-tools/vscode-pug/README.md @@ -1 +1,3 @@ # Pug Language Features (Volar) + +Basic language support for Pug base on [vscode-html-languageservice](https://github.com/microsoft/vscode-html-languageservice).