Revision history for Emacs-Rep
0.01 Sun May 30 12:23:55 2010
First version.
Limitation: all of perl's substitutions syntax is
not supported, in particular substitutions with embedded
semicolons may behave oddly.
0.02 Sun Jun 6 17:36:22 2010
Using a PPI-based solution now. The full range of perl's
substitution syntax is now supported.
Have support for multi-line substitutions.
Window management is more careful (no crashes
from the current window being too small).
User set-up is more flexible (easy to use an alternative key prefix).
0.03 Fri Jun 11 04:31:04 2010
Implemented an entirely new system of managing change
metadata, which now supports an indefinite series of
individual undos of cascading, overlapping substitution
changes.
The modified buffer is now made read-only until changes
are accepted.
User set-up with rep-standard-setup is still more flexible.
0.04 Sat Jun 12 22:34:28 2010
Cleaner handling of zero-width end results (i.e. when a
s///g is used to delete a string entirely, now you can
still tab to that location and undo the deletion).
Also made modifications to backtab behavior to work better
with these "zero width" regions.
0.05 Tue Jun 15 11:44:04 2010
Cleaner implementation of tab/backtab functions in
rep-modififed-mode:
These:
rep-modified-skip-to-next-change and rep-modified-skip-to-prev-change
now use the primitives:
rep-at-start-of-changed-region
rep-at-end-of-changed-region
which are built on top of the (successful) experiment:
rep-rising-or-falling-edge
0.08 Sat Jun 9 19:44:03 2012
Completely re-worked how the changes are managed in
emacs, so that undos of multiple, overlapping changes
work correctly:
Now overlays are used to indicate changed regions
(because they support zero-width regions), and a buffer
local data structure is used to save metadata for each
change, including a list of shadowed changes with
locations measured relative to the change, so that and
"undo" command can properly re-set the extent of any
affected overlays.
The perl side no longer tries to use the "revise_locations"
code to fix-up the recorded locations: instead the change
metadata is used on the emacs side in inverse order so that
the original, unrevised numbering is always correct when
a change is applied.
The metadata returned from the perl routine do_find_and_reps
is restricted to just what's currently in use by rep.el:
there's less redundancy, with the 'end' field elimated
(since you can always get it by adding a string length to
'beg'). Similarly, the old context string features
'pre' and 'post' have been dropped.
The TAB and BACKTAB features now behave in a consistent
way, skipping forward or back to the nearest *top level*
change (meaning a whole change unshadowed by any later
one). This implementation is completely different from
the one mentioned above for version 0.05.
0.09 Tue Jun 26 09:47:31 2012
Fixed TAB and BACKTAB features to find deletions (zero-width
regions), now handles multiple adjacent deltions sensible
(regards them all as in the same place, and the last one
made is "on top" and visible to the rep-undo command).
Added TODO file to the distribution.
1.00 Wed Jul 4 12:34:38 2012
Further improvements to TAB/BACKTAB to handle corner cases
(nested, overlapping changes to changes, etc).
Cleaned-up rep.el code somewhat, removing some redundant
features, explicitly checking for nil values (rather than
letting the emacs code crash with myserious overlayp errors).
This application now has no known bugs (though it is
not yet tested with the new GNU emacs 24 release),
hence the jump to 1.0.