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

105 lines
3.1 KiB
Python

"""Raw LSP test with debug logging."""
import asyncio
import json
import logging
from pathlib import Path
from codexlens.lsp.standalone_manager import StandaloneLspManager
# Enable debug logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger("codexlens.lsp")
logger.setLevel(logging.DEBUG)
async def test_raw_lsp():
"""Test LSP with debug logging enabled."""
workspace_root = Path("D:/Claude_dms3/codex-lens")
test_file = workspace_root / "test_simple_function.py"
print("Testing Raw LSP Call Hierarchy")
print("="*80)
# Create LSP manager
manager = StandaloneLspManager(
workspace_root=str(workspace_root),
timeout=30.0,
)
try:
# Start LSP manager
print("\n1. Starting LSP manager...")
await manager.start()
print(" [OK] Started")
# Get server state
state = await manager._get_server(str(test_file))
if not state:
print(" [ERROR] No server state!")
return
print(f" Server initialized: {state.initialized}")
print(f" Call hierarchy supported: {state.capabilities.get('callHierarchyProvider')}")
# Open document
print("\n2. Opening document...")
await manager._open_document(state, str(test_file))
print(" [OK] Document opened")
# Wait a bit for Pyright to analyze
print("\n3. Waiting for analysis...")
await asyncio.sleep(2)
print(" [OK] Waited 2 seconds")
# Try call hierarchy on main function (line 12)
print("\n4. Sending prepareCallHierarchy request...")
# Direct request using _send_request
params = {
"textDocument": {"uri": test_file.as_uri()},
"position": {"line": 11, "character": 4} # 0-indexed, "main" function
}
print(f" Params: {json.dumps(params, indent=2)}")
result = await manager._send_request(
state,
"textDocument/prepareCallHierarchy",
params,
)
print(f"\n5. Result: {result}")
print(f" Type: {type(result)}")
if result:
print(f" Items: {len(result)}")
for item in result:
print(f" - {item.get('name')}")
else:
print(" [WARN] No items returned")
print(" This could mean:")
print(" - Position doesn't point to a symbol")
print(" - Pyright hasn't finished analyzing")
print(" - Some other issue")
# Try with the higher-level API
print("\n6. Testing with get_call_hierarchy_items API...")
items = await manager.get_call_hierarchy_items(
file_path=str(test_file),
line=12,
character=5,
)
print(f" Result: {len(items)} items")
except Exception as e:
print(f"\n[ERROR] Error: {e}")
import traceback
traceback.print_exc()
finally:
print("\n7. Cleanup...")
await manager.stop()
print(" [OK] Done")
if __name__ == "__main__":
asyncio.run(test_raw_lsp())