Estou tentando melhorar o código desta resposta para pedir confirmação antes de criar o diretório ausente, é isso que escrevo:
function! CreateDirectoryAskConfirmation(path)
if !isdirectory(a:path)
echohl Question
echo "Create directory " . a:path . "?"
echohl None
let response = nr2char(getchar())
if response ==? "y"
call mkdir(a:path, "p")
endif
endif
endfunction
autocmd BufWritePre * call CreateDirectoryAskConfirmation(expand("<afile>:p:h"))
Uma coisa está faltando: quando não pressiono y
no prompt, gostaria que o Vim abortasse a gravação, para não receber o erro E212: Can't open file for writing
e não precisar pressionar outra tecla para que a mensagem de erro desapareça. Existe uma maneira de conseguir isso?
:
nunca é necessária para comandos.silent
para que você não receba uma mensagem se não estiver usando issoautogroup
. Também consertei outro problema que notei::w another_name
não funcionou (não funciona).write
, apenas escreverá no nome do arquivo atual (como quando você digita:write
) e:write another_filename
não funcionará (ainda usará o nome do arquivo original).bufype
configuração para obter o tipo de buffer. Sinta-se à vontade para editar a postagem com uma correção (ou, caso contrário, eu vou semana que vem).