(local au vim.api.nvim_create_autocmd)
(local snip (require "snippet"))
(fn quickeval [cmd]
(let [range (. (require "utils") :get-visual-selection)
start range.start
end_ range.end_
content (vim.fn.getregion start end_ { :type (vim.fn.mode 1) })
tmpfilename (.. "/tmp/nvim-ftplugin." (vim.fn.expand "%:e"))
file (assert io.open tmpfilename "w")]
(each [_ line (ipairs content)]
(file:write (.. line "\n")))
(file:close)
(vim.cmd (.. "vert term" cmd tmpfilename))
(vim.cmd.startinsert)))
(au "FileType"
{ :callback
(lambda [ev]
(let [ft ev.match
[ok ftp] (pcall require (.. "ftplugin." ft))]
(when ok
(when ftp.lsp
(set ftp.lsp.on_attach (. (require "lsp") :on-attach))
(: (vim.uv.new_async (vim.schedule_wrap #(vim.lsp.start ftp.lsp))) :send))
(if ftp.quickeval_cmd
(vim.keymap.set "v" "x" #(quickeval ftp.quickeval_cmd)))
(if ftp.callback
(ftp.callback))
(when ftp.snippet
(snip.setup_keymap)
(each [_ sn (ipairs ftp.snippet)]
(snip.set_snip sn)))))) })
nil