diff options
| author | Joakim Verona | 2011-08-30 09:50:25 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-08-30 09:50:25 +0200 |
| commit | b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e (patch) | |
| tree | 7c64545ae0d8f0d99b82134e04e43b0759d776bc /src | |
| parent | 9fb7b0cab34a48a4c7b66abb6b8edc4ee20467b4 (diff) | |
| parent | 393aa9d403dda96b2fa061311cc76bbad40489cf (diff) | |
| download | emacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.tar.gz emacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.zip | |
upstream
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 20 | ||||
| -rw-r--r-- | src/image.c | 30 | ||||
| -rw-r--r-- | src/term.c | 10 | ||||
| -rw-r--r-- | src/xdisp.c | 29 |
4 files changed, 66 insertions, 23 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 7eb18593993..ceed28a7a7f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,23 @@ | |||
| 1 | 2011-08-29 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | * image.c (parse_image_spec): Check for nonnegative, not for positive, | ||
| 4 | when checking :margin (Bug#9390). | ||
| 5 | (IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR): | ||
| 6 | Renamed from IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, | ||
| 7 | so that the name doesn't mislead. All uses changed. | ||
| 8 | |||
| 9 | 2011-08-28 Johan Bockgård <bojohan@gnu.org> | ||
| 10 | |||
| 11 | * term.c (init_tty) [HAVE_GPM]: Move mouse settings after | ||
| 12 | set_tty_hooks. | ||
| 13 | |||
| 14 | 2011-08-27 Eli Zaretskii <eliz@gnu.org> | ||
| 15 | |||
| 16 | * xdisp.c (move_it_to): Don't bail out early when reaching | ||
| 17 | position beyond to_charpos, if we are scanning backwards. | ||
| 18 | (move_it_vertically_backward): When DY == 0, make sure we get to | ||
| 19 | the first character in the line after the newline. | ||
| 20 | |||
| 1 | 2011-08-27 Paul Eggert <eggert@cs.ucla.edu> | 21 | 2011-08-27 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 22 | ||
| 3 | * ccl.c: Improve and simplify overflow checking (Bug#9196). | 23 | * ccl.c: Improve and simplify overflow checking (Bug#9196). |
diff --git a/src/image.c b/src/image.c index d0d28bea582..d6bfc4050ca 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -691,7 +691,7 @@ enum image_value_type | |||
| 691 | IMAGE_STRING_OR_NIL_VALUE, | 691 | IMAGE_STRING_OR_NIL_VALUE, |
| 692 | IMAGE_SYMBOL_VALUE, | 692 | IMAGE_SYMBOL_VALUE, |
| 693 | IMAGE_POSITIVE_INTEGER_VALUE, | 693 | IMAGE_POSITIVE_INTEGER_VALUE, |
| 694 | IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, | 694 | IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, |
| 695 | IMAGE_NON_NEGATIVE_INTEGER_VALUE, | 695 | IMAGE_NON_NEGATIVE_INTEGER_VALUE, |
| 696 | IMAGE_ASCENT_VALUE, | 696 | IMAGE_ASCENT_VALUE, |
| 697 | IMAGE_INTEGER_VALUE, | 697 | IMAGE_INTEGER_VALUE, |
| @@ -798,12 +798,12 @@ parse_image_spec (Lisp_Object spec, struct image_keyword *keywords, | |||
| 798 | return 0; | 798 | return 0; |
| 799 | break; | 799 | break; |
| 800 | 800 | ||
| 801 | case IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR: | 801 | case IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR: |
| 802 | if (RANGED_INTEGERP (1, value, INT_MAX)) | 802 | if (RANGED_INTEGERP (0, value, INT_MAX)) |
| 803 | break; | 803 | break; |
| 804 | if (CONSP (value) | 804 | if (CONSP (value) |
| 805 | && RANGED_INTEGERP (1, XCAR (value), INT_MAX) | 805 | && RANGED_INTEGERP (0, XCAR (value), INT_MAX) |
| 806 | && RANGED_INTEGERP (1, XCDR (value), INT_MAX)) | 806 | && RANGED_INTEGERP (0, XCDR (value), INT_MAX)) |
| 807 | break; | 807 | break; |
| 808 | return 0; | 808 | return 0; |
| 809 | 809 | ||
| @@ -2256,7 +2256,7 @@ static const struct image_keyword xbm_format[XBM_LAST] = | |||
| 2256 | {":foreground", IMAGE_STRING_OR_NIL_VALUE, 0}, | 2256 | {":foreground", IMAGE_STRING_OR_NIL_VALUE, 0}, |
| 2257 | {":background", IMAGE_STRING_OR_NIL_VALUE, 0}, | 2257 | {":background", IMAGE_STRING_OR_NIL_VALUE, 0}, |
| 2258 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 2258 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 2259 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 2259 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 2260 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 2260 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 2261 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 2261 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 2262 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 2262 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -3051,7 +3051,7 @@ static const struct image_keyword xpm_format[XPM_LAST] = | |||
| 3051 | {":file", IMAGE_STRING_VALUE, 0}, | 3051 | {":file", IMAGE_STRING_VALUE, 0}, |
| 3052 | {":data", IMAGE_STRING_VALUE, 0}, | 3052 | {":data", IMAGE_STRING_VALUE, 0}, |
| 3053 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 3053 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 3054 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 3054 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 3055 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 3055 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 3056 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 3056 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 3057 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 3057 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -4980,7 +4980,7 @@ static const struct image_keyword pbm_format[PBM_LAST] = | |||
| 4980 | {":file", IMAGE_STRING_VALUE, 0}, | 4980 | {":file", IMAGE_STRING_VALUE, 0}, |
| 4981 | {":data", IMAGE_STRING_VALUE, 0}, | 4981 | {":data", IMAGE_STRING_VALUE, 0}, |
| 4982 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 4982 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 4983 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 4983 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 4984 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 4984 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 4985 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 4985 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 4986 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 4986 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -5395,7 +5395,7 @@ static const struct image_keyword png_format[PNG_LAST] = | |||
| 5395 | {":data", IMAGE_STRING_VALUE, 0}, | 5395 | {":data", IMAGE_STRING_VALUE, 0}, |
| 5396 | {":file", IMAGE_STRING_VALUE, 0}, | 5396 | {":file", IMAGE_STRING_VALUE, 0}, |
| 5397 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 5397 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 5398 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 5398 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 5399 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 5399 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 5400 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 5400 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 5401 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 5401 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -6015,7 +6015,7 @@ static const struct image_keyword jpeg_format[JPEG_LAST] = | |||
| 6015 | {":data", IMAGE_STRING_VALUE, 0}, | 6015 | {":data", IMAGE_STRING_VALUE, 0}, |
| 6016 | {":file", IMAGE_STRING_VALUE, 0}, | 6016 | {":file", IMAGE_STRING_VALUE, 0}, |
| 6017 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 6017 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 6018 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 6018 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 6019 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 6019 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 6020 | {":conversions", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6020 | {":conversions", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 6021 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6021 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -6565,7 +6565,7 @@ static const struct image_keyword tiff_format[TIFF_LAST] = | |||
| 6565 | {":data", IMAGE_STRING_VALUE, 0}, | 6565 | {":data", IMAGE_STRING_VALUE, 0}, |
| 6566 | {":file", IMAGE_STRING_VALUE, 0}, | 6566 | {":file", IMAGE_STRING_VALUE, 0}, |
| 6567 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 6567 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 6568 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 6568 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 6569 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 6569 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 6570 | {":conversions", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6570 | {":conversions", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 6571 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6571 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -7002,7 +7002,7 @@ static const struct image_keyword gif_format[GIF_LAST] = | |||
| 7002 | {":data", IMAGE_STRING_VALUE, 0}, | 7002 | {":data", IMAGE_STRING_VALUE, 0}, |
| 7003 | {":file", IMAGE_STRING_VALUE, 0}, | 7003 | {":file", IMAGE_STRING_VALUE, 0}, |
| 7004 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 7004 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 7005 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 7005 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 7006 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 7006 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 7007 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 7007 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 7008 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 7008 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -7487,7 +7487,7 @@ static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] = | |||
| 7487 | {":data", IMAGE_STRING_VALUE, 0}, | 7487 | {":data", IMAGE_STRING_VALUE, 0}, |
| 7488 | {":file", IMAGE_STRING_VALUE, 0}, | 7488 | {":file", IMAGE_STRING_VALUE, 0}, |
| 7489 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 7489 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 7490 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 7490 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 7491 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 7491 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 7492 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 7492 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 7493 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 7493 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -8010,7 +8010,7 @@ static const struct image_keyword svg_format[SVG_LAST] = | |||
| 8010 | {":data", IMAGE_STRING_VALUE, 0}, | 8010 | {":data", IMAGE_STRING_VALUE, 0}, |
| 8011 | {":file", IMAGE_STRING_VALUE, 0}, | 8011 | {":file", IMAGE_STRING_VALUE, 0}, |
| 8012 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 8012 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 8013 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 8013 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 8014 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 8014 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 8015 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8015 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 8016 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8016 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -8405,7 +8405,7 @@ static const struct image_keyword gs_format[GS_LAST] = | |||
| 8405 | {":loader", IMAGE_FUNCTION_VALUE, 0}, | 8405 | {":loader", IMAGE_FUNCTION_VALUE, 0}, |
| 8406 | {":bounding-box", IMAGE_DONT_CHECK_VALUE_TYPE, 1}, | 8406 | {":bounding-box", IMAGE_DONT_CHECK_VALUE_TYPE, 1}, |
| 8407 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 8407 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 8408 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, | 8408 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 8409 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 8409 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 8410 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8410 | {":conversion", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 8411 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8411 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
diff --git a/src/term.c b/src/term.c index f3bf3a947cb..8672a2417c8 100644 --- a/src/term.c +++ b/src/term.c | |||
| @@ -3138,11 +3138,6 @@ init_tty (const char *name, const char *terminal_type, int must_succeed) | |||
| 3138 | encode_terminal_src_size = 0; | 3138 | encode_terminal_src_size = 0; |
| 3139 | encode_terminal_dst_size = 0; | 3139 | encode_terminal_dst_size = 0; |
| 3140 | 3140 | ||
| 3141 | #ifdef HAVE_GPM | ||
| 3142 | terminal->mouse_position_hook = term_mouse_position; | ||
| 3143 | tty->mouse_highlight.mouse_face_window = Qnil; | ||
| 3144 | #endif | ||
| 3145 | |||
| 3146 | 3141 | ||
| 3147 | #ifndef DOS_NT | 3142 | #ifndef DOS_NT |
| 3148 | set_tty_hooks (terminal); | 3143 | set_tty_hooks (terminal); |
| @@ -3402,6 +3397,11 @@ use the Bourne shell command `TERM=... export TERM' (C-shell:\n\ | |||
| 3402 | tty->TN_max_colors = 16; /* Required to be non-zero for tty-display-color-p */ | 3397 | tty->TN_max_colors = 16; /* Required to be non-zero for tty-display-color-p */ |
| 3403 | #endif /* DOS_NT */ | 3398 | #endif /* DOS_NT */ |
| 3404 | 3399 | ||
| 3400 | #ifdef HAVE_GPM | ||
| 3401 | terminal->mouse_position_hook = term_mouse_position; | ||
| 3402 | tty->mouse_highlight.mouse_face_window = Qnil; | ||
| 3403 | #endif | ||
| 3404 | |||
| 3405 | terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); | 3405 | terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); |
| 3406 | init_kboard (terminal->kboard); | 3406 | init_kboard (terminal->kboard); |
| 3407 | KVAR (terminal->kboard, Vwindow_system) = Qnil; | 3407 | KVAR (terminal->kboard, Vwindow_system) = Qnil; |
diff --git a/src/xdisp.c b/src/xdisp.c index 7e06938b3d3..8261291f8cc 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -8414,7 +8414,14 @@ move_it_to (struct it *it, EMACS_INT to_charpos, int to_x, int to_y, int to_vpos | |||
| 8414 | else if (BUFFERP (it->object) | 8414 | else if (BUFFERP (it->object) |
| 8415 | && (it->method == GET_FROM_BUFFER | 8415 | && (it->method == GET_FROM_BUFFER |
| 8416 | || it->method == GET_FROM_STRETCH) | 8416 | || it->method == GET_FROM_STRETCH) |
| 8417 | && IT_CHARPOS (*it) >= to_charpos) | 8417 | && IT_CHARPOS (*it) >= to_charpos |
| 8418 | /* Under bidi iteration, a call to set_iterator_to_next | ||
| 8419 | can scan far beyond to_charpos if the initial | ||
| 8420 | portion of the next line needs to be reordered. In | ||
| 8421 | that case, give move_it_in_display_line_to another | ||
| 8422 | chance below. */ | ||
| 8423 | && !(it->bidi_p | ||
| 8424 | && it->bidi_it.scan_dir == -1)) | ||
| 8418 | skip = MOVE_POS_MATCH_OR_ZV; | 8425 | skip = MOVE_POS_MATCH_OR_ZV; |
| 8419 | else | 8426 | else |
| 8420 | skip = move_it_in_display_line_to (it, to_charpos, -1, MOVE_TO_POS); | 8427 | skip = move_it_in_display_line_to (it, to_charpos, -1, MOVE_TO_POS); |
| @@ -8549,7 +8556,8 @@ move_it_vertically_backward (struct it *it, int dy) | |||
| 8549 | reseat_1 (it, it->current.pos, 1); | 8556 | reseat_1 (it, it->current.pos, 1); |
| 8550 | 8557 | ||
| 8551 | /* We are now surely at a line start. */ | 8558 | /* We are now surely at a line start. */ |
| 8552 | it->current_x = it->hpos = 0; | 8559 | it->current_x = it->hpos = 0; /* FIXME: this is incorrect when bidi |
| 8560 | reordering is in effect. */ | ||
| 8553 | it->continuation_lines_width = 0; | 8561 | it->continuation_lines_width = 0; |
| 8554 | 8562 | ||
| 8555 | /* Move forward and see what y-distance we moved. First move to the | 8563 | /* Move forward and see what y-distance we moved. First move to the |
| @@ -8583,10 +8591,25 @@ move_it_vertically_backward (struct it *it, int dy) | |||
| 8583 | if (dy == 0) | 8591 | if (dy == 0) |
| 8584 | { | 8592 | { |
| 8585 | /* DY == 0 means move to the start of the screen line. The | 8593 | /* DY == 0 means move to the start of the screen line. The |
| 8586 | value of nlines is > 0 if continuation lines were involved. */ | 8594 | value of nlines is > 0 if continuation lines were involved, |
| 8595 | or if the original IT position was at start of a line. */ | ||
| 8587 | RESTORE_IT (it, it, it2data); | 8596 | RESTORE_IT (it, it, it2data); |
| 8588 | if (nlines > 0) | 8597 | if (nlines > 0) |
| 8589 | move_it_by_lines (it, nlines); | 8598 | move_it_by_lines (it, nlines); |
| 8599 | /* The above code moves us to some position NLINES down, | ||
| 8600 | usually to its first glyph (leftmost in an L2R line), but | ||
| 8601 | that's not necessarily the start of the line, under bidi | ||
| 8602 | reordering. We want to get to the character position | ||
| 8603 | that is immediately after the newline of the previous | ||
| 8604 | line. */ | ||
| 8605 | if (it->bidi_p && IT_CHARPOS (*it) > BEGV | ||
| 8606 | && FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n') | ||
| 8607 | { | ||
| 8608 | EMACS_INT nl_pos = | ||
| 8609 | find_next_newline_no_quit (IT_CHARPOS (*it) - 1, -1); | ||
| 8610 | |||
| 8611 | move_it_to (it, nl_pos, -1, -1, -1, MOVE_TO_POS); | ||
| 8612 | } | ||
| 8590 | bidi_unshelve_cache (it3data, 1); | 8613 | bidi_unshelve_cache (it3data, 1); |
| 8591 | } | 8614 | } |
| 8592 | else | 8615 | else |