myhELO LSP
A VS Code Language Server Protocol extension providing IDE support for the myhELO JavaScript framework.
Features
- Completions —
_myhelo_boilerplate snippet generates the component constructor + $.inherits call
- Go to Definition — navigate to the definition of
component.* and layer.* members
- Hover — shows component name, file path, and constructor signature on hover
- Diagnostics — validates myhELO component files for correct constructor name,
apply() call, and $.inherits() placement
Structure
.
├── client/ Language Client (VS Code extension host)
│ └── src/
│ └── extension.ts
├── server/ Language Server (standalone Node.js process)
│ └── src/
│ ├── server.ts
│ ├── jsLanguageService.ts
│ └── providers/
│ ├── completion.ts
│ ├── definition.ts
│ ├── diagnostics.ts
│ └── hover.ts
└── js/ Sample myhELO component files (dev/test only)
Development
npm install # installs deps in client/ and server/
npm run compile # tsc -b (project references)
npm run watch # tsc -b -w
npm run lint # eslint
Press F5 in VS Code to launch the Extension Development Host.
Packaging
npx @vscode/vsce package
Produces myhelo-lsp-<version>.vsix. Install on a remote via the VS Code Extensions panel → Install from VSIX.
Note: .vscodeignore controls which client/node_modules packages are bundled into the VSIX. If a runtime dependency is missing on the remote, add a !client/node_modules/<package>/** whitelist entry to .vscodeignore. See PACKAGING.md for details.
Commands
| Command |
Description |
myhELO - Open parent file |
Opens the parent component file for the currently active JS file (e.g. opens component/avatar.js from component/avatar/thing.js) |
myhELO Component Convention
Files under js/component/ and js/layer/ follow this pattern:
component.avatar.thing = function() {
component.avatar.apply(this, arguments);
};
$.inherits(component.avatar.thing, component.avatar);
component.avatar.thing.prototype.my_method = function() { ... };
The LSP validates constructor name, apply() target, and $.inherits() placement against the file path.