[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 35564be: Fix face extension past EOL in overlay strings
From: |
Eli Zaretskii |
Subject: |
master 35564be: Fix face extension past EOL in overlay strings |
Date: |
Thu, 30 Jul 2020 09:58:21 -0400 (EDT) |
branch: master
commit 35564bea4d73bc266743216599d01d644aed6fd8
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>
Fix face extension past EOL in overlay strings
* src/xdisp.c (face_at_pos): Pass ATTR_FILTER to
face_for_overlay_string.
* src/xfaces.c (face_for_overlay_string): Accept an additional
argument ATTR_INDEX and pass it to merge_face_ref for merging the
face at POS. This ensures a face from buffer text will not be
merged unless it specifies the :extend attribute. (Bug#42552)
* src/dispextern.h (face_for_overlay_string): Adjust prototype.
---
src/dispextern.h | 2 +-
src/xdisp.c | 2 +-
src/xfaces.c | 5 +++--
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/dispextern.h b/src/dispextern.h
index e1d6edd..311867a 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -3538,7 +3538,7 @@ void recompute_basic_faces (struct frame *);
int face_at_buffer_position (struct window *, ptrdiff_t, ptrdiff_t *,
ptrdiff_t, bool, int, enum lface_attribute_index);
int face_for_overlay_string (struct window *, ptrdiff_t, ptrdiff_t *,
ptrdiff_t,
- bool, Lisp_Object);
+ bool, Lisp_Object, enum lface_attribute_index);
int face_at_string_position (struct window *, Lisp_Object, ptrdiff_t,
ptrdiff_t,
ptrdiff_t *, enum face_id, bool,
enum lface_attribute_index);
diff --git a/src/xdisp.c b/src/xdisp.c
index eb7f3e7..fc17014 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4339,7 +4339,7 @@ face_at_pos (const struct it *it, enum
lface_attribute_index attr_filter)
(IT_CHARPOS (*it)
+ TEXT_PROP_DISTANCE_LIMIT),
false,
- from_overlay);
+ from_overlay, attr_filter);
}
else
{
diff --git a/src/xfaces.c b/src/xfaces.c
index c4a4e1c..585cfa1 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -6475,7 +6475,8 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos,
int
face_for_overlay_string (struct window *w, ptrdiff_t pos,
ptrdiff_t *endptr, ptrdiff_t limit,
- bool mouse, Lisp_Object overlay)
+ bool mouse, Lisp_Object overlay,
+ enum lface_attribute_index attr_filter)
{
struct frame *f = XFRAME (w->frame);
Lisp_Object attrs[LFACE_VECTOR_SIZE];
@@ -6514,7 +6515,7 @@ face_for_overlay_string (struct window *w, ptrdiff_t pos,
/* Merge in attributes specified via text properties. */
if (!NILP (prop))
- merge_face_ref (w, f, prop, attrs, true, NULL, 0);
+ merge_face_ref (w, f, prop, attrs, true, NULL, attr_filter);
*endptr = endpos;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 35564be: Fix face extension past EOL in overlay strings,
Eli Zaretskii <=