diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/editfns.c | 5 | ||||
| -rw-r--r-- | src/fns.c | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 26 |
4 files changed, 35 insertions, 8 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 09a3ba2d825..bc76f96208a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2005-09-03 Richard M. Stallman <rms@gnu.org> | ||
| 2 | |||
| 3 | * xdisp.c (redisplay_internal): Make UPDATED as long as needed. | ||
| 4 | (move_it_in_display_line_to): Stop after last char on line even | ||
| 5 | on a windowing terminal, if that's the specified stop position. | ||
| 6 | |||
| 7 | * fns.c (Fsort): Doc fix. | ||
| 8 | |||
| 9 | * editfns.c (Fpropertize): Don't insist that properties be symbols. | ||
| 10 | |||
| 1 | 2005-09-01 Stefan Monnier <monnier@iro.umontreal.ca> | 11 | 2005-09-01 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 12 | ||
| 3 | * dispnew.c (window_to_frame_hpos, update_window): | 13 | * dispnew.c (window_to_frame_hpos, update_window): |
diff --git a/src/editfns.c b/src/editfns.c index da4533d2537..a05d2396448 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -3260,10 +3260,7 @@ usage: (propertize STRING &rest PROPERTIES) */) | |||
| 3260 | string = Fcopy_sequence (args[0]); | 3260 | string = Fcopy_sequence (args[0]); |
| 3261 | 3261 | ||
| 3262 | for (i = 1; i < nargs; i += 2) | 3262 | for (i = 1; i < nargs; i += 2) |
| 3263 | { | 3263 | properties = Fcons (args[i], Fcons (args[i + 1], properties)); |
| 3264 | CHECK_SYMBOL (args[i]); | ||
| 3265 | properties = Fcons (args[i], Fcons (args[i + 1], properties)); | ||
| 3266 | } | ||
| 3267 | 3264 | ||
| 3268 | Fadd_text_properties (make_number (0), | 3265 | Fadd_text_properties (make_number (0), |
| 3269 | make_number (SCHARS (string)), | 3266 | make_number (SCHARS (string)), |
| @@ -1894,7 +1894,7 @@ DEFUN ("sort", Fsort, Ssort, 2, 2, 0, | |||
| 1894 | doc: /* Sort LIST, stably, comparing elements using PREDICATE. | 1894 | doc: /* Sort LIST, stably, comparing elements using PREDICATE. |
| 1895 | Returns the sorted list. LIST is modified by side effects. | 1895 | Returns the sorted list. LIST is modified by side effects. |
| 1896 | PREDICATE is called with two elements of LIST, and should return non-nil | 1896 | PREDICATE is called with two elements of LIST, and should return non-nil |
| 1897 | if the first element is "less" than the second. */) | 1897 | if the first element should sort before the second. */) |
| 1898 | (list, predicate) | 1898 | (list, predicate) |
| 1899 | Lisp_Object list, predicate; | 1899 | Lisp_Object list, predicate; |
| 1900 | { | 1900 | { |
diff --git a/src/xdisp.c b/src/xdisp.c index a32cb70f436..b887c8d702c 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -5999,6 +5999,8 @@ move_it_in_display_line_to (it, to_charpos, to_x, op) | |||
| 5999 | glyphs have the same width. */ | 5999 | glyphs have the same width. */ |
| 6000 | int single_glyph_width = it->pixel_width / it->nglyphs; | 6000 | int single_glyph_width = it->pixel_width / it->nglyphs; |
| 6001 | int new_x; | 6001 | int new_x; |
| 6002 | int x_before_this_char = x; | ||
| 6003 | int hpos_before_this_char = it->hpos; | ||
| 6002 | 6004 | ||
| 6003 | for (i = 0; i < it->nglyphs; ++i, x = new_x) | 6005 | for (i = 0; i < it->nglyphs; ++i, x = new_x) |
| 6004 | { | 6006 | { |
| @@ -6030,8 +6032,22 @@ move_it_in_display_line_to (it, to_charpos, to_x, op) | |||
| 6030 | { | 6032 | { |
| 6031 | ++it->hpos; | 6033 | ++it->hpos; |
| 6032 | it->current_x = new_x; | 6034 | it->current_x = new_x; |
| 6035 | |||
| 6036 | /* The character's last glyph just barely fits | ||
| 6037 | in this row. */ | ||
| 6033 | if (i == it->nglyphs - 1) | 6038 | if (i == it->nglyphs - 1) |
| 6034 | { | 6039 | { |
| 6040 | /* If this is the destination position, | ||
| 6041 | return a position *before* it in this row, | ||
| 6042 | now that we know it fits in this row. */ | ||
| 6043 | if (BUFFER_POS_REACHED_P ()) | ||
| 6044 | { | ||
| 6045 | it->hpos = hpos_before_this_char; | ||
| 6046 | it->current_x = x_before_this_char; | ||
| 6047 | result = MOVE_POS_MATCH_OR_ZV; | ||
| 6048 | break; | ||
| 6049 | } | ||
| 6050 | |||
| 6035 | set_iterator_to_next (it, 1); | 6051 | set_iterator_to_next (it, 1); |
| 6036 | #ifdef HAVE_WINDOW_SYSTEM | 6052 | #ifdef HAVE_WINDOW_SYSTEM |
| 6037 | if (IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)) | 6053 | if (IT_OVERFLOW_NEWLINE_INTO_FRINGE (it)) |
| @@ -10600,9 +10616,13 @@ redisplay_internal (preserve_echo_area) | |||
| 10600 | if (consider_all_windows_p) | 10616 | if (consider_all_windows_p) |
| 10601 | { | 10617 | { |
| 10602 | Lisp_Object tail, frame; | 10618 | Lisp_Object tail, frame; |
| 10603 | int i, n = 0, size = 50; | 10619 | int i, n = 0, size = 5; |
| 10604 | struct frame **updated | 10620 | struct frame **updated; |
| 10605 | = (struct frame **) alloca (size * sizeof *updated); | 10621 | |
| 10622 | FOR_EACH_FRAME (tail, frame) | ||
| 10623 | size++; | ||
| 10624 | |||
| 10625 | updated = (struct frame **) alloca (size * sizeof *updated); | ||
| 10606 | 10626 | ||
| 10607 | /* Recompute # windows showing selected buffer. This will be | 10627 | /* Recompute # windows showing selected buffer. This will be |
| 10608 | incremented each time such a window is displayed. */ | 10628 | incremented each time such a window is displayed. */ |