diff --git a/.config/kak/scripts/lsp-diags.py b/.config/kak/scripts/lsp-diags.py index 5f8a2032..3ff98a40 100755 --- a/.config/kak/scripts/lsp-diags.py +++ b/.config/kak/scripts/lsp-diags.py @@ -25,14 +25,19 @@ def parse_specs(data: str): def is_cursor_in_any(cursor: Position, diagnostics: SpecList) -> bool: cl, cc = cursor for (sl, sc), (el, ec) in diagnostics: - if sl == el == cl and sc <= cc <= ec: - return True + if cl < sl or cl > el: + continue + if sl == el: + if cl == sl and sc <= cc <= ec: + return True + elif cl == sl: + if cc >= sc: + return True + elif cl == el: + if cc <= ec: + return True elif sl < cl < el: return True - elif cl == sl and cc >= sc: - return True - elif cl == el and cc <= sc: - return True return False @@ -60,11 +65,17 @@ def main(): diagnostics = parse_specs(payload) _ = outfile.write("ok\n") outfile.flush() + print("ok", flush=True) elif line.startswith("query "): _, pos = line.split(" ", 1) l, c = map(int, pos.strip().split()) result = is_cursor_in_any((l, c), diagnostics) _ = outfile.write("true\n" if result else "false\n") outfile.flush() + print("ok", flush=True) elif line == "exit": break + + +if __name__ == "__main__": + main()