diff options
author | Victor Blanchard <48864055+Viblanc@users.noreply.github.com> | 2022-11-07 04:31:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-06 19:31:50 -0800 |
commit | d337814906b1377e34aa2c2dfd8aa16285328692 (patch) | |
tree | de1ae115fe6b4266dabef3aa59e2d62d4fede6b7 /test/functional/vimscript/writefile_spec.lua | |
parent | 10fbda508cc9fad931e55000d4434e71701ddeab (diff) | |
download | rneovim-d337814906b1377e34aa2c2dfd8aa16285328692.tar.gz rneovim-d337814906b1377e34aa2c2dfd8aa16285328692.tar.bz2 rneovim-d337814906b1377e34aa2c2dfd8aa16285328692.zip |
feat: ":write ++p" creates parent dirs #20835
- `:write ++p foo/bar/baz.txt` should create parent directories `foo/bar/` if
they do not exist
- Note: `:foo ++…` is usually for options. No existing options have
a single-char abbreviation (presumably by design), so it's safe to
special-case `++p` here.
- Same for `writefile(…, 'foo/bar/baz.txt', 'p')`
- `BufWriteCmd` can see the ++p flag via `v:cmdarg`.
closes #19884
Diffstat (limited to 'test/functional/vimscript/writefile_spec.lua')
-rw-r--r-- | test/functional/vimscript/writefile_spec.lua | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/functional/vimscript/writefile_spec.lua b/test/functional/vimscript/writefile_spec.lua index 5f693249a9..8c8da9dc88 100644 --- a/test/functional/vimscript/writefile_spec.lua +++ b/test/functional/vimscript/writefile_spec.lua @@ -111,6 +111,26 @@ describe('writefile()', function() pcall_err(command, ('call writefile([42], %s)'):format(ddname_tail))) end) + it('writefile(..., "p") creates missing parent directories', function() + os.remove(dname) + eq(nil, read_file(dfname)) + eq(0, funcs.writefile({'abc', 'def', 'ghi'}, dfname, 'p')) + eq('abc\ndef\nghi\n', read_file(dfname)) + os.remove(dfname) + os.remove(dname) + eq(nil, read_file(dfname)) + eq(0, funcs.writefile({'\na\nb\n'}, dfname, 'pb')) + eq('\0a\0b\0', read_file(dfname)) + os.remove(dfname) + os.remove(dname) + eq('Vim(call):E32: No file name', + pcall_err(command, ('call writefile([], "%s", "p")'):format(dfname .. '.d/'))) + eq(('Vim(call):E482: Can\'t open file ./ for writing: illegal operation on a directory'), + pcall_err(command, 'call writefile([], "./", "p")')) + eq(('Vim(call):E482: Can\'t open file . for writing: illegal operation on a directory'), + pcall_err(command, 'call writefile([], ".", "p")')) + end) + it('errors out with invalid arguments', function() write_file(fname, 'TEST') eq('Vim(call):E119: Not enough arguments for function: writefile', |