As requested (and should have been provided in the original email)
On Thu, Dec 10, 2015 at 11:04 AM, Luís Oliveira luismbo@gmail.com wrote:
On Thu, Dec 10, 2015 at 3:56 PM, Mirko Vukovic mirko.vukovic@gmail.com wrote:
C-c Ret returns an error on some macros (but not on others):
An example using the Vecto package:
(defmacro with-png-output ((stream/filename/pathname &key width height) &body body) "Define canvas and emit picture generated by BODY" `(with-canvas (:width ,width :height ,height) ,@body (save-png ,stream/filename/pathname)))
And example code: (with-png-output ("pie-wedge--literal.png" :width 80 :height 80) (let ((x 0) (y 0) (radius 70) (angle1 (* (/ pi 180) 15)) (angle2 (* (/ pi 180) 45))) (translate 5 5) (set-rgb-fill 1 1 1) (move-to 0 0) (arc x y radius angle1 angle2) (fill-and-stroke))) ;;; **********************************
I played by selectively adding code -- I started with the (with-png-output ...) just by itself, and that worked. Then I started adding form by form. It failed when I added the last form (fill-and-stroke).
Note: To add or remove code, I would add parenthesis to close the macro. Commenting out (via ;; or #+skip) would invariably result in an error.
Doing it at the REPL via MACROEXPAND works fine: (LET ((VECTO::*GRAPHICS-STATE* (MAKE-INSTANCE 'VECTO::GRAPHICS-STATE))) (VECTO::STATE-IMAGE VECTO::*GRAPHICS-STATE* 80 80) (UNWIND-PROTECT (PROGN (LET ((X 0) (Y 0) (RADIUS 70) (ANGLE1 (* (/ PI 180) 15)) (ANGLE2 (* (/ PI 180) 45))) (TRANSLATE 5 5) (SET-RGB-FILL 1 1 1) (MOVE-TO 0 0) (ARC X Y RADIUS ANGLE1 ANGLE2) (FILL-AND-STROKE)) (SAVE-PNG "pie-wedge--literal.png")) (VECTO::CLEAR-STATE VECTO::*GRAPHICS-STATE*)))
Mirko