Skip to content

Local IntelliSense - #400

Open
isc-klu wants to merge 116 commits into
intersystems:masterfrom
isc-klu:local-intellisense
Open

Local IntelliSense#400
isc-klu wants to merge 116 commits into
intersystems:masterfrom
isc-klu:local-intellisense

Conversation

@isc-klu

@isc-klu isc-klu commented Apr 22, 2026

Copy link
Copy Markdown
Collaborator

Currently, this language server retrieves most of its information from IRIS servers, including data that is already available locally—such as class names and method arguments of client-side class documents. This design requires frequent data transfer between the language server and IRIS, may not always reflect the latest state, and becomes unusable when IRIS servers are unavailable.

This PR is a step toward improving existing IntelliSense capabilities and enabling new ones by extracting information directly from local class documents (*.cls, *.mac, *.int, *.inc), via ascot, a WebAssembly component (loaded through jco) that indexes the workspace and answers queries via a WIT-defined Workspace interface.

Existing capabilities now backed by ascot first, falling back to the existing REST-based implementation when it has no answer:

  • Hover
  • Go to Definition
  • Completion for classes and class members
  • SignatureHelp for method calls
  • DocumentSymbol

Diagnostics: ascot's checker catches substantially more than the previous implementation, which was limited to syntactic errors.

Brand new capabilities, provided entirely by ascot:

  • References
  • WorkspaceSymbol
  • InlayHint

@isc-klu
isc-klu requested a review from isc-rsingh April 22, 2026 21:43
@isc-klu isc-klu self-assigned this Apr 22, 2026
Co-authored-by: Copilot <copilot@github.com>
@isc-klu

isc-klu commented Apr 23, 2026

Copy link
Copy Markdown
Collaborator Author

The previous commit implements "go to definition" for classes and class members.

isc-klu and others added 7 commits April 23, 2026 17:36
@isc-klu
isc-klu marked this pull request as ready for review April 24, 2026 14:53
@isc-klu
isc-klu requested a review from isc-bsaviano as a code owner April 24, 2026 14:53
isc-klu and others added 28 commits August 31, 2026 15:43
Moved out of utils/variables.ts and into the same module as the rest
of ascot's exports, per feedback. Swapped the folder emoji for a
necktie, since an ascot is a type of neckwear.
ascot now implements textDocument/documentSymbol and workspace/symbol
natively (WIT: symbol-kind/symbol-info/class-symbol/workspace-symbol,
wired into both the wasm Workspace and the native ascot lsp server),
so its own LSP server gets this for free too. The TS bindings are now
just a thin fetch-and-shape-convert, matching getReferences -- dropped
the manual class/member-to-DocumentSymbol assembly and the
memberKindToSymbolKind lookup table entirely.
# Conflicts:
#	client/package-lock.json
#	client/package.json
#	eslint.config.mjs
#	package-lock.json
#	package.json
#	server/package.json
#	server/src/providers/completion.ts
ascot dropped hover-type/hover-member/macro-expansion from its WIT
surface in favor of one merged hover method; this script's jco
async-exports list still named the old one.
Inline single-use thin wrappers (getCoreModule, loadAscot, convertDiagnostic,
rowToMemberInfo) instead of naming them separately; move convertSymbolInfo and
prettifyNormalArg to their only callers (getDocumentSymbol, signatureHelp.ts);
drop the includeExtends param that was always true and the export on getClass
that had no external caller; replace a truthy-Promise && || trick in
filePathToWorkspace with folder?.uri ?? docURI; remove dead workspace?.
optional chaining now that workspace resolution never returns undefined.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@isc-klu
isc-klu marked this pull request as ready for review September 1, 2026 02:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant