From dbe9d3965436b2bd6153699adfbf60472a29ae22 Mon Sep 17 00:00:00 2001 From: liquidz Date: Thu, 22 Feb 2024 00:30:13 +0900 Subject: [PATCH] feat: Add setting-http-server-port-interceptor --- resources/config.edn | 1 + src/elin/interceptor/autocmd.clj | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/resources/config.edn b/resources/config.edn index b318ba08..ee8752b1 100644 --- a/resources/config.edn +++ b/resources/config.edn @@ -1,4 +1,5 @@ {:interceptor {:includes [elin.interceptor.autocmd/ns-create-interceptor + elin.interceptor.autocmd/setting-http-server-port-interceptor elin.interceptor.connect/connected-interceptor elin.interceptor.connect/output-channel-interceptor elin.interceptor.connect/port-auto-detecting-interceptor diff --git a/src/elin/interceptor/autocmd.clj b/src/elin/interceptor/autocmd.clj index efc6c64a..38e7b421 100644 --- a/src/elin/interceptor/autocmd.clj +++ b/src/elin/interceptor/autocmd.clj @@ -1,11 +1,13 @@ (ns elin.interceptor.autocmd (:require [elin.constant.interceptor :as e.c.interceptor] + [elin.constant.server :as e.c.server] [elin.error :as e] [elin.function.nrepl :as e.f.nrepl] [elin.function.vim :as e.f.vim] [elin.function.vim.sexp :as e.f.v.sexp] - [elin.protocol.nrepl :as e.p.nrepl])) + [elin.protocol.nrepl :as e.p.nrepl] + [elin.protocol.storage :as e.p.storage])) (def ^:priavte ns-created-var-name "b:elin_ns_created") @@ -28,3 +30,18 @@ (e.f.nrepl/eval!! nrepl)) (e.f.vim/set-variable!! host ns-created-var-name true))) ctx)}) + +(def setting-http-server-port-interceptor + {:name ::setting-http-server-port-interceptor + :kind e.c.interceptor/autocmd + :enter (fn [{:as ctx :component/keys [host session-storage] :keys [autocmd-type]}] + (when (contains? #{"BufRead" "BufEnter"} autocmd-type) + (when-let [port (e.p.storage/get session-storage e.c.server/http-server-port-key)] + (e.f.vim/set-variable!! host + (str "g:" e.c.server/http-server-port-variable) + port) + ;; NOTE buffer scoped variable is used by coc.nvim + (e.f.vim/set-variable!! host + (str "b:" e.c.server/http-server-port-variable) + port))) + ctx)})