{
struct iterator_stack_entry *p;
bool from_display_prop = it->from_disp_prop_p;
+ ptrdiff_t prev_pos = IT_CHARPOS (*it);
eassert (it->sp > 0);
--it->sp;
&& IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos)
|| (CONSP (it->object) && it->method == GET_FROM_STRETCH));
}
+ /* If we move the iterator over text covered by a display property
+ to a new buffer position, any info about previously seen overlays
+ is no longer valid. */
+ if (from_display_prop && it->sp == 0 && CHARPOS (it->position) != prev_pos)
+ it->ignore_overlay_strings_at_pos_p = false;
}
(str "ABC"))
(put-text-property 1 2 'invisible 'test-redisplay--ellipsis-invis str)
(overlay-put ov 'display str)))
+ ;; Overlay string over invisible text and non-default face.
+ (insert "\n Expected: ..." (propertize "ABC" 'face 'highlight) "XYZ")
+ (insert "\n Result: ")
+ (insert (propertize "foo" 'invisible 'test-redisplay--ellipsis-invis))
+ (let ((ov (make-overlay (point) (point))))
+ (overlay-put ov 'invisible t)
+ (overlay-put ov 'window (selected-window))
+ (overlay-put ov 'after-string
+ (propertize "ABC" 'face 'highlight)))
+ (insert "XYZ\n")
+ ;; Overlay strings with partial `invisibility' property and with a
+ ;; display property on the before-string.
+ (insert "\n Expected: A...C")
+ (insert "\n Result: ")
+ (let ((opoint (point)))
+ (insert "X\n")
+ (let ((ov (make-overlay opoint (1+ opoint)))
+ (str "ABC"))
+ (put-text-property 1 2 'invisible 'test-redisplay--ellipsis-invis str)
+ (overlay-put ov 'display str)))
+ (insert "\n Expected: ..."
+ (propertize "DEF" 'display '(image :type xpm :file "close.xpm"))
+ (propertize "ABC" 'face 'highlight) "XYZ")
+ (insert "\n Result: ")
+ (insert (propertize "foo" 'invisible 'test-redisplay--ellipsis-invis))
+ (let ((ov (make-overlay (point) (point))))
+ (overlay-put ov 'invisible t)
+ (overlay-put ov 'window (selected-window))
+ (overlay-put ov 'after-string
+ (propertize "ABC" 'face 'highlight))
+ (overlay-put ov 'before-string
+ (propertize "DEF"
+ 'display '(image :type xpm :file "close.xpm"))))
+ (insert "XYZ\n")
+
;; Overlay string with 2 adjacent and different invisible
;; properties. This caused an infloop before Emacs 25.
(insert "\n Expected: ABC")