Files
Claude-Code-Workflow/codex-lens/examples/test_lsp_capabilities.py

80 lines
2.2 KiB
Python

"""Test LSP server capabilities."""
import asyncio
import json
from pathlib import Path
from codexlens.lsp.standalone_manager import StandaloneLspManager
async def test_capabilities():
"""Test what capabilities Pyright provides."""
workspace_root = Path("D:/Claude_dms3/codex-lens/src")
print("Testing LSP Capabilities")
print("="*80)
# Create LSP manager
manager = StandaloneLspManager(
workspace_root=str(workspace_root),
timeout=10.0,
)
try:
# Start LSP manager
print("\n1. Starting LSP manager...")
await manager.start()
print(" [OK] LSP manager started")
# Get server state for Python
print("\n2. Getting Python server state...")
test_file = str(workspace_root / "codexlens/search/hybrid_search.py")
state = await manager._get_server(test_file)
if not state:
print(" [ERROR] Could not get server state!")
return
print(f" [OK] Server state obtained")
print(f" Initialized: {state.initialized}")
# Print capabilities
print("\n3. Server Capabilities:")
print("-"*80)
caps = state.capabilities
# Key capabilities to check
important_caps = [
"callHierarchyProvider",
"definitionProvider",
"referencesProvider",
"documentSymbolProvider",
"workspaceSymbolProvider",
"hoverProvider",
"completionProvider",
"signatureHelpProvider",
]
for cap in important_caps:
value = caps.get(cap)
status = "[YES]" if value else "[NO]"
print(f" {status} {cap}: {value}")
# Print all capabilities as JSON for reference
print("\n4. Full capabilities (formatted):")
print("-"*80)
print(json.dumps(caps, indent=2))
except Exception as e:
print(f"\n[ERROR] Error: {e}")
import traceback
traceback.print_exc()
finally:
# Cleanup
print("\n5. Cleaning up...")
await manager.stop()
print(" [OK] LSP manager stopped")
if __name__ == "__main__":
asyncio.run(test_capabilities())