aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjdhao <jdhao@hotmail.com>2022-01-13 01:51:19 +0800
committerjdhao <jdhao@hotmail.com>2022-01-13 01:51:19 +0800
commit6fd71557872092d6585ae8ab86605b5573ad6061 (patch)
tree8e8139e8779ef5d6d6a2fa6c7949ae6bfc736f55
parent665250fe588927782182cdcac7f22b46f3274b56 (diff)
feat: create parent dir of current file if it does not exist
-rw-r--r--autoload/utils.vim9
-rw-r--r--core/autocommands.vim5
2 files changed, 14 insertions, 0 deletions
diff --git a/autoload/utils.vim b/autoload/utils.vim
index 580c1cd..2fa692e 100644
--- a/autoload/utils.vim
+++ b/autoload/utils.vim
@@ -207,3 +207,12 @@ function! utils#add_pack(name) abort
return l:status
endfunction
+
+" Create the parent dir for current file if it does not exist
+function! utils#may_create_dir(path) abort
+ let l:parent_dir = fnamemodify(a:path, ':p:h')
+
+ if !isdirectory(l:parent_dir)
+ call mkdir(l:parent_dir, "p")
+ endif
+endfunction
diff --git a/core/autocommands.vim b/core/autocommands.vim
index 6f08a90..c3943da 100644
--- a/core/autocommands.vim
+++ b/core/autocommands.vim
@@ -118,3 +118,8 @@ augroup packer_auto_compile
autocmd!
autocmd BufWritePost */nvim/lua/plugins.lua source <afile> | PackerCompile
augroup END
+
+augroup auto_create_dir
+ autocmd!
+ autocmd BufWritePre * call utils#may_create_dir(expand("<afile>"))
+augroup END