This repository has been archived on 2026-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
ollie-9p/tools/lsp_diagnostics

36 lines
981 B
Python
Executable File

#!/usr/bin/env python3
# ollie:parallel read
# description: Get diagnostics (errors, warnings) for a file.
# Args: <file>
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request
if len(sys.argv) < 2:
print("usage: lsp_diagnostics <file>")
sys.exit(1)
filepath = os.path.abspath(sys.argv[1])
result = request("diagnostics", file=filepath)
if not result:
print("(no diagnostics)")
sys.exit(0)
SEVERITY = {1: "error", 2: "warning", 3: "info", 4: "hint"}
for diag in result:
sev = SEVERITY.get(diag.get("severity", 3), "info")
ln = diag.get("range", {}).get("start", {}).get("line", 0) + 1
col = diag.get("range", {}).get("start", {}).get("character", 0) + 1
msg = diag.get("message", "")
src = diag.get("source", "")
prefix = f"{src}: " if src else ""
print(f"{ln}:{col} {sev}: {prefix}{msg}")
print(f"\n({len(result)} diagnostics)")