Problem: Can't distinguish <M-a> from accented "a" in the GUI.
Solution: Use another way to make mapping <C-bslash> work. (closesvim/vim#6163)
f4ae6b245a
Problem: Dropping modifier when putting a character back in typeahead.
Solution: Add modifier to ins_char_typebuf(). (closesvim/vim#6158)
b42c0d5427
Vim's test doesn't seem to work properly as the hit-enter prompt seems
to be delayed. Add a Lua screen test.
This marks the following Vim patches as ported:
vim-patch:8.1.2333: with modifyOtherKeys CTRL-^ doesn't work
Problem: With modifyOtherKeys CTRL-^ doesn't work.
Solution: Handle the exception.
828ffd5963
vim-patch:8.1.2350: other text for CTRL-V in Insert mode with modifyOtherKeys
Problem: Other text for CTRL-V in Insert mode with modifyOtherKeys.
Solution: Convert the Escape sequence back to key as if modifyOtherKeys is
not set, and use CTRL-SHIFT-V to get the Escape sequence itself.
(closesvim/vim#5254)
fc4ea2a72d
vim-patch:8.2.2084: CTRL-V U doesn't work to enter a Unicode character
Problem: CTRL-V U doesn't work to enter a Unicode character when
modifyOtherKeys is effective. (Ken Takata)
Solution: Add a flag to get_literal() for the shift key. (closesvim/vim#7413)
0684e36a7e
Omit getcmdkeycmd() change as it depends on Vim patch 8.2.2062, which
may introduce a potential breakage.
Problem: Cannot map <C-H> when modifyOtherKeys is enabled.
Solution: Add the <C-H> mapping twice, both with modifier and as 0x08. Use
only the first one when modifyOtherKeys has been detected.
459fd785e4
Add REPTERM_NO_SPECIAL instead of REPTERM_SPECIAL because the meaning of
"special" is different between Vim and Nvim.
Omit seenModifyOtherKeys as Nvim supports attaching multiple UIs.
Omit tests as they send terminal codes.
Keep the behavior of API functions.
Problem: When a recording is ended with a mapped key that key is also
recorded.
Solution: Remember the previous last_recorded_len. (closesvim/vim#10122)
81b46a6ccd
vim-patch:8.2.4692: no test for what 8.2.4691 fixes
Problem: No test for what 8.2.4691 fixes.
Solution: Add a test. Use a more generic sotlution. (closesvim/vim#10090)
0f68e6c07a
Test cannot be used because it must use test_setmouse(). Use a Lua test.
Reverted patches:
vim-patch:8.2.4691: solution for <Cmd> in a mapping causes trouble
Problem: Solution for <Cmd> in a mapping causes trouble.
Solution: Use another solution: put back CTRL-O after reading the <Cmd>
sequence.
ca9d8d2cb9
vim-patch:8.2.4689: using <Cmd> in a mapping does not work for mouse keys
Problem: Using <Cmd> in a mapping does not work for mouse keys in Insert
mode. (Sergey Vlasov)
Solution: When reading the <Cmd> argument do not use the stuff buffer.
(closesvim/vim#10080)
d0fb2d8041
When using :normal in Ex mode, the editor is no longer in Cmdline mode,
but the exmode_active flag is still set, causing the wrong character to
be spammed in Insert mode, leading to a hang.
Problem: Recursive use of getcmdline() still not protected.
Solution: Instead of saving the command buffer when making a call which may
cause recursiveness, save the buffer when actually being called
recursively.
438d176e35
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Clear ccline earlier in save_cmdline() if ccline is in use so that
ccline.prev_ccline can be assigned.
`:verbose` didn't work properly with lua configs (For example:
options or keymaps are set from lua, just say that they were set
from lua, doesn't say where they were set at.
This fixes that issue. Now `:verbose` will provide filename and line no
when option/keymap is set from lua.
Changes:
- compiles lua/vim/keymap.lua as vim/keymap.lua
- When souring a lua file current_sctx.sc_sid is set to SID_LUA
- Moved finding scripts SID out of `do_source()` to `get_current_script_id()`.
So it can be reused for lua files.
- Added new function `nlua_get_sctx` that extracts current lua scripts
name and line no with debug library. And creates a sctx for it.
NOTE: This function ignores C functions and blacklist which
currently contains only vim/_meta.lua so vim.o/opt wrappers aren't
targeted.
- Added function `nlua_set_sctx` that changes provided sctx to current
lua scripts sctx if a lua file is being executed.
- Added tests in tests/functional/lua/verbose_spec.lua
- add primary support for additional types (:autocmd, :function, :syntax) to lua verbose
Note: These can't yet be directly set from lua but once that's possible
:verbose should work for them hopefully :D
- add :verbose support for nvim_exec & nvim_command within lua
Currently auto commands/commands/functions ... can only be defined
by nvim_exec/nvim_command this adds support for them. Means if those
Are defined within lua with vim.cmd/nvim_exec :verbose will show their
location . Though note it'll show the line no on which nvim_exec call was made.
Problem: An error from an expression mapping messes up the display.
Solution: When the expression results in an empty string return K_IGNORE.
In cmdline mode redraw the command line. (closesvim/vim#9726)
74a0a5b26d
Problem: When an expr mapping moves the cursor it is not restored.
Solution: Position the cursor after an expr mapping. (closesvim/vim#5256)
4ebe0e62d0
Problem: MS-Windows: cannot use the mouse in the console with VIMDLL.
Solution: use add_char2buf() instead of fix_input_buffer(). (closesvim/vim#9784,
closesvim/vim#9769)
646bb7247a
N/A patches for version.c:
vim-patch:8.2.4392: MS-Windows with VIMDLL: Escaping CSI is wrong
Problem: MS-Windows with VIMDLL: Escaping CSI is wrong.
Solution: Put back #ifdef. (Ken Takata, closesvim/vim#9769)
64d95cfc56
vim-patch:8.2.4394: UTF8 select mode test fails on MS-Windows
Problem: UTF8 select mode test fails on MS-Windows.
Solution: Revert the #ifdef change.
9fdde7992a
Problem: When using feedkeys() abbreviations may be blocked.
Solution: Reset tb_no_abbr_cnt when running out of characters.
(closesvim/vim#9448)
b37a65e4bf
Problem: Crash when recording and using Select mode.
Solution: When deleting the last recorded character check there is something
to delete.
a4bc2dd7cc
Problem: First char typed in Select mode can be wrong.
Solution: Escape special bytes in the input buffer. (closesvim/vim#9469)
6cac77016b
The `buf` should already be large enough, but I'll change its size
anyway in case future patches change the meaning of `MB_MAXBYTES` macro.
`fix_input_buffer()` cannot be used here because of the `using_script()`
check, and there is already equivalent code in its place.
Problem: When recording a change in Select mode the first typed character
appears twice.
Solution: When putting the character back into typeahead remove it from
recorded characters. (closesvim/vim#9462)
c88e977862
Behavioral changes:
1. Added support for lua function in keymaps in
--------------------------------------------
- nvim_set_keymap
Can set lua function as keymap rhs like following:
```lua
vim.api.nvim_{buf_}set_keymap('n', '<leader>lr', '', {callback = vim.lsp.buf.references})
```
Note: lua function can only be set from lua . If api function being
called from viml or over rpc this option isn't available.
- nvim_{buf_}get_keymap
When called from lua, lua function is returned is `callback` key .
But in other cases callback contains number of the function ref.
- :umap, nvim_del_keymap & nvim_buf_del_keymap clears lua keymaps correctly.
- :map commands for displaing rhs .
For lua keymaps rhs is displayed as <Lua function ref_no>
Note: lua keymap cannot be set through viml command / functions.
- mapargs()
When dict is false it returns string in `<Lua function ref_no>`
format (same format as :map commands).
When dict is true it returns ref_no number in `callback` key.
- mapcheck()
returns string in `<Lua function ref_no>` format (same format as :map commands).
2. Added support for keymap description
---------------------------------------
- nvim_{buf_}set_keymap: added `desc` option in opts table .
```lua
vim.api.nvim_set_keymap('n', '<leader>w', '<cmd>w<cr>', {desc='Save current file'})
```
- nvim_{buf_}get_keymap: contains `desc` in returned list.
- commands like `:nmap <leader>w` will show description in a new line below rhs.
- `maparg()` return dict contains `desc`.
* vim-patch:8.2.3914: various spelling mistakes in comments
Problem: Various spelling mistakes in comments.
Solution: Fix the mistakes. (Dominique Pellé, closesvim/vim#9416)
af4a61a85d
Co-authored-by: zeertzjq <zeertzjq@outlook.com>