mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.1874: can't do something just before leaving Insert mode
Problem: Can't do something just before leaving Insert mode. Solution: Add the InsertLeavePre autocommand event. (closes vim/vim#7177)b53e13a91a
N/A patches for version.c: vim-patch:8.1.1877: graduated features scattered Problem: Graduated features scattered. Solution: Put graduated and obsolete features together.ffc0716af8
vim-patch:8.2.1875: warning when building GTK gui Problem: Warning when building GTK gui. Solution: Add missing function parameter.3da855c8e2
vim-patch:8.2.1877: test for function list fails Problem: Test for function list fails. Solution: Move "obsolete" comments one line up.b8f519e538
vim-patch:8.2.1878: GTK: error for redefining function Problem: GTK: error for redefining function. (Tony Mechelynck) Solution: Remove "gtk_" prefix from local functions and prepend "gui_" to global functions.8a99e66b4f
vim-patch:8.2.1881: cannot build with GTK3 Problem: Cannot build with GTK3. Solution: Adjust form functions.692d1a51e7
vim-patch:8.2.1883: compiler warnings when using Python Problem: Compiler warnings when using Python. Solution: Adjust PyCFunction to also have the second argument. Use "int" return type for some functions. Insert "(void *)" to get rid of the remaining warnings.4ce5fe4c87
This commit is contained in:
parent
07022306e2
commit
3f0850e9f0
@ -700,9 +700,14 @@ InsertEnter Just before starting Insert mode. Also for
|
|||||||
The cursor is restored afterwards. If you do
|
The cursor is restored afterwards. If you do
|
||||||
not want that set |v:char| to a non-empty
|
not want that set |v:char| to a non-empty
|
||||||
string.
|
string.
|
||||||
|
*InsertLeavePre*
|
||||||
|
InsertLeavePre Just before leaving Insert mode. Also when
|
||||||
|
using CTRL-O |i_CTRL-O|. Be caseful not to
|
||||||
|
change mode or use `:normal`, it will likely
|
||||||
|
cause trouble.
|
||||||
*InsertLeave*
|
*InsertLeave*
|
||||||
InsertLeave When leaving Insert mode. Also when using
|
InsertLeave Just after leaving Insert mode. Also when
|
||||||
CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
|
using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
|
||||||
*MenuPopup*
|
*MenuPopup*
|
||||||
MenuPopup Just before showing the popup menu (under the
|
MenuPopup Just before showing the popup menu (under the
|
||||||
right mouse button). Useful for adjusting the
|
right mouse button). Useful for adjusting the
|
||||||
|
@ -65,7 +65,8 @@ return {
|
|||||||
'InsertChange', -- when changing Insert/Replace mode
|
'InsertChange', -- when changing Insert/Replace mode
|
||||||
'InsertCharPre', -- before inserting a char
|
'InsertCharPre', -- before inserting a char
|
||||||
'InsertEnter', -- when entering Insert mode
|
'InsertEnter', -- when entering Insert mode
|
||||||
'InsertLeave', -- when leaving Insert mode
|
'InsertLeave', -- just after leaving Insert mode
|
||||||
|
'InsertLeavePre', -- just before leaving Insert mode
|
||||||
'MenuPopup', -- just before popup menu is displayed
|
'MenuPopup', -- just before popup menu is displayed
|
||||||
'OptionSet', -- after setting any option
|
'OptionSet', -- after setting any option
|
||||||
'QuickFixCmdPost', -- after :make, :grep etc.
|
'QuickFixCmdPost', -- after :make, :grep etc.
|
||||||
|
@ -7691,6 +7691,10 @@ static bool ins_esc(long *count, int cmdchar, bool nomove)
|
|||||||
undisplay_dollar();
|
undisplay_dollar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cmdchar != 'r' && cmdchar != 'v') {
|
||||||
|
ins_apply_autocmds(EVENT_INSERTLEAVEPRE);
|
||||||
|
}
|
||||||
|
|
||||||
// When an autoindent was removed, curswant stays after the
|
// When an autoindent was removed, curswant stays after the
|
||||||
// indent
|
// indent
|
||||||
if (restart_edit == NUL && (colnr_T)temp == curwin->w_cursor.col) {
|
if (restart_edit == NUL && (colnr_T)temp == curwin->w_cursor.col) {
|
||||||
|
@ -1441,31 +1441,40 @@ endfunc
|
|||||||
|
|
||||||
func Test_edit_InsertLeave()
|
func Test_edit_InsertLeave()
|
||||||
new
|
new
|
||||||
|
au InsertLeavePre * let g:did_au_pre = 1
|
||||||
au InsertLeave * let g:did_au = 1
|
au InsertLeave * let g:did_au = 1
|
||||||
|
let g:did_au_pre = 0
|
||||||
let g:did_au = 0
|
let g:did_au = 0
|
||||||
call feedkeys("afoo\<Esc>", 'tx')
|
call feedkeys("afoo\<Esc>", 'tx')
|
||||||
|
call assert_equal(1, g:did_au_pre)
|
||||||
call assert_equal(1, g:did_au)
|
call assert_equal(1, g:did_au)
|
||||||
call assert_equal('foo', getline(1))
|
call assert_equal('foo', getline(1))
|
||||||
|
|
||||||
|
let g:did_au_pre = 0
|
||||||
let g:did_au = 0
|
let g:did_au = 0
|
||||||
call feedkeys("Sbar\<C-C>", 'tx')
|
call feedkeys("Sbar\<C-C>", 'tx')
|
||||||
|
call assert_equal(1, g:did_au_pre)
|
||||||
call assert_equal(0, g:did_au)
|
call assert_equal(0, g:did_au)
|
||||||
call assert_equal('bar', getline(1))
|
call assert_equal('bar', getline(1))
|
||||||
|
|
||||||
inoremap x xx<Esc>
|
inoremap x xx<Esc>
|
||||||
|
let g:did_au_pre = 0
|
||||||
let g:did_au = 0
|
let g:did_au = 0
|
||||||
call feedkeys("Saax", 'tx')
|
call feedkeys("Saax", 'tx')
|
||||||
|
call assert_equal(1, g:did_au_pre)
|
||||||
call assert_equal(1, g:did_au)
|
call assert_equal(1, g:did_au)
|
||||||
call assert_equal('aaxx', getline(1))
|
call assert_equal('aaxx', getline(1))
|
||||||
|
|
||||||
inoremap x xx<C-C>
|
inoremap x xx<C-C>
|
||||||
|
let g:did_au_pre = 0
|
||||||
let g:did_au = 0
|
let g:did_au = 0
|
||||||
call feedkeys("Sbbx", 'tx')
|
call feedkeys("Sbbx", 'tx')
|
||||||
|
call assert_equal(1, g:did_au_pre)
|
||||||
call assert_equal(0, g:did_au)
|
call assert_equal(0, g:did_au)
|
||||||
call assert_equal('bbxx', getline(1))
|
call assert_equal('bbxx', getline(1))
|
||||||
|
|
||||||
bwipe!
|
bwipe!
|
||||||
au! InsertLeave
|
au! InsertLeave InsertLeavePre
|
||||||
iunmap x
|
iunmap x
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user