]> git.eshelyaron.com Git - emacs.git/commitdiff
(make-extent, delete-extent, set-extent-property)
authorRichard M. Stallman <rms@gnu.org>
Mon, 30 Jan 1995 07:16:14 +0000 (07:16 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 30 Jan 1995 07:16:14 +0000 (07:16 +0000)
(set-extent-face): New functions.

lisp/emacs-lisp/lucid.el

index d32ec9de75ec703dbeebaa4b6a5ee382b26e53a5..c0e8a6551fc1d00c3ccfe26823f742697c4c3881 100644 (file)
@@ -152,6 +152,38 @@ bottom of the buffer stack."
 (defalias 'get-face 'internal-get-face)
 (defalias 'try-face-font 'internal-try-face-font)
 \f
+(defun make-extent (beg end &optional buffer)
+  (make-overlay beg end buffer))
+
+(defun set-extent-property (extent prop value)
+  (if (eq prop 'duplicable)
+      (cond ((and value (not (overlay-get extent prop)))
+            ;; If becoming duplicable, copy all overlayprops to text props.
+            (add-text-properties (overlay-start extent)
+                                 (overlay-end extent)
+                                 (overlay-properties extent)
+                                 (overlay-buffer extent)))
+           ;; If becoming no longer duplicable, remove these text props.
+           ((and (not value) (overlay-get extent prop))
+            (remove-text-properties (overlay-start extent)
+                                    (overlay-end extent)
+                                    (overlay-properties extent)
+                                    (overlay-buffer extent))))
+    ;; If extent is already duplicable, put this property
+    ;; on the text as well as on the overlay.
+    (if (overlay-get extent 'duplicable)
+       (put-text-property  (overlay-start extent)
+                           (overlay-end extent)
+                           prop value (overlay-buffer extent))))
+  (overlay-put extent prop value))
+
+(defun set-extent-face (extent face)
+  (set-extent-property extent 'face face))
+
+(defun delete-extent (extent)
+  (set-extent-property extent 'duplicable nil)
+  (delete-overlay extent))
+\f
 ;; Support the Lucid names with `screen' instead of `frame'.
 
 (defalias 'current-screen-configuration 'current-frame-configuration)