22 lines
988 B
Text
22 lines
988 B
Text
|
{:setup (fn []
|
||
|
(let [root-names [:.envrc :.git :Makefile :.svn :.hg]
|
||
|
root-cache {}]
|
||
|
(fn set-root []
|
||
|
(var path (vim.api.nvim_buf_get_name 0))
|
||
|
(when (= path "") (lua "return "))
|
||
|
(set path (vim.fs.dirname path))
|
||
|
(var root (. root-cache path))
|
||
|
(when (= root nil)
|
||
|
(local root-file (. (vim.fs.find root-names
|
||
|
{: path :upward true})
|
||
|
1))
|
||
|
(when (= root-file nil) (lua "return "))
|
||
|
(set root (vim.fs.dirname root-file))
|
||
|
(tset root-cache path root))
|
||
|
(vim.fn.chdir root))
|
||
|
|
||
|
(local root-augroup (vim.api.nvim_create_augroup :MyAutoRoot {}))
|
||
|
(vim.api.nvim_create_autocmd :BufEnter
|
||
|
{:callback set-root
|
||
|
:group root-augroup})))}
|