" Handle a :write operation; prompt for directory creation if needed with " 'confirm', force it with :write! function! write_mkpath#(path) abort " Get all directory elements leading up to directory let dir = fnamemodify(a:path, ':h') " Directory exists, we don't need to do anything if isdirectory(dir) return endif " If :write! was issued, we'll try to create the missing path; failing that, " if 'confirm' is enabled, and the user responds affirmatively to the " prompt, that will do, too. Otherwise, we will allow the write to fail. if v:cmdbang let mkpath = 1 elseif &confirm let mkpath = confirm('Create path '.dir.'?', "&Yes\n&No") == 1 else let mkpath = 0 endif " If we decided to attempt a path creation, do so if mkpath call mkdir(dir, 'p') endif endfunction