mirror of
https://github.com/stevenproctor/dotfiles.git
synced 2026-01-28 11:29:56 -06:00
Start some cleanup on contextual Paredit
This commit is contained in:
@@ -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"})
|
||||
|
||||
Reference in New Issue
Block a user