The doc still said "absolute paths outside the workspace are not
supported" but the code was changed to allow them. Updated all
three places (Required Fields table, Troubleshooting, Debugging)
to reflect that absolute paths are now accepted.
- Remove reference to non-existent `packages/cli/LSP_DEBUGGING_GUIDE.md`
- Remove reference to unimplemented `/lsp status` slash command
- Replace incorrect `DEBUG=lsp*` env var with actual debug log location
(`~/.qwen/debug/` session files with `[LSP]` tag)
- Remove external Claude Code documentation links (`code.claude.com`)
- Document `isPathSafe` constraint: absolute paths outside workspace
are blocked, users must add server binary directory to PATH
- Add practical troubleshooting: `ps aux | grep <server>` to check
if the server process is actually running
- Add clangd-specific guidance: `--background-index`, `compile_commands.json`
location, and `--compile-commands-dir` usage
- Simplify trust documentation (remove vague "configure in settings")
Key changes:
1. Remove LspLanguageDetector — LSP is now fully config-driven via
.lsp.json or extensions. No more auto-detected built-in presets
that fail when the server binary is missing.
2. Add ensureDocumentOpen — send textDocument/didOpen before every
document-level LSP request (definitions, references, hover,
documentSymbol, implementations, prepareCallHierarchy, diagnostics,
codeActions). This fixes the root cause of most methods returning
empty results (Issue #2106, #1873).
3. Add retry mechanism for slow servers — when a freshly opened
document yields empty results on non-TypeScript servers (jdtls,
clangd, pylsp), wait 2s and retry once. This mirrors the existing
retry logic in workspaceSymbols.
4. Handle LSP 3.17 WorkspaceSymbol format — location.range is now
optional in normalizeSymbolResult, fixing jdtls workspace symbol
responses that omit the range field.
5. Improve workspace symbol warmup — for non-TypeScript servers, open
a workspace file before the first workspace/symbol request and
retry on empty results after a warmup delay.
6. Track warmup-opened URIs — warmupTypescriptServer now returns the
opened URI, which is registered with ensureDocumentOpen to prevent
duplicate didOpen notifications.
Closes#2106, closes#1873
Made-with: Cursor
- remove configuration options such as lsp.enabled, lsp.allowed, lsp.excluded, etc. from settings.json schema
- Delete lspSettingsSchema.ts files and associated JSON schema definitions
- Removed VS Code settings loading function, no longer merge. vscode/settings.json configuration
- Updated LSP documentation to reflect new configurations and experimental flags
-remove allow/exclude parameters in NativeLspService constructor
- Create new LspConfigLoader classes to handle LSP configuration loading and merging
- Updated debug guide to match the new configuration mechanism
- Simplify loadCliConfig functions, remove startLsp options
- Reconstruct the configuration loading process to remove duplicate configuration merge logic
- Add LspConfigLoader classes to implement configuration parsing and merging functions