From 646a6dca785bf74bac091ef49ab5002067d9ce5e Mon Sep 17 00:00:00 2001 From: Adam Jeniski Date: Thu, 23 Apr 2026 15:43:45 -0400 Subject: [PATCH] fix up conjure and paredit stuff --- fnl/plugins/init.fnl | 62 +++++++++++++++++++++++++++++++++++++++++--- lazy-lock.json | 14 +++++----- 2 files changed, 65 insertions(+), 11 deletions(-) diff --git a/fnl/plugins/init.fnl b/fnl/plugins/init.fnl index 1c0956c..a4e5bc8 100644 --- a/fnl/plugins/init.fnl +++ b/fnl/plugins/init.fnl @@ -21,8 +21,30 @@ {repo "Olical/conjure" :ft ["fennel" "clojure" "lisp" "scheme" "racket" "lua"] :config (fn [] - ;; Enable HUD floating window - (set vim.g.conjure#log#hud#enabled true))} + ;; HUD + (set vim.g.conjure#log#hud#enabled true) + (set vim.g.conjure#log#hud#width 0.42) + (set vim.g.conjure#log#hud#height 0.30) + ;; Auto-start lein repl when no .nrepl-port found + (set vim.g.conjure#client#clojure#nrepl#connection#auto_repl#enabled true) + (set vim.g.conjure#client#clojure#nrepl#connection#auto_repl#cmd "lein repl :headless") + ;; Show result inline as virtual text + (set vim.g.conjure#eval#result_register "*") + (set vim.g.conjure#eval#inline#enabled true) + (set vim.g.conjure#eval#inline#prefix "=> ") + ;; Open log as vertical split + (set vim.g.conjure#log#split#enabled true) + (set vim.g.conjure#log#split#direction "vertical") + ;; Clojure-specific: strip ANSI from nREPL output + (set vim.g.conjure#client#clojure#nrepl#eval#raw_out true) + ;; Keymaps + (let [km vim.keymap.set] + (km :n "lv" + (fn [] (vim.cmd "ConjureLogVSplit")) + {:desc "Conjure log vertical split"}) + (km :n "lt" + (fn [] (vim.cmd "ConjureLogTab")) + {:desc "Conjure log tab"})))} ;; nvim-parinfer - Automatic parenthesis balancing ;; See fnl/config/parinfer.fnl for default-enabled flag and toggle logic @@ -46,7 +68,38 @@ ;; Sync sexp auto-insert with parinfer default (let [par (require :config.parinfer)] (set vim.g.sexp_enable_insert_mode_mappings - (if par.default-enabled 0 1))))} + (if par.default-enabled 0 1)))) + :config (fn [] + ;; vim-sexp-mappings-for-regular-people's setup is VimEnter-gated. + ;; Under lazy.nvim :ft loading, VimEnter has already fired by the + ;; time the plugin sources, so its FileType autocmd never registers + ;; and the slurp/barf/swap mappings never attach. Register our own + ;; FileType autocmd that maps the s directly. + (let [fts (or vim.g.sexp_filetypes "clojure,scheme,lisp,timl,fennel,racket") + attach (fn [] + (let [m (fn [lhs rhs] + (vim.keymap.set :n lhs rhs + {:buffer 0 :silent true :remap true}))] + (m "(sexp_insert_at_list_head)") + (m ">I" "(sexp_insert_at_list_tail)") + (m "(sexp_swap_list_backward)") + (m ">f" "(sexp_swap_list_forward)") + (m "(sexp_swap_element_backward)") + (m ">e" "(sexp_swap_element_forward)") + (m ">(" "(sexp_emit_head_element)") + (m "<)" "(sexp_emit_tail_element)") + (m "<(" "(sexp_capture_prev_element)") + (m ">)" "(sexp_capture_next_element)") + (m "dsf" "(sexp_splice_list)")))] + (vim.api.nvim_create_augroup "sexp_regular_people_fix" {:clear true}) + (vim.api.nvim_create_autocmd "FileType" + {:group "sexp_regular_people_fix" + :pattern (vim.split fts ",") + :callback attach}) + ;; Attach to current buffer (the FileType that triggered lazy load + ;; already fired before this autocmd was registered). + (when (vim.tbl_contains (vim.split fts ",") vim.bo.filetype) + (attach))))} ;; Mason - Package manager for LSP servers, DAP servers, linters, formatters {repo "williamboman/mason.nvim" @@ -96,4 +149,5 @@ {lhs "b" :group "buffer"} {lhs "r" :group "refactor"} {lhs "c" :group "code"} - {lhs "t" :group "toggle"}]))}] + {lhs "t" :group "toggle"} + {lhs "l" :group "log"}]))}] diff --git a/lazy-lock.json b/lazy-lock.json index 9f689c2..86b9654 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,17 +1,17 @@ { - "conjure": { "branch": "main", "commit": "403639610bcb9b6a5dfc494dc3179cc19773a471" }, + "conjure": { "branch": "main", "commit": "f66b3e7f45d325bd556cd785502761e583971920" }, "hop.nvim": { "branch": "master", "commit": "08ddca799089ab96a6d1763db0b8adc5320bf050" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, - "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, - "nfnl": { "branch": "main", "commit": "fecf731e02bc51d88372c4f992fe1ef0c19c02ae" }, + "mason.nvim": { "branch": "main", "commit": "12ddd182d9efbdc848b540f16484a583d52da0fb" }, + "nfnl": { "branch": "main", "commit": "ac0177c5549df7abba7a19554c18a7765386c894" }, "nvim-parinfer": { "branch": "master", "commit": "3968e669d9f02589aa311d33cb475b16b27c5fbb" }, - "nvim-treesitter": { "branch": "main", "commit": "19c729dae6e0eeb79423df0cf37780aa9a7cc3b7" }, - "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }, + "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, - "vim-sexp": { "branch": "master", "commit": "f5bd4cb2535969fe4741b24fa5f51690521dbaf0" }, + "vim-sexp": { "branch": "master", "commit": "2fc0a7c7e44fe94e48156d6a5b5fea28538430eb" }, "vim-sexp-mappings-for-regular-people": { "branch": "master", "commit": "4debb74b0a3e530f1b18e5b7dff98a40b2ad26f1" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } }