diff --git a/.gitignore b/.gitignore index ff5967d..79da4f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,12 @@ node_modules/ dist/ -/.vscode/ +/.vscode/settings.json # /.vscodeignore /.eslintcache* /page.wiki /personal_access_token package-lock.json +yarn.lock # Packaged files *.vsix diff --git a/.vscodeignore b/.vscodeignore index b48dfd5..bea2ddf 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,9 +1,49 @@ **/*.wiki personal_access_token + +# Workspace config +.vs/ .vscode/ .github/ .git/ + +# Test +.vscode-test/ +.vscode-test-web/ +**/test/ + +# Source code +# out/ **/src/ +# scripts/ + +# Modules +# node_modules/ + +# YAML files +# snippets/*.yaml +# syntaxes/*.yaml +# language-configuration.yaml + +# Compiled config **/tsconfig.json +**/tslint.json +**/.eslintrc.* .eslintcache* +# webpack.config.js +.yarnrc +# yarn.lock +# package-lock.json + +# Uncompiled files +**/*.map +**/*.ts + +# Git Ignore file .gitignore + +# Packaged extensions +**/*.vsix + +# Log file +**/*.log diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 0000000..4f14322 --- /dev/null +++ b/.yarnrc @@ -0,0 +1 @@ +--ignore-engines true diff --git a/README.md b/README.md index ba7d7e0..5b152a6 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,40 @@ -# Wikitext Language Service +# WikiParser Language Server This is a language server extension for Visual Studio Code that provides language supports for the [Wikitext](https://www.mediawiki.org/wiki/Wikitext) language. +## Usage + +This extension does not actively call any code. The server exists as an asset at the location: `server/dist/server.js`. You can call this asset from any extension, for example: + +```typescript +let client: BaseLanguageClient | undefined = undefined; + +async function startWikiParse() : Promise { + const serverPath: string | undefined = vscode.extensions.getExtension('Bhsd.vscode-extension-wikiparser')?.extensionPath; + if (serverPath === undefined) { + return; + } + const serverMain: string = path.join(serverPath, 'server', 'dist', 'server.js'); + const serverOptions: ServerOptions = { + run: { + module: serverMain, + }, + debug: { + module: serverMain, + args: ['--debug'], + }, + }; + const clientOptions: LanguageClientOptions = { + documentSelector: [ + { scheme: 'file', language: 'wikitext' }, + { scheme: 'untitled', language: 'wikitext' }, + ], + }; + client = new NodeLanguageClient('WikiParser Language Server', serverOptions, clientOptions); + await client.start(); +} +``` + ## Features - Linting and quick fixes, offered by [WikiLint](https://npmjs.com/package/wikilint) diff --git a/client/package.json b/client/package.json deleted file mode 100644 index 43c7672..0000000 --- a/client/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "dependencies": { - "vscode-languageclient": "^9.0.1" - }, - "devDependencies": { - "@types/vscode": "^1.95.0" - }, - "engines": { - "vscode": "^1.95.2" - } -} diff --git a/client/src/extension.ts b/client/src/extension.ts deleted file mode 100644 index 7654ab3..0000000 --- a/client/src/extension.ts +++ /dev/null @@ -1,27 +0,0 @@ -import * as path from 'path'; -import {workspace} from 'vscode'; -import {LanguageClient} from 'vscode-languageclient/node'; -import type {ExtensionContext} from 'vscode'; -import type {ServerOptions, LanguageClientOptions} from 'vscode-languageclient/node'; - -let client: LanguageClient | undefined; - -export const activate = (context: ExtensionContext): void => { - if (!client) { - const serverModule = context.asAbsolutePath(path.join('server', 'dist', 'server.js')), - serverOptions: ServerOptions = { - run: {module: serverModule}, - debug: {module: serverModule, args: ['--debug']}, - }, - clientOptions: LanguageClientOptions = { - documentSelector: [{scheme: 'file', language: 'wikitext'}], - synchronize: { - fileEvents: workspace.createFileSystemWatcher('**/.clientrc'), - }, - }; - client = new LanguageClient('Wikitext Language Server', serverOptions, clientOptions); - } - void client.start(); -}; - -export const deactivate = (): Promise | undefined => client?.stop(); diff --git a/client/tsconfig.json b/client/tsconfig.json deleted file mode 100644 index f51f6f3..0000000 --- a/client/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "include": [ - "src/**/*" - ], - "compilerOptions": { - "target": "es2022", - "module": "CommonJS", - "allowSyntheticDefaultImports": true, - "outDir": "dist", - "alwaysStrict": true, - "exactOptionalPropertyTypes": true, - "noImplicitAny": true, - "noImplicitOverride": true, - "noImplicitThis": true, - "noPropertyAccessFromIndexSignature": true, - "noUncheckedIndexedAccess": true, - "strictBindCallApply": true, - "strictFunctionTypes": true, - "strictNullChecks": true, - "useUnknownInCatchVariables": true - } -} diff --git a/package.json b/package.json index 5aadb0d..43428ac 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { "name": "vscode-extension-wikiparser", - "version": "0.0.0", + "version": "1.0.0", "description": "Language server extension for MediaWiki Wikitext that supports linting, autocomplete, and more.", - "displayName": "Wikitext Language Service", + "displayName": "WikiParser Language Server", "categories": [ - "Linters" + "Linters", + "Programming Languages" ], "keywords": [ "mediawiki", @@ -19,58 +20,39 @@ "license": "GPL-3.0", "author": "Bhsd", "publisher": "Bhsd", - "main": "./client/dist/extension", "repository": { "type": "git", "url": "git+https://github.com/bhsd-harry/vscode-extension-wikiparser.git" }, - "activationEvents": [ - "onLanguage:wikitext" - ], "contributes": { "configuration": { "type": "object", - "title": "Wikitext Language Service", + "title": "WikiParser Language Server", "properties": { "wikiparser.lint": { - "scope": "resource", "type": "boolean", "default": true, "description": "Enable linting for Wikitext files." }, "wikiparser.articlePath": { - "scope": "resource", "type": "string", "default": "", - "markdownDescription": "The global constant `wgArticlePath` of the wiki site (e.g., https://en.wikipedia.org/wiki/$1)." + "markdownDescription": "The global constant `wgArticlePath` of the wiki site (e.g. `https://en.wikipedia.org/wiki/` or `https://en.wikipedia.org/wiki/$1`)." } } - }, - "languages": [ - { - "id": "wikitext", - "extensions": [ - ".wiki" - ] - } - ] + } }, - "extensionPack": [ - "RoweWilsonFrederiskHolme.wikitext" - ], "scripts": { "vscode:prepublish": "npm run lint && npm run build", - "build": "tsc --project server/tsconfig.json && tsc --project client/tsconfig.json", - "lint:ts": "tsc --noEmit --project server/tsconfig.json && tsc --noEmit --project client/tsconfig.json && eslint --cache .", + "build": "tsc --project server/tsconfig.json", + "lint:ts": "tsc --noEmit --project server/tsconfig.json && eslint --cache .", "lint:json": "v8r -s server/src/data/schema/info.json server/src/data/*.json", "lint": "npm run lint:ts && npm run lint:json", "package": "vsce package" }, "dependencies": { "@bhsd/common": "^0.4.4", - "@types/node": "^22.9.0", "color-rgba": "^3.0.0", - "vscode-languageclient": "^9.0.1", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.12", "wikilint": "^2.13.5" @@ -78,6 +60,7 @@ "devDependencies": { "@stylistic/eslint-plugin": "^2.10.1", "@types/color-rgba": "^2.1.3", + "@types/node": "^22.9.0", "@types/vscode": "^1.95.0", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0",