diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 4c00547daa..f6ca11761a 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -5751,8 +5751,12 @@ stop_insert ( } if (curwin->w_cursor.lnum != tpos.lnum) curwin->w_cursor = tpos; - else if (cc != NUL) - ++curwin->w_cursor.col; /* put cursor back on the NUL */ + else { + tpos.col++; + if (cc != NUL && gchar_pos(&tpos) == NUL) { + ++curwin->w_cursor.col; // put cursor back on the NUL + } + } /* may have started Visual mode, adjust the position for * deleted characters. */ diff --git a/src/nvim/version.c b/src/nvim/version.c index e34db7f40a..5e3331317d 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -253,7 +253,7 @@ static int included_patches[] = { //495 NA 494, 493, - //492, + 492, 491, 490, 489, diff --git a/test/functional/legacy/004_bufenter_with_modelines_spec.lua b/test/functional/legacy/004_bufenter_with_modelines_spec.lua index 6f009b52dd..34e702b798 100644 --- a/test/functional/legacy/004_bufenter_with_modelines_spec.lua +++ b/test/functional/legacy/004_bufenter_with_modelines_spec.lua @@ -46,6 +46,12 @@ describe('BufEnter with modelines', function() -- Include Xxx in the current file feed('G:r Xxx') + -- Vim issue #57 do not move cursor on when autoindent is set + execute('set fo+=r') + feed('G') + feed('o# abcdef2hid0') + feed('o# abcdef2hid0') + expect([[ startstart start of test file Xxx @@ -63,7 +69,10 @@ describe('BufEnter with modelines', function() this is a test this is a test this should be in column 1 - end of test file Xxx]]) + end of test file Xxx + # abc + def + def]]) end) teardown(function()