2013-05-15T09:15:21.604604 DEBUG: 01a evil-track-last-insertion match-beginning=0 match-end=5 match-data="" at 1 in Redacted.cc> #<marker at 5 in Redacted.cc> #<marker at 4 in Redacted.cc> #<marker at 5 in Redacted.cc>)
2013-05-15T09:15:21.613707 DEBUG: 01b evil-track-last-insertion match-beginning=1 match-end=5 match-data="" at 1 in Redacted.cc> #<marker at 5 in Redacted.cc> #<marker at 4 in Redacted.cc> #<marker at 5 in Redacted.cc>)
(match-beginning 0) evaluates to 0 while the first element of (match-data) is a marker at 1. Is this discrepancy expected?
I determined the reason for the discrepancy is that when match-data creates the markers, set-marker can adjust the position. This puts the markers saved and restored through save-match-data out of sync with the search_regs. I suspect this is a problem since replace-match assumes search_regs don't change during change hooks. It certainly creates a problem for the error checking approach.