Subject: bug#22320: Overlays with an 'invisible property break stacking of overlay faces

From: Clément Pit--Claudel <[email-masked]>
Date: Thu, 7 Jan 2016 12:36:35 -0500

On 01/07/2016 12:03 PM, Clément Pit--Claudel wrote:
>> You can read the discussion which led to the current implementation
>> here:
>>
>>   http://lists.gnu.org/archive/html/emacs-pretest-bug/2005-04/msg00338.html

Interestingly, even after disabling the fix for the issue that led to it, I can't reproduce the issue posted there. Instead, I get the behaviour that I described in my previous mail. Am I doing it wrong?

From 7648ca61042cd6c54bce94ce9f8938e176a8d083 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Pit--Claudel?= <[email-masked]>
Date: Thu, 7 Jan 2016 12:30:30 -0500
Subject: [PATCH] Don't set overlay face to default

---
 src/xdisp.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index b18bfd0..4ddae50 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4586,8 +4586,9 @@ setup_for_ellipsis (struct it *it, int len)
   /* Remember the current face id in case glyphs specify faces.
      IT's face is restored in set_iterator_to_next.
      saved_face_id was set to preceding char's face in handle_stop.  */
-  if (it->saved_face_id < 0 || it->saved_face_id != it->face_id)
-    it->saved_face_id = it->face_id = DEFAULT_FACE_ID;
+  /* if (it->saved_face_id < 0 || it->saved_face_id != it->face_id) */
+  /*   it->saved_face_id = it->face_id = DEFAULT_FACE_ID; */
 
   /* If the ellipsis represents buffer text, it means we advanced in
      the buffer, so we should no longer ignore overlay strings.  */
-- 
2.7.0