Start some cleanup on contextual Paredit

This commit is contained in:
2022-10-11 08:21:39 -05:00
parent 00f9835648
commit 7aee69c6cc

View File

@@ -8,26 +8,28 @@
languagetree vim.treesitter.languagetree 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 [] (defn language-at-cursor []
(let [parser (ts-parsers.get_parser) (let [parser (ts-parsers.get_parser)
current-node (ts-utils.get_node_at_cursor) current-node (ts-utils.get_node_at_cursor)
range (if current-node range (if current-node
[(current-node:range)] [(current-node:range)])
[]) lang (if range
lang (if (not (a.empty? range))
(languagetree.language_for_range parser range))] (languagetree.language_for_range parser range))]
(if lang (lang:lang)))) (if lang
(lang:lang))))
(defn parser-language [] (defn parser-language []
(let [parser (ts-parsers.get_parser)] (let [parser (ts-parsers.get_parser)]
(when parser (when parser
(parser:lang)))) (parser:lang))))
(comment (def- paredit-langs
(language-at-cursor)
)
(def paredit-langs
[ [
:clojure :clojure
:fennel :fennel
@@ -41,38 +43,34 @@
:shen :shen
]) ])
(def paredit-host-langs (def- paredit-host-langs
[ [
:org :org
:markdown :markdown
:asciidoc :asciidoc
]) ])
(defn paredit-host-lang? [lang] (defn- host-lang-in? [langs]
(a.some #(= lang $1) (a.vals paredit-host-langs))) (list-member? langs (parser-language)))
(defn paredit-lang? [lang] (defn paredit-lang? [lang]
(a.some #(= lang $1) (a.vals paredit-langs))) (list-member? paredit-langs lang))
(defn TreeSitterLangParedit [] (defn TreeSitterLangParedit []
(when (paredit-host-lang? (parser-language)) (when (host-lang-in? paredit-host-langs)
(let [buff-nr (nvim.buf.nr) (when-let [cursor-lang (language-at-cursor)]
cursor-lang (language-at-cursor) (->> cursor-lang
;buf-paredit-status (a.get-in. {} (nvim.buf.nr)) (paredit-lang?)
paredit-enabled (if (paredit-lang? cursor-lang) 1 0)] (bool->int)
(set nvim.g.paredit_mode paredit-enabled) (set nvim.g.paredit_mode))
(nvim.fn.PareditInitBuffer) (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)
; (nvim.del_augroup_by_name "BabeliteParedit") ; (nvim.del_augroup_by_name "BabeliteParedit")
; (nvim.get_autocmds {:group "BabeliteParedit"})
(let [group (nvim.create_augroup "BabeliteParedit" {:clear true})] (let [group (nvim.create_augroup "BabeliteParedit" {:clear true})]
(nvim.create_autocmd ["CursorHold" "CursorMoved"] (nvim.create_autocmd ["CursorHold" "CursorMoved"]
{:group group {:group group
;:pattern ["*.org" "*.md"] ;:pattern ["*.org" "*.md"]
:callback TreeSitterLangParedit})) :callback TreeSitterLangParedit}))
; (nvim.get_autocmds {:group "BabeliteParedit"})