36 lines
981 B
Python
Executable File
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)")
|