mirror of
https://github.com/stevenproctor/dotfiles.git
synced 2026-01-28 12:49:56 -06:00
Paredit in org/markdown/asciidoc lisp code blocks
This commit is contained in:
78
nvim/.config/nvim/fnl/dotfiles/plugin/paredit.fnl
Normal file
78
nvim/.config/nvim/fnl/dotfiles/plugin/paredit.fnl
Normal file
@@ -0,0 +1,78 @@
|
||||
(module dotfiles.plugin.paredit
|
||||
{autoload {nvim aniseed.nvim
|
||||
a aniseed.core
|
||||
nu aniseed.nvim.util
|
||||
paredit paredit
|
||||
ts-parsers nvim-treesitter.parsers
|
||||
ts-utils nvim-treesitter.ts_utils
|
||||
languagetree vim.treesitter.languagetree
|
||||
}})
|
||||
|
||||
(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))
|
||||
(languagetree.language_for_range parser range))]
|
||||
(if lang (lang:lang))))
|
||||
|
||||
(defn parser-language []
|
||||
(let [parser (ts-parsers.get_parser)]
|
||||
(when parser
|
||||
(parser:lang))))
|
||||
|
||||
(comment
|
||||
(language-at-cursor)
|
||||
)
|
||||
|
||||
(def paredit-langs
|
||||
[
|
||||
:clojure
|
||||
:fennel
|
||||
:hy
|
||||
:janet
|
||||
:julia
|
||||
:lfe
|
||||
:lisp
|
||||
:racket
|
||||
:scheme
|
||||
:shen
|
||||
])
|
||||
|
||||
(def paredit-host-langs
|
||||
[
|
||||
:org
|
||||
:markdown
|
||||
:asciidoc
|
||||
])
|
||||
|
||||
(defn paredit-host-lang? [lang]
|
||||
(a.some #(= lang $1) (a.vals paredit-host-langs)))
|
||||
|
||||
(defn paredit-lang? [lang]
|
||||
(a.some #(= lang $1) (a.vals paredit-langs)))
|
||||
|
||||
(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)
|
||||
|
||||
; (nvim.del_augroup_by_name "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"})
|
||||
@@ -51,7 +51,7 @@
|
||||
:Iron-E/nvim-soluarized {}
|
||||
:jiangmiao/auto-pairs {} ; backets, parens, and quotes in pairs
|
||||
:junegunn/vim-easy-align {:mod :easyalign}
|
||||
:kovisoft/paredit {}
|
||||
:kovisoft/paredit {:mod :paredit}
|
||||
:kristijanhusak/vim-dadbod-completion {}
|
||||
:kristijanhusak/vim-dadbod-ui {}
|
||||
:lukas-reineke/headlines.nvim {:mod :headlines}
|
||||
|
||||
Reference in New Issue
Block a user