Feat/lsp UI integration - #2
Conversation
…ation#2621) * fix(editor): prevent false language mode recommendations - recommend only language-mode plugins available in the registry - suppress built-in, extensionless, and arbitrary file false positives - remove the direct plugin-request issue action - add regression tests for unknown extensions * fix the stale network cache things
…tion#2553) * fix(admob): harden consent, banners, and variant builds - integrate UMP consent handling and reactive privacy choices - serialize adaptive banner visibility across pages and keyboard changes - make free and paid Cordova variant configuration idempotent - commit and validate a deterministic self-contained AdMob bundle - remove vulnerable legacy toolchains and update affected lockfiles - replace the legacy soft-input workaround with adjustResize - add tests, lockfile checks, bundle freshness, and security auditing to CI * fix(admob): harden banner suppression and variant builds - make banner suppression reason-aware across Pro and rewarded passes - centralize reward state refresh, expiry scheduling, and failure handling - remove stale Cordova consent and persisted AdMob variant metadata - add ES2020-compatible access and Java 21 Android native CI coverage - enforce transient plugin setup and clean tracked build state - remove the obsolete large-screen quicktools tutorial * fix: dev * chore: remove CI workflow changes --------- Co-authored-by: Ajit Kumar <dellevenjack@gmail> Co-authored-by: Raunak Raj <71929976+bajrangCoder@users.noreply.github.com>
…oundation#2627) * feat(lsp): support multiple language servers per editor * fix: spell * fix(lsp): honor diagnostics provider opt-out * refactor(lsp): consume standalone multi-server client * fix
Greptile SummaryThe PR integrates expanded LSP UI and workspace-edit behavior alongside substantial AdMob, configuration, and build-system updates.
Confidence Score: 2/5The PR is not safe to merge until workspace edits are constrained to canonical workspace paths and reconnect restores the LSP session. The workspace-edit handler still permits out-of-workspace modifications for rootless or non-canonical URIs, while the reconnect callback replaces the socket without reinitializing the protocol or reopening tracked documents. Files Needing Attention: src/cm/lsp/transport.ts
|
| Filename | Overview |
|---|---|
| src/cm/lsp/transport.ts | Adds workspace-edit handling and reconnect support, but workspace containment remains bypassable and reconnect still does not restore LSP session state. |
| src/cm/lsp/clientManager.ts | Expands multi-client lifecycle and URI handling while explicitly supporting clients initialized without a workspace root. |
| src/cm/lsp/workspace.ts | Adds multi-view file tracking and host-backed file display used by workspace edits. |
| src/cm/lsp/tooltipExtensions.ts | Expands hover and signature-help UI rendering without an eligible follow-up finding. |
| src/components/referencesPanel/utils.js | Adds LSP reference URI conversion and navigation without an eligible follow-up finding. |
| src/plugins/admob/src/android/cordova/ads/Banner.kt | Substantially revises native banner lifecycle and layout behavior without an eligible follow-up finding. |
| utils/config.js | Reworks Cordova configuration generation and plugin handling without an eligible follow-up finding. |
Reviews (2): Last reviewed commit: "feat(editor): resolve LSP file:// URIs a..." | Re-trigger Greptile
LspToPosition threw range error on format error. We attempt to fix it here with by clamping so we get the correct line count between the client and server. applyTextEdit as also been extracted so both transport and client manager can import it from the helper.
LspToPosition threw range error on format error. We attempt to fix it here with by clamping so we get the correct line count between the client and server. applyTextEdit as also been extracted so both transport and client manager can import it from the helper.
go to def and similar fonction have been added, a new interceptFileLink method has been created to solve an FileUriExposedException you may get if taping the signature link on the hover. if the link is a website, it skips and let the normal behavior occur ( open a web browser page ) if the link is a file, it modifies the uri so the tap behave like a go to instead of crashing the whole app. There are notably also some fixes for code actions, rename...ect, now they use the new lspPostionToOffset that uses clamping
…actions menu Added resolveContentUriForFileUri() to map LSP file:// responses back to content:// and sftp:// URIs via addedFolder matching Refactor editorManager displayFile/openFile to resolve URIs before opening, enabling cross-workspace go-to-definition and references Added SFTP path-aware root URI resolution for remote workspace context Replace selection menu code-actions button with full LSP actions menu (definition, declaration, implementation, type-definition, references, rename, code-actions) with single-item auto-execution
2b6f880 to
32b9957
Compare
| const inWorkspace = | ||
| !allowedRoots.length || | ||
| allowedRoots.some( | ||
| (root) => uri === root || uri.startsWith(`${root}/`), | ||
| ); |
There was a problem hiding this comment.
Workspace boundary remains bypassable
When an LSP client has no workspace root, every edit URI passes this check; rooted clients also accept unnormalized URIs that lexically begin with the root. The handler then opens the URI and applies the server-provided edits, allowing an accessible file outside the active workspace to be modified.
How this was verified: The accepted URI was traced from the permissive or lexical boundary check through workspace.displayFile to applyTextEdits.
No description provided.