From 3de3e773a656100b1810eaf5a1b4f9d63f1469e9 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 4 Mar 2007 18:00:37 +0000 Subject: [PATCH] (Finding Overlays): Write better example. --- lispref/display.texi | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lispref/display.texi b/lispref/display.texi index 02491c422d9..f485829725a 100644 --- a/lispref/display.texi +++ b/lispref/display.texi @@ -1527,26 +1527,25 @@ end of an overlay, before @var{pos}. If there is none, it returns @code{(point-min)}. @end defun - Here's a function which uses @code{next-overlay-change} to search -for the next character which gets a given property @code{prop} from -either its overlays or its text properties (@pxref{Property Search}): + As an example, here's a simplified (and inefficient) version of the +primitive function @code{next-single-char-property-change} +(@pxref{Property Search}). It searches forward from position +@var{pos} for the next position where the value of a given property +@code{prop}, as obtained from either overlays or text properties, +changes. @smallexample -(defun find-overlay-prop (prop) +(defun next-single-char-property-change (position prop) (save-excursion - (while (and (not (eobp)) - (not (get-char-property (point) prop))) - (goto-char (min (next-overlay-change (point)) - (next-single-property-change (point) prop)))) + (goto-char position) + (let ((propval (get-char-property (point) prop))) + (while (and (not (eobp)) + (eq (get-char-property (point) prop) propval)) + (goto-char (min (next-overlay-change (point)) + (next-single-property-change (point) prop))))) (point))) @end smallexample - Now you can search for a @code{happy} property like this: - -@smallexample -(find-overlay-prop 'happy) -@end smallexample - @node Width @section Width -- 2.39.5