##// END OF EJS Templates
Bugfixes
Bugfixes

File last commit:

r33:7e7dc5dd default
r41:097aa130 default
Show More
api-macros.lisp
44 lines | 1.1 KiB | text/x-common-lisp | CommonLispLexer
(in-package sugar-qsp.api)
(defpsmacro with-call-args (args &body body)
`(progn
(init-args ,args)
,@body
(get-result)))
(defpsmacro with-frame (&body body)
`(progn
(push-local-frame)
(unwind-protect
,@body
(pop-local-frame))))
(defpsmacro href-call (func &rest args)
`(+ "javascript:" (inline-call ,func ,@args)))
(defpsmacro inline-call (func &rest args)
`(+ ',func
"(\""
,(first args)
,@(loop :for arg :in (cdr args)
:collect "\", \""
:collect arg)
"\");"))
(defpsmacro with-sleep ((resume-func) &body body)
`(new (*promise
(lambda (resolve)
(start-sleeping)
(let ((,resume-func (lambda ()
(finish-sleeping)
(resolve)))))
,@body))))
(defpsmacro define-serv-var (name (slot value &optional index) &body body)
(setf name (string-upcase (symbol-name name)))
`(setf (getprop serv-vars ,name)
(create :name ,name
:slot ,slot
:body (lambda (,value ,@(when index (list index)))
,@body))))