diff options
| author | Barry O'Reilly | 2014-03-24 22:47:39 -0400 |
|---|---|---|
| committer | Barry O'Reilly | 2014-03-24 22:47:39 -0400 |
| commit | 37ea8275f7faad1192ddaba9f4a0789580675e17 (patch) | |
| tree | cb6242b0298180f32d8c253c1b3aa8af3c6572fa /src/ChangeLog | |
| parent | 3e2377ce2f4eeb141ffbd000723c55813f78b08f (diff) | |
| download | emacs-37ea8275f7faad1192ddaba9f4a0789580675e17.tar.gz emacs-37ea8275f7faad1192ddaba9f4a0789580675e17.zip | |
Undo in region after markers in undo history relocated
* simple.el (primitive-undo): Only process marker adjustments
validated against their corresponding (TEXT . POS). Issue warning
for lone marker adjustments in undo history. (Bug#16818)
(undo-make-selective-list): Add marker adjustments to selective
undo list based on whether their corresponding (TEXT . POS) is in
the region. Remove variable adjusted-markers, which was unused
and only non nil during undo-make-selective-list.
(undo-elt-in-region): Return nil when passed a marker adjustment
and explain in function doc.
Have (MARKER . ADJUSTMENT) undo records always be immediately
after their corresponding (TEXT . POS) record in undo list.
(Bug#16818)
* lisp.h (record-delete): New arg record_markers.
(record_marker_adjustment): No longer needed outside undo.c.
* insdel.c (adjust_markers_for_delete): Move calculation of marker
adjustments to undo.c's record_marker_adjustments. Note that
fileio.c's decide_coding_unwind is another caller to
adjust_markers_for_delete. Because it has undo list bound to t,
it does not rely on adjust_markers_for_delete to record marker
adjustments.
(del_range_2): Swap call to record_delete and
adjust_markers_for_delete so as undo marker adjustments are
recorded before current deletion's adjustments, as before.
(adjust_after_replace):
(replace_range): Pass value for new record_markers arg to
delete_record.
* undo.c (record_marker_adjustment): Renamed to
record_marker_adjustments and made static.
(record_delete): Check record_markers arg and call
record_marker_adjustments.
(record_change): Pass value for new record_markers arg to
delete_record.
(record_point): at_boundary calculation no longer needs to account
for marker adjustments.
* undo-tests.el (undo-test-marker-adjustment-nominal):
(undo-test-region-t-marker): New tests of marker adjustments.
(undo-test-marker-adjustment-moved):
(undo-test-region-mark-adjustment): New tests to demonstrate
bug#16818, which fail without the fix.
* markers.texi (Moving Marker Positions): The 2014-03-02 doc
change mentioning undo's inability to handle relocated markers no
longer applies. See bug#16818.
* text.texi (Undo): Expand documentation of (TEXT . POS) and
(MARKER . ADJUSTMENT) undo elements.
Diffstat (limited to 'src/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index da82eca9df2..cbe10d89690 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,31 @@ | |||
| 1 | 2014-03-24 Barry O'Reilly <gundaetiapo@gmail.com> | ||
| 2 | |||
| 3 | Have (MARKER . ADJUSTMENT) undo records always be immediately | ||
| 4 | after their corresponding (TEXT . POS) record in undo list. | ||
| 5 | (Bug#16818) | ||
| 6 | * lisp.h (record-delete): New arg record_markers. | ||
| 7 | (record_marker_adjustment): No longer needed outside undo.c. | ||
| 8 | * insdel.c (adjust_markers_for_delete): Move calculation of marker | ||
| 9 | adjustments to undo.c's record_marker_adjustments. Note that | ||
| 10 | fileio.c's decide_coding_unwind is another caller to | ||
| 11 | adjust_markers_for_delete. Because it has undo list bound to t, | ||
| 12 | it does not rely on adjust_markers_for_delete to record marker | ||
| 13 | adjustments. | ||
| 14 | (del_range_2): Swap call to record_delete and | ||
| 15 | adjust_markers_for_delete so as undo marker adjustments are | ||
| 16 | recorded before current deletion's adjustments, as before. | ||
| 17 | (adjust_after_replace): | ||
| 18 | (replace_range): Pass value for new record_markers arg to | ||
| 19 | delete_record. | ||
| 20 | * undo.c (record_marker_adjustment): Renamed to | ||
| 21 | record_marker_adjustments and made static. | ||
| 22 | (record_delete): Check record_markers arg and call | ||
| 23 | record_marker_adjustments. | ||
| 24 | (record_change): Pass value for new record_markers arg to | ||
| 25 | delete_record. | ||
| 26 | (record_point): at_boundary calculation no longer needs to account | ||
| 27 | for marker adjustments. | ||
| 28 | |||
| 1 | 2014-03-24 Martin Rudalics <rudalics@gmx.at> | 29 | 2014-03-24 Martin Rudalics <rudalics@gmx.at> |
| 2 | 30 | ||
| 3 | * w32term.c (x_set_window_size): Refine fix from 2014-03-14 | 31 | * w32term.c (x_set_window_size): Refine fix from 2014-03-14 |