From 7aee69c6cc40a1f3b6fccd6bd906318f152d7430 Mon Sep 17 00:00:00 2001 From: Proctor Date: Tue, 11 Oct 2022 08:21:39 -0500 Subject: [PATCH] Start some cleanup on contextual Paredit --- .../nvim/fnl/dotfiles/plugin/paredit.fnl | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/nvim/.config/nvim/fnl/dotfiles/plugin/paredit.fnl b/nvim/.config/nvim/fnl/dotfiles/plugin/paredit.fnl index 4318b4b..402f45c 100644 --- a/nvim/.config/nvim/fnl/dotfiles/plugin/paredit.fnl +++ b/nvim/.config/nvim/fnl/dotfiles/plugin/paredit.fnl @@ -8,26 +8,28 @@ languagetree vim.treesitter.languagetree }}) +(defn list-member? [xs x] + (a.some #(= x $1) (a.vals xs))) + +(defn bool->int [bool] + (if bool 1 0)) + (defn language-at-cursor [] (let [parser (ts-parsers.get_parser) current-node (ts-utils.get_node_at_cursor) range (if current-node - [(current-node:range)] - []) - lang (if (not (a.empty? range)) + [(current-node:range)]) + lang (if range (languagetree.language_for_range parser range))] - (if lang (lang:lang)))) + (if lang + (lang:lang)))) (defn parser-language [] (let [parser (ts-parsers.get_parser)] (when parser (parser:lang)))) -(comment - (language-at-cursor) - ) - -(def paredit-langs +(def- paredit-langs [ :clojure :fennel @@ -41,38 +43,34 @@ :shen ]) -(def paredit-host-langs +(def- paredit-host-langs [ :org :markdown :asciidoc ]) -(defn paredit-host-lang? [lang] - (a.some #(= lang $1) (a.vals paredit-host-langs))) +(defn- host-lang-in? [langs] + (list-member? langs (parser-language))) (defn paredit-lang? [lang] - (a.some #(= lang $1) (a.vals paredit-langs))) + (list-member? paredit-langs lang)) (defn TreeSitterLangParedit [] - (when (paredit-host-lang? (parser-language)) - (let [buff-nr (nvim.buf.nr) - cursor-lang (language-at-cursor) - ;buf-paredit-status (a.get-in. {} (nvim.buf.nr)) - paredit-enabled (if (paredit-lang? cursor-lang) 1 0)] - (set nvim.g.paredit_mode paredit-enabled) - (nvim.fn.PareditInitBuffer) - )) - ; - ; ; lua print(require('nvim-treesitter.parsers').get_parser():language_for_range({ require('nvim-treesitter.ts_utils').get_node_at_cursor():range() }):lang()) - ) -;(TreeSitterLangParedit) + (when (host-lang-in? paredit-host-langs) + (when-let [cursor-lang (language-at-cursor)] + (->> cursor-lang + (paredit-lang?) + (bool->int) + (set nvim.g.paredit_mode)) + (nvim.fn.PareditInitBuffer)))) ; (nvim.del_augroup_by_name "BabeliteParedit") +; (nvim.get_autocmds {:group "BabeliteParedit"}) + (let [group (nvim.create_augroup "BabeliteParedit" {:clear true})] (nvim.create_autocmd ["CursorHold" "CursorMoved"] {:group group ;:pattern ["*.org" "*.md"] :callback TreeSitterLangParedit})) -; (nvim.get_autocmds {:group "BabeliteParedit"})