This document provides links and references to all the key resources needed for building the Soar VS Code extension.
- Repository: https://github.com/soartech/soar-language-server
- Language: Java
- Key Locations:
- Main source:
src/main/java/com/soartech/soar/lsp/ - Resources:
src/main/resources/ - Build:
build.gradle
- Main source:
- Purpose: LSP implementation for Soar providing diagnostics, hover, completion, and navigation
- Repository: https://bitbucket.org/bdegrendel/soar-vscode-extension/src/master/
- Language: JavaScript/TypeScript
- Key Locations:
- Grammar:
syntaxes/soar.tmLanguage.json - Extension:
extension.js - Package:
package.json
- Grammar:
- Purpose: Reference for TextMate grammar and basic extension structure
- Repository: https://github.com/SoarGroup/VisualSoar
- Language: Java
- Key Locations:
- DataMap logic:
src/main/java/edu/umich/soar/visualsoar/datamap/ - DataMap checker:
src/main/java/edu/umich/soar/visualsoar/datamap/DataMapChecker.java - DataMap nodes:
src/main/java/edu/umich/soar/visualsoar/datamap/DataMapNode.java - Parser:
src/main/java/edu/umich/soar/visualsoar/parser/ - UI:
src/main/java/edu/umich/soar/visualsoar/graph/
- DataMap logic:
- Purpose: Reference for DataMap data structures, validation logic, and UI patterns
- Extension API: https://code.visualstudio.com/api
- Extension Guides: https://code.visualstudio.com/api/extension-guides/overview
- Extension Manifest: https://code.visualstudio.com/api/references/extension-manifest
- Activation Events: https://code.visualstudio.com/api/references/activation-events
- Contribution Points: https://code.visualstudio.com/api/references/contribution-points
- LSP Specification: https://microsoft.github.io/language-server-protocol/
- LSP Overview: https://microsoft.github.io/language-server-protocol/overviews/lsp/overview/
- vscode-languageclient: https://www.npmjs.com/package/vscode-languageclient
- vscode-languageserver: https://www.npmjs.com/package/vscode-languageserver
- Language Grammars: https://macromates.com/manual/en/language_grammars
- Syntax Highlight Guide: https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide
- Scope Naming: https://www.sublimetext.com/docs/scope_naming.html
- TextMate Language Grammar: https://macromates.com/manual/en/language_grammars
- TypeScript Handbook: https://www.typescriptlang.org/docs/handbook/intro.html
- TypeScript for VS Code: https://code.visualstudio.com/docs/languages/typescript
vscode.languages.registerCompletionItemProvider- Code completionsvscode.languages.createDiagnosticCollection- Error/warning diagnosticsvscode.languages.registerHoverProvider- Hover informationvscode.languages.registerDefinitionProvider- Go to definition
vscode.window.createTreeView- Tree view in sidebarvscode.window.createWebviewPanel- Webview panelsvscode.window.showInformationMessage- Notificationsvscode.window.createStatusBarItem- Status bar items
vscode.workspace.findFiles- Find files by patternvscode.workspace.createFileSystemWatcher- Watch file changesvscode.workspace.getConfiguration- Get settings
vscode.commands.registerCommand- Register commandsvscode.commands.executeCommand- Execute commands
- Soar Manual: https://soar.eecs.umich.edu/documentation
- Soar Tutorial: https://soar.eecs.umich.edu/tutorial
- Soar Syntax: https://github.com/SoarGroup/Soar/wiki/SyntaxQuickReference
- Soar Group: https://github.com/SoarGroup
- Soar Wiki: https://github.com/SoarGroup/Soar/wiki
- Soar Downloads: https://soar.eecs.umich.edu/downloads
- Python Extension: https://github.com/microsoft/vscode-python
- Java Extension: https://github.com/redhat-developer/vscode-java
- C/C++ Extension: https://github.com/microsoft/vscode-cpptools
- LSP Sample: https://github.com/microsoft/vscode-extension-samples/tree/main/lsp-sample
- LSP Multi-Root Sample: https://github.com/microsoft/vscode-extension-samples/tree/main/lsp-multi-server-sample
- TreeView Sample: https://github.com/microsoft/vscode-extension-samples/tree/main/tree-view-sample
- Custom Editor Sample: https://github.com/microsoft/vscode-extension-samples/tree/main/custom-editor-sample
- vsce (VS Code Extension Manager): https://github.com/microsoft/vscode-vsce
- TypeScript Compiler: https://www.typescriptlang.org/
- esbuild: https://esbuild.github.io/
- webpack: https://webpack.js.org/
- @vscode/test-electron: https://www.npmjs.com/package/@vscode/test-electron
- Mocha: https://mochajs.org/
- VS Code Testing Guide: https://code.visualstudio.com/api/working-with-extensions/testing-extension
- ESLint: https://eslint.org/
- @typescript-eslint: https://typescript-eslint.io/
- Gradle: https://gradle.org/
- Maven: https://maven.apache.org/
- Adoptium JDK: https://adoptium.net/
- Oracle JDK: https://www.oracle.com/java/technologies/downloads/
{
"vscode": "^1.80.0",
"vscode-languageclient": "^9.0.0",
"@vscode/test-electron": "^2.3.0",
"@vscode/vsce": "^2.19.0",
"typescript": "^5.0.0",
"@types/node": "^18.x",
"@types/vscode": "^1.80.0",
"eslint": "^8.40.0",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"mocha": "^10.0.0",
"@types/mocha": "^10.0.0"
}Once built, key locations will be:
src/
├── extension.ts # Main entry point
├── client/
│ └── lspClient.ts # LSP client implementation
├── server/
│ └── serverConfig.ts # Server configuration
├── datamap/
│ ├── index.ts # Core datamap class
│ ├── types.ts # Type definitions
│ ├── parser.ts # Datamap parser
│ ├── validator.ts # Datamap validation
│ ├── diagnostics.ts # VS Code diagnostics integration
│ ├── loader.ts # Datamap loader
│ └── utils.ts # Utility functions
├── providers/
│ └── completionProvider.ts # Code completion provider
└── ui/
├── treeview.ts # TreeView provider
└── webview/
└── datamapPanel.ts # Webview panel
For reference when porting DataMap logic:
src/main/java/edu/umich/soar/visualsoar/
├── datamap/
│ ├── DataMap.java # Main datamap class
│ ├── DataMapNode.java # Node representation
│ ├── SoarWorkingMemoryModel.java # WM model
│ ├── DataMapChecker.java # Validation logic
│ └── DataMapTree.java # Tree structure
├── parser/
│ ├── ParseException.java
│ ├── SoarParser.java # Main parser
│ └── TokenMgrError.java
└── graph/
└── DataMapGraph.java # Graph visualization
- Extension Not Activating: Check activation events in package.json
- LSP Not Starting: Verify Java installation and server JAR path
- Syntax Highlighting Not Working: Validate TextMate grammar JSON
- TypeScript Errors: Check tsconfig.json and type definitions
- VS Code Extension Host: Press F5 to launch debug instance
- Developer Tools: Help > Toggle Developer Tools
- Extension Logs: View > Output > Select "Soar Language Server"
- Publisher Portal: https://marketplace.visualstudio.com/manage
- Publishing Guide: https://code.visualstudio.com/api/working-with-extensions/publishing-extension
- Marketplace Guidelines: https://code.visualstudio.com/api/references/extension-guidelines
- CI/CD for Extensions: https://code.visualstudio.com/api/working-with-extensions/continuous-integration
- Original Soar papers and academic publications can provide context
- Check https://soar.eecs.umich.edu/publications
- Stack Overflow: Tag questions with
vscode-extensionsandsoar - VS Code Extension Discord: Community discussions
- Soar mailing lists: For Soar-specific questions
This guide was created for:
- VS Code API: 1.80.0+
- Node.js: 16.x or later
- TypeScript: 5.0+
- LSP: 3.17
- Java: 11+ (for Language Server)
Make sure to review licenses for:
- VS Code Extension API (MIT)
- Soar Language Server (check repository)
- VisualSoar (check repository)
- Any dependencies you include
- For issues with this extension: Create issues in your repository
- For Soar Language Server issues: https://github.com/soartech/soar-language-server/issues
- For VisualSoar issues: https://github.com/SoarGroup/VisualSoar/issues
- For VS Code Extension API issues: https://github.com/microsoft/vscode/issues