Adds a `name` key to the opts dict passed to Lua command callbacks
created using `nvim_create_user_command()`. This is useful for when
multiple commands use the same callback.
Note that this kind of behavior is not as strange as one might think,
even some internal Neovim commands reuse the same internal C function,
differing their behavior by checking the command name. `substitute`,
`smagic` and `snomagic` are examples of that.
This will also be useful for generalized Lua command preview functions
that can preview a wide range of commands, in which case knowing the
command name is necessary for the preview function to actually be able
to execute the command that it's supposed to preview.
Problem: "au!" and "au! event" cannot be followed by another command as
documented.
Solution: When a bar is found set nextcmd.
b8e642f7ac
Cherry-pick do_autocmd() "eap" argument from patch 8.2.3268.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Check for features implemented with "if".
Solution: Use the Check commands. (Ken Takata, closesvim/vim#7383)
aeb313f355
Cherry-pick test_compiler.vim changes from patch 8.1.2373.
Problem: Lambda for option that is a function may be garbage collected.
Solution: Set a reference in the funcref. (Yegappan Lakshmanan,
closesvim/vim#9330)
6ae8fae869
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Options that take a function insufficiently tested.
Solution: Add additional tests and enhance existing tests. (Yegappan
Lakshmanan, closesvim/vim#9298)
2172bff364
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Cannot assign a lambda to an option that takes a function.
Solution: Automatically convert the lambda to a string. (Yegappan
Lakshmanan, closesvim/vim#9286)
6409553b6e
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Cannot use a lambda for 'imactivatefunc'.
Solution: Add lambda support for 'imactivatefunc' and 'imstatusfunc'.
(Yegappan Lakshmanan, closesvim/vim#9275)
7645da568c
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
- `: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
Problem: Crash when 'tagfunc' closes the window.
Solution: Bail out when the window was closed.
ccfde4d028
Add docs for E1299 from Vim runtime.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Using freed memory when 'tagfunc' deletes the buffer.
Solution: Make a copy of the tag name.
adce965162
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Cannot use a lambda for 'completefunc' and 'omnifunc'.
Solution: Implement lambda support. (Yegappan Lakshmanan, closesvim/vim#9257)
8658c759f0
Comment out Vim9 script in tests.
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Cannot use Vim9 lambda for 'tagfunc'.
Solution: Make it work, add more tests. (Yegappan Lakshmanan, closesvim/vim#9250)
05e59e3a9f
Omit Vim9 script in code and comment out in tests.
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Cannot pass a lambda name to function() or funcref(). (Yegappan
Lakshmanan)
Solution: Handle a lambda name differently.
eba3b7f664
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Cannot use a lambda for 'tagfunc'.
Solution: Use 'tagfunc' like 'opfunc'. (Yegappan Lakshmanan, closesvim/vim#9204)
19916a8c89
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Not enough tests for writing buffers.
Solution: Add a few more tests. (Yegappan Lakshmanan, closesvim/vim#8229)
46aa6f93ac
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: Get readonly error for device that can't be written to.
Solution: Check for being able to write first. (closesvim/vim#8205)
50157ef1c2
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Bufwrite not sufficiently tested.
Solution: Add a few more tests. (Yegappan Lakshmanan, closesvim/vim#8192)
36f96a5151
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Problem: deletebufline() does not always return 1 on failure.
Solution: Refactor the code to make it work more predictable. (closesvim/vim#11511)
7af3ee2b83
Problem: Tests fail when run as root.
Solution: Add a comment mentioning the expected failure. (issue vim/vim#7919)
f9a65505d1
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Code coverage could be improved.
Solution: Add a few more tests. (Dominique Pellé, closesvim/vim#7957)
6fd367a97c
Test case in test_viminfo.vim is applicable.
Problem: Some tests fail on Cirrus CI and/or with FreeBSD.
Solution: Make 'backupskip' empty. Do not run tests as root. Check for
directory when using viminfo. (Ozaki Kiichi, closesvim/vim#6596)
b86abadf87
Enable and fix bugprone-misplaced-widening-cast warning.
Fix some modernize-macro-to-enum and readability-else-after-return
warnings, but don't enable them. While the warnings can be useful, they
are in general too noisy to enable.
Problem: No good reason why the "gf" command is not in the tiny version.
Solution: Graduate the file_in_path feature.
f80f40a55c
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: E854 is not tested; some spelling suggestions are not tested.
Solution: Add a couple of tests. (Dominique Pellé, closesvim/vim#9279)
f645ee47c8
Add missing Test_signcolumn() from patch 7.4.2201.
Co-authored-by: Dominique Pelle <dominique.pelle@gmail.com>
Problem: MS-Windows: test sometimes runs into existing swap file.
Solution: Use a different file name.
f8bc0ce267
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Failure to compile a pattern not tested much.
Solution: Add tests where a pattern fails to compile. (Yegappan Lakshmanan,
closesvim/vim#7004)
531be47ac5
Problem: Check for uppercase char in autoload name is wrong, it checks the
name of the script.
Solution: Remove the check. (closesvim/vim#11031)
6c667bdc94
Co-authored-by: thinca <thinca@gmail.com>
Problem: Strange error for assigning to "x.key" on non-dictionary.
Solution: Add a specific error message. (closesvim/vim#8451)
3a3b10e87a
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: E704 for script local variable is not backwards compatible.
(Yasuhiro Matsumoto)
Solution: Only give the error in Vim9 script. Also check for function-local
variable.
b54abeeafb
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Still a way to shadow a builtin function. (Yasuhiro Matsumoto)
Solution: Check the key when using extend(). (issue vim/vim#8302)
6f1d2aa437
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Problem: Builtin function can be shadowed by global variable.
Solution: Check for builtin function before variable. (Yasuhiro Matsumoto,
closesvim/vim#8302)
3d9c4eefe6
Cherry-pick Test_gettext() from patch 8.2.2886.