aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog18
-rw-r--r--src/dispnew.c29
-rw-r--r--src/ftfont.c2
-rw-r--r--src/xdisp.c25
4 files changed, 59 insertions, 15 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1ec148b30c8..ae8835478a5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,21 @@
12012-03-20 Chong Yidong <cyd@gnu.org>
2
3 * dispnew.c (Fredisplay, Vredisplay_preemption_period): Update doc
4 to reflect default non-nil value of redisplay-dont-pause.
5
62012-03-19 Kenichi Handa <handa@m17n.org>
7
8 * ftfont.c (ftfont_drive_otf): Mask bits of character code to make
9 it fit in a valid range (Bug#11003).
10
112012-03-18 Eli Zaretskii <eliz@gnu.org>
12
13 * xdisp.c (cursor_row_p): Even if the glyph row ends in a string
14 that is not from display property, accept the row as a "cursor
15 row" if one of the string's character has a non-nil `cursor'
16 property. Fixes cursor positioning when there are newlines in
17 overlay strings, e.g. in icomplete.el. (Bug#11035)
18
12012-03-12 Paul Eggert <eggert@cs.ucla.edu> 192012-03-12 Paul Eggert <eggert@cs.ucla.edu>
2 20
3 * buffer.c (compare_overlays): Don't assume args differ (Bug#6830). 21 * buffer.c (compare_overlays): Don't assume args differ (Bug#6830).
diff --git a/src/dispnew.c b/src/dispnew.c
index d2c2668864e..1f494b5685b 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -6081,10 +6081,14 @@ sit_for (Lisp_Object timeout, int reading, int do_display)
6081 6081
6082 6082
6083DEFUN ("redisplay", Fredisplay, Sredisplay, 0, 1, 0, 6083DEFUN ("redisplay", Fredisplay, Sredisplay, 0, 1, 0,
6084 doc: /* Perform redisplay if no input is available. 6084 doc: /* Perform redisplay.
6085If optional arg FORCE is non-nil or `redisplay-dont-pause' is non-nil, 6085Optional arg FORCE, if non-nil, prevents redisplay from being
6086perform a full redisplay even if input is available. 6086preempted by arriving input, even if `redisplay-dont-pause' is nil.
6087Return t if redisplay was performed, nil otherwise. */) 6087If `redisplay-dont-pause' is non-nil (the default), redisplay is never
6088preempted by arriving input, so FORCE does nothing.
6089
6090Return t if redisplay was performed, nil if redisplay was preempted
6091immediately by pending input. */)
6088 (Lisp_Object force) 6092 (Lisp_Object force)
6089{ 6093{
6090 int count; 6094 int count;
@@ -6534,21 +6538,21 @@ syms_of_display (void)
6534 DEFSYM (Qredisplay_dont_pause, "redisplay-dont-pause"); 6538 DEFSYM (Qredisplay_dont_pause, "redisplay-dont-pause");
6535 6539
6536 DEFVAR_INT ("baud-rate", baud_rate, 6540 DEFVAR_INT ("baud-rate", baud_rate,
6537 doc: /* *The output baud rate of the terminal. 6541 doc: /* The output baud rate of the terminal.
6538On most systems, changing this value will affect the amount of padding 6542On most systems, changing this value will affect the amount of padding
6539and the other strategic decisions made during redisplay. */); 6543and the other strategic decisions made during redisplay. */);
6540 6544
6541 DEFVAR_BOOL ("inverse-video", inverse_video, 6545 DEFVAR_BOOL ("inverse-video", inverse_video,
6542 doc: /* *Non-nil means invert the entire frame display. 6546 doc: /* Non-nil means invert the entire frame display.
6543This means everything is in inverse video which otherwise would not be. */); 6547This means everything is in inverse video which otherwise would not be. */);
6544 6548
6545 DEFVAR_BOOL ("visible-bell", visible_bell, 6549 DEFVAR_BOOL ("visible-bell", visible_bell,
6546 doc: /* *Non-nil means try to flash the frame to represent a bell. 6550 doc: /* Non-nil means try to flash the frame to represent a bell.
6547 6551
6548See also `ring-bell-function'. */); 6552See also `ring-bell-function'. */);
6549 6553
6550 DEFVAR_BOOL ("no-redraw-on-reenter", no_redraw_on_reenter, 6554 DEFVAR_BOOL ("no-redraw-on-reenter", no_redraw_on_reenter,
6551 doc: /* *Non-nil means no need to redraw entire frame after suspending. 6555 doc: /* Non-nil means no need to redraw entire frame after suspending.
6552A non-nil value is useful if the terminal can automatically preserve 6556A non-nil value is useful if the terminal can automatically preserve
6553Emacs's frame display when you reenter Emacs. 6557Emacs's frame display when you reenter Emacs.
6554It is up to you to set this variable if your terminal can do that. */); 6558It is up to you to set this variable if your terminal can do that. */);
@@ -6603,14 +6607,15 @@ See `buffer-display-table' for more information. */);
6603 Vstandard_display_table = Qnil; 6607 Vstandard_display_table = Qnil;
6604 6608
6605 DEFVAR_BOOL ("redisplay-dont-pause", redisplay_dont_pause, 6609 DEFVAR_BOOL ("redisplay-dont-pause", redisplay_dont_pause,
6606 doc: /* *Non-nil means display update isn't paused when input is detected. */); 6610 doc: /* Non-nil means display update isn't paused when input is detected. */);
6607 redisplay_dont_pause = 1; 6611 redisplay_dont_pause = 1;
6608 6612
6609#if PERIODIC_PREEMPTION_CHECKING 6613#if PERIODIC_PREEMPTION_CHECKING
6610 DEFVAR_LISP ("redisplay-preemption-period", Vredisplay_preemption_period, 6614 DEFVAR_LISP ("redisplay-preemption-period", Vredisplay_preemption_period,
6611 doc: /* *The period in seconds between checking for input during redisplay. 6615 doc: /* Period in seconds between checking for input during redisplay.
6612If input is detected, redisplay is pre-empted, and the input is processed. 6616This has an effect only if `redisplay-dont-pause' is nil; in that
6613If nil, never pre-empt redisplay. */); 6617case, arriving input preempts redisplay until the input is processed.
6618If the value is nil, redisplay is never preempted. */);
6614 Vredisplay_preemption_period = make_float (0.10); 6619 Vredisplay_preemption_period = make_float (0.10);
6615#endif 6620#endif
6616 6621
diff --git a/src/ftfont.c b/src/ftfont.c
index 3c45eb2f72f..131465b4f85 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -1856,7 +1856,7 @@ ftfont_drive_otf (MFLTFont *font,
1856 setup_otf_gstring (len); 1856 setup_otf_gstring (len);
1857 for (i = 0; i < len; i++) 1857 for (i = 0; i < len; i++)
1858 { 1858 {
1859 otf_gstring.glyphs[i].c = in->glyphs[from + i].c; 1859 otf_gstring.glyphs[i].c = in->glyphs[from + i].c & 0x11FFFF;
1860 otf_gstring.glyphs[i].glyph_id = in->glyphs[from + i].code; 1860 otf_gstring.glyphs[i].glyph_id = in->glyphs[from + i].code;
1861 } 1861 }
1862 1862
diff --git a/src/xdisp.c b/src/xdisp.c
index 47eb75221e9..da2b78f67e3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -18561,9 +18561,11 @@ cursor_row_p (struct glyph_row *row)
18561 /* Suppose the row ends on a string. 18561 /* Suppose the row ends on a string.
18562 Unless the row is continued, that means it ends on a newline 18562 Unless the row is continued, that means it ends on a newline
18563 in the string. If it's anything other than a display string 18563 in the string. If it's anything other than a display string
18564 (e.g. a before-string from an overlay), we don't want the 18564 (e.g., a before-string from an overlay), we don't want the
18565 cursor there. (This heuristic seems to give the optimal 18565 cursor there. (This heuristic seems to give the optimal
18566 behavior for the various types of multi-line strings.) */ 18566 behavior for the various types of multi-line strings.)
18567 One exception: if the string has `cursor' property on one of
18568 its characters, we _do_ want the cursor there. */
18567 if (CHARPOS (row->end.string_pos) >= 0) 18569 if (CHARPOS (row->end.string_pos) >= 0)
18568 { 18570 {
18569 if (row->continued_p) 18571 if (row->continued_p)
@@ -18585,6 +18587,25 @@ cursor_row_p (struct glyph_row *row)
18585 result = 18587 result =
18586 (!NILP (prop) 18588 (!NILP (prop)
18587 && display_prop_string_p (prop, glyph->object)); 18589 && display_prop_string_p (prop, glyph->object));
18590 /* If there's a `cursor' property on one of the
18591 string's characters, this row is a cursor row,
18592 even though this is not a display string. */
18593 if (!result)
18594 {
18595 Lisp_Object s = glyph->object;
18596
18597 for ( ; glyph >= beg && EQ (glyph->object, s); --glyph)
18598 {
18599 EMACS_INT gpos = glyph->charpos;
18600
18601 if (!NILP (Fget_char_property (make_number (gpos),
18602 Qcursor, s)))
18603 {
18604 result = 1;
18605 break;
18606 }
18607 }
18608 }
18588 break; 18609 break;
18589 } 18610 }
18590 } 18611 }