From unknown Fri Jun 20 07:11:21 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#10903 <10903@debbugs.gnu.org> To: bug#10903 <10903@debbugs.gnu.org> Subject: Status: 24.0.93; redisplay glitch with before-string and display overlays Reply-To: bug#10903 <10903@debbugs.gnu.org> Date: Fri, 20 Jun 2025 14:11:21 +0000 retitle 10903 24.0.93; redisplay glitch with before-string and display over= lays reassign 10903 emacs submitter 10903 Stephen Berman severity 10903 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 27 17:07:39 2012 Received: (at submit) by debbugs.gnu.org; 27 Feb 2012 22:07:39 +0000 Received: from localhost ([127.0.0.1]:60279 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S28jK-0002Nm-Iq for submit@debbugs.gnu.org; Mon, 27 Feb 2012 17:07:39 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37897) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S28j8-0002NO-D4 for submit@debbugs.gnu.org; Mon, 27 Feb 2012 17:07:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S28g4-0004BO-8r for submit@debbugs.gnu.org; Mon, 27 Feb 2012 17:04:17 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:38116) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S28g4-0004BJ-5n for submit@debbugs.gnu.org; Mon, 27 Feb 2012 17:04:16 -0500 Received: from eggs.gnu.org ([208.118.235.92]:56945) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S28g2-0003s6-8K for bug-gnu-emacs@gnu.org; Mon, 27 Feb 2012 17:04:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S28fx-000481-Ea for bug-gnu-emacs@gnu.org; Mon, 27 Feb 2012 17:04:13 -0500 Received: from mailout-de.gmx.net ([213.165.64.23]:51100) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1S28fx-00047m-3u for bug-gnu-emacs@gnu.org; Mon, 27 Feb 2012 17:04:09 -0500 Received: (qmail invoked by alias); 27 Feb 2012 22:04:06 -0000 Received: from i59F56334.versanet.de (EHLO escher.home) [89.245.99.52] by mail.gmx.net (mp033) with SMTP; 27 Feb 2012 23:04:06 +0100 X-Authenticated: #20778731 X-Provags-ID: V01U2FsdGVkX1+ll2hDLcild88VwcPCXWCU+5i9iteOEaPKPHKw6V 6o0IDqUGlenRhe From: Stephen Berman To: bug-gnu-emacs@gnu.org Subject: 24.0.93; redisplay glitch with before-string and display overlays Date: Mon, 27 Feb 2012 23:04:03 +0100 Message-ID: <87pqd0hr1o.fsf@escher.home> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.93 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Y-GMX-Trusted: 0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) 1. emacs -Q 2. Type `C-x b a RET' to get a fresh buffer in Fundamental mode, and at (point-min) type "012". 3. Type `M-<' so that the cursor is over (i.e. just before) `0'. 4. Type `M-: (overlay-put (make-overlay (point) (point)) 'before-string "*")'. Now you see this: *012 5. Type `M-: (overlay-put (make-overlay (point) (1+ (point))) 'display "")'. Now you see this: *12 6. Type `M-: (remove-overlays)' to restore "012". 7. Type SPC to advance the cursor and the start of "012" to column one. 8. Repeat step 4. Now you see this: *012 9. Repeat step 5. Now you see this: *112 According to my tests, this redisplay glitch happens when the overlays begin anywhere other than (point-min). It also only happens when the before-string overlay is added prior to the display string overlay, and only when the value of the display string is "". I don't know when this problem appeared, but it does not happen in Emacs 23.3. In GNU Emacs 24.0.93.1 (i686-suse-linux-gnu, GTK+ Version 2.24.7) of 2012-02-26 on escher Windowing system distributor `The X.Org Foundation', version 11.0.11004000 Configured using: `configure '--without-toolkit-scroll-bars' 'CFLAGS=-g'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=local locale-coding-system: utf-8-unix default enable-multibyte-characters: t From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 28 17:02:53 2012 Received: (at 10903) by debbugs.gnu.org; 28 Feb 2012 22:02:53 +0000 Received: from localhost ([127.0.0.1]:54707 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S2V8G-0000bb-O0 for submit@debbugs.gnu.org; Tue, 28 Feb 2012 17:02:53 -0500 Received: from mtaout22.012.net.il ([80.179.55.172]:60013) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S2V84-0000b7-AI for 10903@debbugs.gnu.org; Tue, 28 Feb 2012 17:02:41 -0500 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0M0400K00ENDDR00@a-mtaout22.012.net.il> for 10903@debbugs.gnu.org; Tue, 28 Feb 2012 22:38:10 +0200 (IST) Received: from HOME-C4E4A596F7 ([77.124.119.92]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M0400IL5ENL8AW1@a-mtaout22.012.net.il>; Tue, 28 Feb 2012 22:38:10 +0200 (IST) Date: Tue, 28 Feb 2012 22:40:17 +0200 From: Eli Zaretskii Subject: Re: bug#10903: 24.0.93; redisplay glitch with before-string and display overlays In-reply-to: <87pqd0hr1o.fsf@escher.home> X-012-Sender: halo1@inter.net.il To: Stephen Berman Message-id: <831upeelou.fsf@gnu.org> References: <87pqd0hr1o.fsf@escher.home> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 10903 Cc: 10903@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > From: Stephen Berman > Date: Mon, 27 Feb 2012 23:04:03 +0100 > > 1. emacs -Q > > 2. Type `C-x b a RET' to get a fresh buffer in Fundamental mode, and at > (point-min) type "012". > > 3. Type `M-<' so that the cursor is over (i.e. just before) `0'. > > 4. Type `M-: (overlay-put (make-overlay (point) (point)) 'before-string > "*")'. Now you see this: > > *012 > > 5. Type `M-: (overlay-put (make-overlay (point) (1+ (point))) 'display > "")'. Now you see this: > > *12 > > 6. Type `M-: (remove-overlays)' to restore "012". > > 7. Type SPC to advance the cursor and the start of "012" to column one. > > 8. Repeat step 4. Now you see this: > > *012 > > 9. Repeat step 5. Now you see this: > > *112 We were hitting on an old redisplay optimization that didn't play well with the bidi-aware display engine. I think I fixed this. Thanks for such a clear-cut test case. Since Savannah is on the move, I cannot commit the fix, but perhaps you could test it locally and see if there are any leftovers. Here's the patch: === modified file 'src/xdisp.c' --- src/xdisp.c 2012-02-12 09:46:33 +0000 +++ src/xdisp.c 2012-02-28 20:35:41 +0000 @@ -5156,6 +5156,10 @@ next_overlay_string (struct it *it) it->current.overlay_string_index = -1; it->n_overlay_strings = 0; it->overlay_strings_charpos = -1; + /* If there's an empty display string on the stack, pop the + stack, to resync the bidi iterator with IT's position. */ + if (it->sp > 0 && STRINGP (it->string) && !SCHARS (it->string)) + pop_it (it); /* If we're at the end of the buffer, record that we have processed the overlay strings there already, so that @@ -5453,8 +5457,15 @@ get_overlay_strings_1 (struct it *it, EM xassert (!compute_stop_p || it->sp == 0); /* When called from handle_stop, there might be an empty display - string loaded. In that case, don't bother saving it. */ - if (!STRINGP (it->string) || SCHARS (it->string)) + string loaded. In that case, don't bother saving it. But + don't use this optimization with the bidi iterator, since we + need the corresponding pop_it call to resync the bidi + iterator's position with IT's position, after we are done + with the overlay strings. (The corresponding call to pop_it + in case of an empty display string is in + next_overlay_string.) */ + if (!(!it->bidi_p + && STRINGP (it->string) && !SCHARS (it->string))) push_it (it, NULL); /* Set up IT to deliver display elements from the first overlay From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 28 17:25:51 2012 Received: (at 10903) by debbugs.gnu.org; 28 Feb 2012 22:25:51 +0000 Received: from localhost ([127.0.0.1]:54747 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S2VUT-000192-Hi for submit@debbugs.gnu.org; Tue, 28 Feb 2012 17:25:51 -0500 Received: from mailout-de.gmx.net ([213.165.64.22]:34092) by debbugs.gnu.org with smtp (Exim 4.72) (envelope-from ) id 1S2VUG-00018J-OB for 10903@debbugs.gnu.org; Tue, 28 Feb 2012 17:25:38 -0500 Received: (qmail invoked by alias); 28 Feb 2012 22:25:15 -0000 Received: from i59F564CF.versanet.de (EHLO escher.home) [89.245.100.207] by mail.gmx.net (mp004) with SMTP; 28 Feb 2012 23:25:15 +0100 X-Authenticated: #20778731 X-Provags-ID: V01U2FsdGVkX182+9IJ5tQ2K2mSgKaA636pz1mjx5zLZSGuSHo7pe ecmfbydH2+ahNC From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#10903: 24.0.93; redisplay glitch with before-string and display overlays References: <87pqd0hr1o.fsf@escher.home> <831upeelou.fsf@gnu.org> Date: Tue, 28 Feb 2012 23:25:13 +0100 In-Reply-To: <831upeelou.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 28 Feb 2012 22:40:17 +0200") Message-ID: <87y5rm1tpy.fsf@escher.home> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.94 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Y-GMX-Trusted: 0 X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 10903 Cc: 10903@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) On Tue, 28 Feb 2012 22:40:17 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Date: Mon, 27 Feb 2012 23:04:03 +0100 >> >> 1. emacs -Q >> >> 2. Type `C-x b a RET' to get a fresh buffer in Fundamental mode, and at >> (point-min) type "012". >> >> 3. Type `M-<' so that the cursor is over (i.e. just before) `0'. >> >> 4. Type `M-: (overlay-put (make-overlay (point) (point)) 'before-string >> "*")'. Now you see this: >> >> *012 >> >> 5. Type `M-: (overlay-put (make-overlay (point) (1+ (point))) 'display >> "")'. Now you see this: >> >> *12 >> >> 6. Type `M-: (remove-overlays)' to restore "012". >> >> 7. Type SPC to advance the cursor and the start of "012" to column one. >> >> 8. Repeat step 4. Now you see this: >> >> *012 >> >> 9. Repeat step 5. Now you see this: >> >> *112 > > We were hitting on an old redisplay optimization that didn't play well > with the bidi-aware display engine. > > I think I fixed this. Thanks for such a clear-cut test case. > > Since Savannah is on the move, I cannot commit the fix, but perhaps > you could test it locally and see if there are any leftovers. Here's > the patch: I applied the patch and rebuilt, and the redisplay glitches I observed are gone; thanks very much for the quick fix! I consider this bug resolved, but it should probably be closed after the fix is committed to the trunk. Thanks again. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 29 12:50:45 2012 Received: (at 10903-done) by debbugs.gnu.org; 29 Feb 2012 17:50:45 +0000 Received: from localhost ([127.0.0.1]:56300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S2nfo-0005GX-Md for submit@debbugs.gnu.org; Wed, 29 Feb 2012 12:50:45 -0500 Received: from mtaout22.012.net.il ([80.179.55.172]:49368) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S2nfb-0005G5-Mi for 10903-done@debbugs.gnu.org; Wed, 29 Feb 2012 12:50:32 -0500 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0M0600A001I9HU00@a-mtaout22.012.net.il> for 10903-done@debbugs.gnu.org; Wed, 29 Feb 2012 19:50:10 +0200 (IST) Received: from HOME-C4E4A596F7 ([77.124.119.92]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M0600AQ71JK2H80@a-mtaout22.012.net.il>; Wed, 29 Feb 2012 19:50:09 +0200 (IST) Date: Wed, 29 Feb 2012 19:52:17 +0200 From: Eli Zaretskii Subject: Re: bug#10903: 24.0.93; redisplay glitch with before-string and display overlays In-reply-to: <87y5rm1tpy.fsf@escher.home> X-012-Sender: halo1@inter.net.il To: Stephen Berman Message-id: <83r4xdcysu.fsf@gnu.org> References: <87pqd0hr1o.fsf@escher.home> <831upeelou.fsf@gnu.org> <87y5rm1tpy.fsf@escher.home> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 10903-done Cc: 10903-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > From: Stephen Berman > Cc: 10903@debbugs.gnu.org > Date: Tue, 28 Feb 2012 23:25:13 +0100 > > > Since Savannah is on the move, I cannot commit the fix, but perhaps > > you could test it locally and see if there are any leftovers. Here's > > the patch: > > I applied the patch and rebuilt, and the redisplay glitches I observed > are gone; thanks very much for the quick fix! I consider this bug > resolved, but it should probably be closed after the fix is committed to > the trunk. Thanks again. Thanks for testing. I committed the fix (revision 107465 on the trunk) and closed the bug. From unknown Fri Jun 20 07:11:21 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 29 Mar 2012 11:24:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator