#!/usr/bin/env python3 # ollie:parallel read # description: Get diagnostics (errors, warnings) for a file. # Args: 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 ") 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)")