Repository navigation
Conversation
Collaborator
Author
|
The previous commit implements "go to definition" for classes and class members. |
isc-klu
marked this pull request as ready for review
April 24, 2026 14:53
isc-klu
marked this pull request as draft
August 25, 2026 15:29
isc-klu
marked this pull request as ready for review
September 1, 2026 02:23
isc-klu
marked this pull request as draft
September 2, 2026 14:55
isc-klu
force-pushed
the
local-intellisense
branch
2 times, most recently
from
October 19, 2026 15:50
6dcb441 to
0f6398d
Compare
Most IntelliSense data was fetched from IRIS over REST, even for information already present in the workspace's own .cls/.mac/.int/.inc documents. That costs round trips, can lag the local state, and stops working when no server is available. Add ascot, a WebAssembly component (loaded through jco) that indexes the workspace and answers queries through a WIT-defined Workspace interface. Out-of-workspace classes and routines still come from IRIS, via an `IrisConnection` import that ascot calls back into. Backed by ascot first, falling back to the REST implementation when it has no answer: hover, definition, class/member completion, signature help, and document symbols. Diagnostics now come from ascot's checker, which catches far more than the previous syntax-only pass. New, provided entirely by ascot: references, workspace symbols, inlay hints. Also adds an `intersystems.language-server.ascot.trace` setting that logs every call across the server/ascot boundary with timings.
isc-klu
force-pushed
the
local-intellisense
branch
from
October 19, 2026 17:30
0f6398d to
74a2856
Compare
isc-klu
marked this pull request as ready for review
October 19, 2026 17:43
ascot 0.4.2 replaces IrisConnection with IrisContext and Atelier. Bind the low-level Atelier (query and getDoc over the client's REST bridge) and drop the hand-rolled %Dictionary queries, FormalSpec parsing, and routine probing, which ascot's own AtelierContext now does. A lookup with no server throws, so ascot reports it as taken on trust rather than not found.
Revert the common package version bump, the js-debug workspace setting, and the unused @types/eslint dev dependency.
One tracing proxy for both directions of the server/ascot boundary, derived severity and symbol-kind mappings, and workspaces cached as promises.
Workspace classes and members become rows of the same shape the REST queries return, so the unchanged loops render them and the parallel item builders go. Class documentation resolves lazily through ascot like it does through REST.
A configuration or connection change may have switched the folder's server, so tell each workspace with setEnv, which stales every analysis; the following diagnostics refresh re-checks against the new one.
… without a server, and expose its style rules as settings Names are plain strings and an argument's mode is by-ref, output or absent. A folder with no server connection checks against the IRIS declarations bundled with ascot. The style rules are resource-scoped settings under intersystems.language-server.ascot.style, each unchecked until set, with per-command and per-function tables. Version 2.8.7-beta.3 for the betas.
isc-klu
marked this pull request as draft
November 5, 2026 18:25
Collaborator
Author
|
@isc-bsaviano I am working on integrating ascot v0.5.0, so made this PR draft for now. |
# Conflicts: # client/package.json # package.json # server/package.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-definedWorkspaceinterface.Existing capabilities now backed by ascot first, falling back to the existing REST-based implementation when it has no answer:
Diagnostics: ascot's checker catches substantially more than the previous implementation, which was limited to syntactic errors.
Brand new capabilities, provided entirely by ascot:
Build note: ascot ships its WebAssembly modules in its npm package and loads them relative to its own
__dirname. Since webpack bundles that code intoserver/out/and leaves__dirnamereal, the lookup lands inserver/lib/. The server webpack config now copies the.wasmfiles there as part of the build (copy-webpack-plugin), alongside the existingisclexer.node, so they ship in the.vsixwith no separate install step.