Local IntelliSense - #400
Open
isc-klu wants to merge 116 commits into
Open
Conversation
Co-authored-by: Copilot <copilot@github.com>
Collaborator
Author
|
The previous commit implements "go to definition" for classes and class members. |
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
isc-klu
marked this pull request as ready for review
April 24, 2026 14:53
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
marked this pull request as ready for review
September 1, 2026 02:23
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: