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
|
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"})
|
|
||||||
|
|||||||
Reference in New Issue
Block a user