aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 3eb61de0c82..9561035e334 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2115,25 +2115,33 @@ DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0,
2115 (overlay, prop, value) 2115 (overlay, prop, value)
2116 Lisp_Object overlay, prop, value; 2116 Lisp_Object overlay, prop, value;
2117{ 2117{
2118 Lisp_Object plist, tail; 2118 Lisp_Object plist, tail, buffer;
2119 2119
2120 CHECK_OVERLAY (overlay, 0); 2120 CHECK_OVERLAY (overlay, 0);
2121 2121
2122 tail = Fmarker_buffer (OVERLAY_START (overlay)); 2122 buffer = Fmarker_buffer (OVERLAY_START (overlay));
2123 if (! NILP (tail)) 2123
2124 redisplay_region (XMARKER (OVERLAY_START (overlay))->buffer,
2125 marker_position (OVERLAY_START (overlay)),
2126 marker_position (OVERLAY_END (overlay)));
2127
2128 plist = Fcdr_safe (XCONS (overlay)->cdr); 2124 plist = Fcdr_safe (XCONS (overlay)->cdr);
2129 2125
2130 for (tail = plist; 2126 for (tail = plist;
2131 CONSP (tail) && CONSP (XCONS (tail)->cdr); 2127 CONSP (tail) && CONSP (XCONS (tail)->cdr);
2132 tail = XCONS (XCONS (tail)->cdr)->cdr) 2128 tail = XCONS (XCONS (tail)->cdr)->cdr)
2133 { 2129 if (EQ (XCONS (tail)->car, prop))
2134 if (EQ (XCONS (tail)->car, prop)) 2130 {
2131 /* If actually changing the property, mark redisplay needed. */
2132 if (! NILP (buffer) && !EQ (XCONS (XCONS (tail)->cdr)->car, value))
2133 redisplay_region (buffer,
2134 marker_position (OVERLAY_START (overlay)),
2135 marker_position (OVERLAY_END (overlay)));
2136
2135 return XCONS (XCONS (tail)->cdr)->car = value; 2137 return XCONS (XCONS (tail)->cdr)->car = value;
2136 } 2138 }
2139
2140 /* Actually changing the property; mark redisplay needed. */
2141 if (! NILP (buffer))
2142 redisplay_region (buffer,
2143 marker_position (OVERLAY_START (overlay)),
2144 marker_position (OVERLAY_END (overlay)));
2137 2145
2138 if (! CONSP (XCONS (overlay)->cdr)) 2146 if (! CONSP (XCONS (overlay)->cdr))
2139 XCONS (overlay)->cdr = Fcons (Qnil, Qnil); 2147 XCONS (overlay)->cdr = Fcons (Qnil, Qnil);