;; Author: Magnus Henoch <magnus.henoch@gmail.com>
;; Maintainer: Thomas Fitzsimmons <fitzsim@fitzsim.org>
-;; Version: 0.1ttn4
+;; Version: 0.2
;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
;; Keywords: extensions
))
(defun fsm-send (fsm event &optional callback)
- "Send FSM EVENT asynchronously.
+ "Send EVENT to FSM asynchronously.
If the state machine generates a response, eventually call
CALLBACK with the response as only argument."
(run-with-timer 0 nil #'fsm-send-sync fsm event callback))
(defun fsm-update (fsm new-state new-state-data timeout)
"Update FSM with NEW-STATE, NEW-STATE-DATA and TIMEOUT."
(let ((fsm-name (get fsm :name))
- (old-state (get fsm :state)))
+ (old-state (get fsm :state)))
(put fsm :state new-state)
(put fsm :state-data new-state-data)
(fsm-maybe-change-timer fsm timeout)
(apply 'fsm-send-sync fsm event))))))
(defun fsm-send-sync (fsm event &optional callback)
- "Send FSM EVENT synchronously.
+ "Send EVENT to FSM synchronously.
If the state machine generates a response, eventually call
CALLBACK with the response as only argument."
(save-match-data
result)))))))
(defun fsm-call (fsm event)
- "Send FSM EVENT synchronously, and wait for a reply.
+ "Send EVENT to FSM synchronously, and wait for a reply.
Return the reply. `with-timeout' might be useful."
(let (reply)
(fsm-send-sync fsm event (lambda (r) (setq reply (list r))))
(fsm-send-sync fsm (list :sentinel process string)))))
(defun fsm-sleep (fsm secs)
- "Let FSM receive events while sleeping up to SECS seconds."
+ "Sleep up to SECS seconds in a way that lets FSM receive events."
(funcall (get fsm :sleep) secs))
(defun fsm-get-state-data (fsm)