diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 18 | ||||
| -rw-r--r-- | src/dispnew.c | 29 | ||||
| -rw-r--r-- | src/ftfont.c | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 25 |
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 @@ | |||
| 1 | 2012-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 | |||
| 6 | 2012-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 | |||
| 11 | 2012-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 | |||
| 1 | 2012-03-12 Paul Eggert <eggert@cs.ucla.edu> | 19 | 2012-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 | ||
| 6083 | DEFUN ("redisplay", Fredisplay, Sredisplay, 0, 1, 0, | 6083 | DEFUN ("redisplay", Fredisplay, Sredisplay, 0, 1, 0, |
| 6084 | doc: /* Perform redisplay if no input is available. | 6084 | doc: /* Perform redisplay. |
| 6085 | If optional arg FORCE is non-nil or `redisplay-dont-pause' is non-nil, | 6085 | Optional arg FORCE, if non-nil, prevents redisplay from being |
| 6086 | perform a full redisplay even if input is available. | 6086 | preempted by arriving input, even if `redisplay-dont-pause' is nil. |
| 6087 | Return t if redisplay was performed, nil otherwise. */) | 6087 | If `redisplay-dont-pause' is non-nil (the default), redisplay is never |
| 6088 | preempted by arriving input, so FORCE does nothing. | ||
| 6089 | |||
| 6090 | Return t if redisplay was performed, nil if redisplay was preempted | ||
| 6091 | immediately 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. |
| 6538 | On most systems, changing this value will affect the amount of padding | 6542 | On most systems, changing this value will affect the amount of padding |
| 6539 | and the other strategic decisions made during redisplay. */); | 6543 | and 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. |
| 6543 | This means everything is in inverse video which otherwise would not be. */); | 6547 | This 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 | ||
| 6548 | See also `ring-bell-function'. */); | 6552 | See 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. |
| 6552 | A non-nil value is useful if the terminal can automatically preserve | 6556 | A non-nil value is useful if the terminal can automatically preserve |
| 6553 | Emacs's frame display when you reenter Emacs. | 6557 | Emacs's frame display when you reenter Emacs. |
| 6554 | It is up to you to set this variable if your terminal can do that. */); | 6558 | It 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. |
| 6612 | If input is detected, redisplay is pre-empted, and the input is processed. | 6616 | This has an effect only if `redisplay-dont-pause' is nil; in that |
| 6613 | If nil, never pre-empt redisplay. */); | 6617 | case, arriving input preempts redisplay until the input is processed. |
| 6618 | If 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 | } |