vim-strip-trailing-whitespace icon indicating copy to clipboard operation
vim-strip-trailing-whitespace copied to clipboard

Neovim: Error with undo without EOL

Open AlexMasterov opened this issue 5 years ago • 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

AlexMasterov avatar Feb 10 '20 00:02 AlexMasterov

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).

axelf4 avatar Feb 10 '20 20:02 axelf4

I also hit this error when using vimspector

mellery451 avatar Jul 16 '21 15:07 mellery451