axelf4/vim-strip-trailing-whitespace

Neovim: Error with undo without EOL

AlexMasterov opened this issue ยท 2 comments

Hello ๐Ÿ˜ƒ
I get the error:

Error executing lua callback: [string ":lua"]:1: Vim(call):E16: Invalid range: call s:RemoveRange(a:start, a:end - 1)

How to reproduce:

function! ReverseLines() range
  let lines = reverse(getline(a:firstline, a:lastline))
  silent execute a:firstline . ',' . a:lastline . 'delete _'
  silent execute (a:firstline - 1) . 'put =lines'
endfunction

command! -bar -range=% Reproduce <line1>,<line2> call ReverseLines()
  1. Use the Reproduce command on the two selected lines with 0 and 1
  2. Press undo by u

no-error


0
1

error


0
1

NVIM v0.5.0-360-g1f479fffb

VIM 8.2 (p236) โ€” works fine

Thanks again, this is definitely in the same vein as #4. The offending line is here. Will try fixing, if I get the time to do so.

I have thought about a workaround but don't think there's a surefire way: You have to make the line number be valid for calling Vim script functions not to error, but there's no way to restore the invalid line number that the calling code might be expecting (and so the cursor would move).

I also hit this error when using vimspector