From 426ac9499e082e4ab83a18639fd45b720584f347 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 5 Dec 2009 22:49:00 +0000 Subject: [PATCH] * xdisp.c (push_display_prop): Don't set avoid_cursor_p. Return 0 if push failed. (handle_line_prefix): Set avoid_cursor_p here. Check return value of push_display_prop (Bug#5000). --- src/ChangeLog | 5 +++++ src/xdisp.c | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1909af820fb..aec5dc18286 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2009-12-05 Chong Yidong + * xdisp.c (push_display_prop): Don't set avoid_cursor_p. Return 0 + if push failed. + (handle_line_prefix): Set avoid_cursor_p here. Check return value + of push_display_prop (Bug#5000). + * xfaces.c (Fx_family_fonts): Handle 2009-07-14 change to return value of font_list_entities (Bug#5085). diff --git a/src/xdisp.c b/src/xdisp.c index 05bcd136865..449d42dcf17 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -16384,22 +16384,20 @@ cursor_row_p (w, row) /* Push the display property PROP so that it will be rendered at the - current position in IT. */ + current position in IT. Return 1 if PROP was successfully pushed, + 0 otherwise. */ -static void +static int push_display_prop (struct it *it, Lisp_Object prop) { push_it (it); - /* Never display a cursor on the prefix. */ - it->avoid_cursor_p = 1; - if (STRINGP (prop)) { if (SCHARS (prop) == 0) { pop_it (it); - return; + return 0; } it->string = prop; @@ -16426,8 +16424,10 @@ push_display_prop (struct it *it, Lisp_Object prop) else { pop_it (it); /* bogus display property, give up */ - return; + return 0; } + + return 1; } /* Return the character-property PROP at the current position in IT. */ @@ -16467,13 +16467,13 @@ handle_line_prefix (struct it *it) if (NILP (prefix)) prefix = Vline_prefix; } - if (! NILP (prefix)) + if (! NILP (prefix) && push_display_prop (it, prefix)) { - push_display_prop (it, prefix); /* If the prefix is wider than the window, and we try to wrap it, it would acquire its own wrap prefix, and so on till the iterator stack overflows. So, don't wrap the prefix. */ it->line_wrap = TRUNCATE; + it->avoid_cursor_p = 1; } } -- 2.39.5