allow negative destination splits
getOffset() for more transparent keypan logic
simplify patch check
handle empty &viminfo