From f25709871cf62bbd110bc5676b9b930a4ea136c9 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Mon, 9 Jun 2025 18:55:37 -0400 Subject: [PATCH] AutoYADM commit: 2025-06-09 18:55:37 --- .config/kak/autoload/lsp.kak | 8 ++++---- .config/kak/scripts/lsp-diags.py | 30 ++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/.config/kak/autoload/lsp.kak b/.config/kak/autoload/lsp.kak index adaed0bd..1cff64bb 100644 --- a/.config/kak/autoload/lsp.kak +++ b/.config/kak/autoload/lsp.kak @@ -216,8 +216,8 @@ define-command lsp-check-inline-diagnostic %{ define-command lsp-diag-set %{ evaluate-commands %sh{ - printf 'set %s\n' "$kak_opt_lsp_inline_diagnostics" >/tmp/diag-in - read result < /tmp/diag-out + printf 'set %s\n' "$kak_opt_lsp_inline_diagnostics" >"$kak_opt_diagpipe_in" + read result < "$kak_opt_diagpipe_out" if [ "$result" != "ok" ]; then echo "info 'failed'" else @@ -228,8 +228,8 @@ define-command lsp-diag-set %{ define-command -params 2 lsp-diag-query %{ evaluate-commands %sh{ - printf 'query %s %s\n' "$1" "$2" >/tmp/diag-in - read result < /tmp/diag-out + printf 'query %s %s\n' "$1" "$2" >"$kak_opt_diagpipe_in" + read result < "$kak_opt_diagpipe_out" if [ "$result" = "true" ]; then echo "info 'true'" else diff --git a/.config/kak/scripts/lsp-diags.py b/.config/kak/scripts/lsp-diags.py index 88a34444..bf9ee83b 100755 --- a/.config/kak/scripts/lsp-diags.py +++ b/.config/kak/scripts/lsp-diags.py @@ -2,6 +2,8 @@ import sys import os +import tempfile +import atexit Position = tuple[int, int] SpecList = list[tuple[Position, Position]] @@ -49,9 +51,33 @@ def test(): print(is_cursor_in_any(test_cursor, out)) +def cleanup(inp: str, outp: str, dir: str): + try: + os.remove(inp) + os.remove(outp) + os.rmdir(dir) + except FileNotFoundError: + pass + + +def gen_kakoune_output(inp: str, outp: str) -> str: + return f"declare_option -hidden str diagpipe_in {inp}\ndeclare_option -hidden str diagpipe_out {outp}" + + def main(): - in_path = "/tmp/diag-in" - out_path = "/tmp/diag-out" + # create unique directory and names + fifo_dir = tempfile.mkdtemp(prefix="diagpipe-") + in_path = os.path.join(fifo_dir, "in") + out_path = os.path.join(fifo_dir, "out") + + # create fifos + os.mkfifo(in_path) + os.mkfifo(out_path) + + _ = atexit.register(lambda: cleanup(in_path, out_path, fifo_dir)) + + print(in_path, flush=True) + print(out_path, flush=True) with open(in_path, "r") as infile, open(out_path, "w") as outfile: diagnostics = []