diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/editfns.c | 7 | ||||
| -rw-r--r-- | src/xdisp.c | 49 |
3 files changed, 52 insertions, 14 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 4df4455e862..4d493eab7b1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,15 @@ | |||
| 1 | 2011-08-08 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * xdisp.c (forward_to_next_line_start): Allow to use the | ||
| 4 | no-display-properties-and-no-overlays under bidi display. Set | ||
| 5 | disp_pos in the bidi iterator to avoid searches for display | ||
| 6 | properties and overlays. | ||
| 7 | |||
| 1 | 2011-08-08 Chong Yidong <cyd@stupidchicken.com> | 8 | 2011-08-08 Chong Yidong <cyd@stupidchicken.com> |
| 2 | 9 | ||
| 10 | * editfns.c (Fset_time_zone_rule): Document relationship with the | ||
| 11 | setenv function. | ||
| 12 | |||
| 3 | * ftfont.c (ftfont_pattern_entity): Copy the extras argument to | 13 | * ftfont.c (ftfont_pattern_entity): Copy the extras argument to |
| 4 | the font entity extracted from the cache (Bug#8109). | 14 | the font entity extracted from the cache (Bug#8109). |
| 5 | 15 | ||
diff --git a/src/editfns.c b/src/editfns.c index 5eed386afb7..297f7b6d7e4 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -2053,7 +2053,12 @@ static char *initial_tz; | |||
| 2053 | DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0, | 2053 | DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0, |
| 2054 | doc: /* Set the local time zone using TZ, a string specifying a time zone rule. | 2054 | doc: /* Set the local time zone using TZ, a string specifying a time zone rule. |
| 2055 | If TZ is nil, use implementation-defined default time zone information. | 2055 | If TZ is nil, use implementation-defined default time zone information. |
| 2056 | If TZ is t, use Universal Time. */) | 2056 | If TZ is t, use Universal Time. |
| 2057 | |||
| 2058 | Instead of calling this function, you typically want (setenv "TZ" TZ). | ||
| 2059 | That changes both the environment of the Emacs process and the | ||
| 2060 | variable `process-environment', whereas `set-time-zone-rule' affects | ||
| 2061 | only the former. */) | ||
| 2057 | (Lisp_Object tz) | 2062 | (Lisp_Object tz) |
| 2058 | { | 2063 | { |
| 2059 | const char *tzstring; | 2064 | const char *tzstring; |
diff --git a/src/xdisp.c b/src/xdisp.c index d4f53012763..b09a1547a57 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -5567,19 +5567,42 @@ forward_to_next_line_start (struct it *it, int *skipped_p, | |||
| 5567 | 5567 | ||
| 5568 | xassert (!STRINGP (it->string)); | 5568 | xassert (!STRINGP (it->string)); |
| 5569 | 5569 | ||
| 5570 | /* If we are not bidi-reordering, and there isn't any `display' | 5570 | /* If there isn't any `display' property in sight, and no |
| 5571 | property in sight, and no overlays, we can just use the | 5571 | overlays, we can just use the position of the newline in |
| 5572 | position of the newline in buffer text. */ | 5572 | buffer text. */ |
| 5573 | if (!it->bidi_p | 5573 | if (it->stop_charpos >= limit |
| 5574 | && (it->stop_charpos >= limit | 5574 | || ((pos = Fnext_single_property_change (make_number (start), |
| 5575 | || ((pos = Fnext_single_property_change (make_number (start), | 5575 | Qdisplay, Qnil, |
| 5576 | Qdisplay, Qnil, | 5576 | make_number (limit)), |
| 5577 | make_number (limit)), | 5577 | NILP (pos)) |
| 5578 | NILP (pos)) | 5578 | && next_overlay_change (start) == ZV)) |
| 5579 | && next_overlay_change (start) == ZV))) | 5579 | { |
| 5580 | { | 5580 | if (!it->bidi_p) |
| 5581 | IT_CHARPOS (*it) = limit; | 5581 | { |
| 5582 | IT_BYTEPOS (*it) = CHAR_TO_BYTE (limit); | 5582 | IT_CHARPOS (*it) = limit; |
| 5583 | IT_BYTEPOS (*it) = CHAR_TO_BYTE (limit); | ||
| 5584 | } | ||
| 5585 | else | ||
| 5586 | { | ||
| 5587 | struct bidi_it bprev; | ||
| 5588 | |||
| 5589 | /* Help bidi.c avoid expensive searches for display | ||
| 5590 | properties and overlays, by telling it that there are | ||
| 5591 | none up to `limit'. */ | ||
| 5592 | if (it->bidi_it.disp_pos < limit) | ||
| 5593 | { | ||
| 5594 | it->bidi_it.disp_pos = limit; | ||
| 5595 | it->bidi_it.disp_prop_p = 0; | ||
| 5596 | } | ||
| 5597 | do { | ||
| 5598 | bprev = it->bidi_it; | ||
| 5599 | bidi_move_to_visually_next (&it->bidi_it); | ||
| 5600 | } while (it->bidi_it.charpos != limit); | ||
| 5601 | IT_CHARPOS (*it) = limit; | ||
| 5602 | IT_BYTEPOS (*it) = it->bidi_it.bytepos; | ||
| 5603 | if (bidi_it_prev) | ||
| 5604 | *bidi_it_prev = bprev; | ||
| 5605 | } | ||
| 5583 | *skipped_p = newline_found_p = 1; | 5606 | *skipped_p = newline_found_p = 1; |
| 5584 | } | 5607 | } |
| 5585 | else | 5608 | else |