aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoakim Verona2011-08-30 09:50:25 +0200
committerJoakim Verona2011-08-30 09:50:25 +0200
commitb72c6fe2ac5f148b00ceed70a910c7c9ee6a669e (patch)
tree7c64545ae0d8f0d99b82134e04e43b0759d776bc /src
parent9fb7b0cab34a48a4c7b66abb6b8edc4ee20467b4 (diff)
parent393aa9d403dda96b2fa061311cc76bbad40489cf (diff)
downloademacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.tar.gz
emacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.zip
upstream
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog20
-rw-r--r--src/image.c30
-rw-r--r--src/term.c10
-rw-r--r--src/xdisp.c29
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 @@
12011-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
92011-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
142011-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
12011-08-27 Paul Eggert <eggert@cs.ucla.edu> 212011-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