-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Editor extensions for GeoDMS .dms files, available for VS Code and Visual Studio 2022/2026.
- Syntax highlighting for
.dmsfiles - IntelliSense completions for operators and keywords
- Signature help (parameter hints) when typing function calls, including overloads
- Operator list sourced from GeoDMS operator CSV
- Signatures sourced from the GeoDMS wiki
The project has two separate extensions that share a common language server:
GeoDMS_Languages/
├── data/
│ └── Operator_v20_0_0.csv # Operator list from GeoDMS release
├── scripts/
│ ├── gen-catalog.mjs # CSV → server/src/operators.ts
│ └── gen-signatures.mjs # Wiki → server/src/wiki-signatures.ts
├── server/
│ └── src/
│ ├── server.ts # LSP server (completions + signatures)
│ ├── completions.ts
│ ├── signatures.ts
│ ├── operators.ts # Generated — do not edit
│ └── wiki-signatures.ts # Generated — do not edit
├── vscode/ # VS Code extension
│ ├── syntaxes/geodms.tmLanguage.json
│ ├── language-configuration.json
│ └── package.json
└── visualstudio/ # Visual Studio extension (C#)
└── GeoDMSLanguage/
VS Code extension bundles the LSP server (TypeScript/Node) directly into the .vsix.
Visual Studio extension is a C# VSIX that wraps the same server via Microsoft.VisualStudio.LanguageServer.Client.
| Tool | Version | Purpose |
|---|---|---|
| Node.js | ≥ 18 | Build VS Code extension + LSP server |
| npm | ≥ 9 | Package management |
| TypeScript | via npm | Compile server |
| Visual Studio 2022/2026 | with VSSDK workload | Build VS extension |
| GeoDMS wiki (local clone) | — | Generate signatures |
git clone https://github.com/<your-org>/GeoDMS_Languages.git
cd GeoDMS_Languages
cd vscode && npm install# From repo root — generates server/src/operators.ts and wiki-signatures.ts
cd vscode
npm run gengen-catalog.mjs reads data/Operator_v20_0_0.csv.
gen-signatures.mjs reads the local GeoDMS wiki (default: C:/projdir/_archief/geodms.wiki).
Pass a custom path: node scripts/gen-signatures.mjs D:/path/to/geodms.wiki
cd vscode
npm run compile # development build
npm run vscode:prepublish # minified production build
npx vsce package # creates geodms-language-x.x.x_vscode.vsix- Open
visualstudio/GeoDMSLanguage.slnin Visual Studio 2022 or 2026 - Build → Release
- Output:
visualstudio/out/geodms-language-x.x.x-vs.vsix
Do this when a new GeoDMS version is released.
- Get
Operator_vXX_X_X.csvfrom the new GeoDMS release - Replace
data/Operator_v20_0_0.csvwith the new file - Update the filename reference if the version changed (currently hardcoded in
scripts/gen-catalog.mjsline 1 comment only — the script reads whatever CSV is passed or the default path)
If you rename the CSV file, update the path in
scripts/gen-catalog.mjs:const csv = readFileSync(join(__dirname, '../data/Operator_vXX_X_X.csv'), 'utf-8');
cd C:/projdir/_archief/geodms.wiki # or wherever your wiki clone is
git pullcd vscode
npm run genCheck server/src/operators.ts and server/src/wiki-signatures.ts for expected operator counts.
npm run compile
npx vsce packageRebuild the Visual Studio extension in Visual Studio (Release build).
Update version in vscode/package.json and <ExtensionVersion> in visualstudio/GeoDMSLanguage/GeoDMSLanguage.csproj, then create a new GitHub release with both .vsix files attached.
- Pull latest GeoDMS wiki
- Replace operator CSV if new version available
- Run
npm run geninvscode/ - Run
npm run compile+npx vsce packageinvscode/ - Build Visual Studio extension in Release mode
- Bump version in
package.jsonand.csproj - Commit changes
- Create GitHub release with tag
vX.X.X - Attach both
.vsixfiles to release