summaryrefslogtreecommitdiff
path: root/lisp/cedet/pulse.el
diff options
context:
space:
mode:
authorDmitry Gutov <dgutov@yandex.ru>2015-05-06 15:21:32 +0300
committerDmitry Gutov <dgutov@yandex.ru>2015-05-06 15:21:32 +0300
commita5847f9081585a15c10e2e28fa4d3aa6ffb9c092 (patch)
tree0fb9d0617f59051fed11195531e22b5220dfdf3e /lisp/cedet/pulse.el
parentada5e6b7a7193404c5baa559b4fc01e2f9d79cbd (diff)
downloademacs-a5847f9081585a15c10e2e28fa4d3aa6ffb9c092.tar.gz
Clean up pulse.el a little
* lisp/cedet/pulse.el (pulse): Remove. (pulse-momentary-timer): Save instead of the stop time. (pulse-momentary-highlight-overlay): Call pulse-momentary-unhighlight first thing. Treat pulse-momentary-overlay as a single value, not a list. Save the created timer. Only pass the stop time to the timer. (pulse-tick): Update accordingly. (pulse-momentary-unhighlight): Treat pulse-momentary-overlay as a single value. Cancel the timer.
Diffstat (limited to 'lisp/cedet/pulse.el')
-rw-r--r--lisp/cedet/pulse.el64
1 files changed, 23 insertions, 41 deletions
diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el
index fcc47b989b7..67ad31a01c9 100644
--- a/lisp/cedet/pulse.el
+++ b/lisp/cedet/pulse.el
@@ -162,31 +162,21 @@ Return t if there is more drift to do, nil if completed."
'pulse-highlight-start-face))
(put 'pulse-highlight-face :iteration 0))
-(defun pulse (&optional face)
- "Pulse the colors on our highlight face.
-If optional FACE is provided, reset the face to FACE color,
-instead of `pulse-highlight-start-face'.
-Be sure to call `pulse-reset-face' after calling pulse."
- (unwind-protect
- (progn
- (pulse-reset-face face)
- (while (and (pulse-lighten-highlight)
- (sit-for pulse-delay))
- nil))))
-
;;; Convenience Functions
;;
(defvar pulse-momentary-overlay nil
"The current pulsing overlay.")
-(defvar pulse-momentary-stop-time nil
- "The current stop time.")
+(defvar pulse-momentary-timer nil
+ "The current pulsing timer.")
(defun pulse-momentary-highlight-overlay (o &optional face)
"Pulse the overlay O, unhighlighting before next command.
Optional argument FACE specifies the face to do the highlighting."
+ ;; We don't support simultaneous highlightings.
+ (pulse-momentary-unhighlight)
(overlay-put o 'original-face (overlay-get o 'face))
- (add-to-list 'pulse-momentary-overlay o)
+ (setq pulse-momentary-overlay o)
(if (eq pulse-flag 'never)
nil
(if (or (not pulse-flag) (not (pulse-available-p)))
@@ -201,42 +191,34 @@ Optional argument FACE specifies the face to do the highlighting."
;; Thus above we put our face on the overlay, but pulse
;; with a reference face needed for the color.
(pulse-reset-face face)
- (setq pulse-momentary-stop-time (time-add (current-time)
- (* pulse-delay
- pulse-iterations)))
- (let ((timer (run-with-timer 0 pulse-delay #'ignore)))
- (timer-set-function timer #'pulse-tick
- (list
- timer))))))
-
-(defun pulse-tick (timer)
- (if (time-less-p (current-time) pulse-momentary-stop-time)
+ (setq pulse-momentary-timer
+ (run-with-timer 0 pulse-delay #'pulse-tick
+ (time-add (current-time)
+ (* pulse-delay pulse-iterations)))))))
+
+(defun pulse-tick (stop-time)
+ (if (time-less-p (current-time) stop-time)
(pulse-lighten-highlight)
- (pulse-momentary-unhighlight)
- (cancel-timer timer)))
+ (pulse-momentary-unhighlight)))
(defun pulse-momentary-unhighlight ()
"Unhighlight a line recently highlighted."
- ;; If someone passes in an overlay, then pulse-momentary-overlay
- ;; will still be nil, and won't need modifying.
(when pulse-momentary-overlay
;; clear the starting face
- (mapc
- (lambda (ol)
- (overlay-put ol 'face (overlay-get ol 'original-face))
- (overlay-put ol 'original-face nil)
- ;; Clear the overlay if it needs deleting.
- (when (overlay-get ol 'pulse-delete) (delete-overlay ol)))
- pulse-momentary-overlay)
+ (let ((ol pulse-momentary-overlay))
+ (overlay-put ol 'face (overlay-get ol 'original-face))
+ (overlay-put ol 'original-face nil)
+ ;; Clear the overlay if it needs deleting.
+ (when (overlay-get ol 'pulse-delete) (delete-overlay ol)))
;; Clear the variable.
- (setq pulse-momentary-overlay nil))
+ (setq pulse-momentary-overlay nil)
- ;; Reset the pulsing face.
- (pulse-reset-face)
+ ;; Reset the pulsing face.
+ (pulse-reset-face)
- ;; Signal the timer to cancel.
- (setq pulse-momentary-stop-time (current-time))
+ ;; Cancel the timer.
+ (cancel-timer pulse-momentary-timer))
;; Remove this hook.
(remove-hook 'pre-command-hook 'pulse-momentary-unhighlight))