+(defun smiley-toggle-extent (event)
+ "Toggle smiley at given point."
+ (interactive "e")
+ (let* ((ant (event-glyph-extent event))
+ (pt (event-closest-point event))
+ ext)
+ (if (annotationp ant)
+ (when (extentp (setq ext (extent-property ant 'smiley-extent)))
+ (set-extent-property ext 'invisible nil)
+ (hide-annotation ant))
+ (when pt
+ (while (setq ext (extent-at pt (event-buffer event) nil ext 'at))
+ (when (annotationp (setq ant
+ (extent-property ext 'smiley-annotation)))
+ (reveal-annotation ant)
+ (set-extent-property ext 'invisible t)))))))
+
+;; FIXME::
+(defun smiley-toggle-extent-ems (event)
+ "Toggle smiley at given point.
+Note -- this function hasn't been implemented yet."
+ (interactive "e")
+ (error "This function hasn't been implemented yet"))
+
+(defun smiley-toggle-extents (e)
+ (interactive "e")
+ (map-extents
+ (lambda (e void)
+ (let (ant)
+ (if (annotationp (setq ant (extent-property e 'smiley-annotation)))
+ (if (eq (extent-property e 'invisible) nil)
+ (progn
+ (reveal-annotation ant)
+ (set-extent-property e 'invisible t)
+ )
+ (hide-annotation ant)
+ (set-extent-property e 'invisible nil)))
+ nil))
+ (event-buffer e)))
+
+;; FIXME::
+(defun smiley-toggle-extents-ems (e)
+ (interactive "e")
+ (error "This function hasn't been implemented yet"))
+