Undo recovery from swap file in vim

vim

Solution

I just tried this myself (with persistent undo enabled; Vim version 7.3.823). The old changes were still showing (in `:undolist`, though I usually use a plugin like Gundo or Undotree to visualize it), but when attempting to restore, I get

E438: u_undo: line numbers wrong

Seems like Vim cannot handle this situation. Note that you've been warned; the recovery explictly warns:

Recovery completed. You should check if everything is OK.
E308: Warning: Original file may have been changed

Problem

Right before committing a major change, I accidentally "recovered" the file from an old and outdated swap file in vim. My changes seem to be gone. I've tried exploring the undo tree but large chunks of changes are still missing. Is there anyway I can undo the recover operation or am I doomed?

Original source