current-source-filename pasted by klm` on Mon Jun 10 14:00:29 2013


;; foo.scm
(define-syntax foo
  (er-macro-transformer
   (lambda (x r t) `(print "debug: " ##sys#current-source-filename))))

(foo 123)

;; bash:
$ csc foo.scm && ./foo
debug: #f

;; ^ got
;; expected:
debug: foo.scm:3

;; does not work when ##sys#current-source-filename is unquoted in macro either.

This seems to work pasted by DerGuteMoritz on Mon Jun 10 14:29:33 2013

;;; file.scm
(set-read-syntax!
 'file
 (lambda (port)
   ##sys#current-source-filename))


;;; foo.scm
(print "this is " #!file)


;;; Usage
$ csc -s file.scm
$ csc -X file foo.scm
$ ./foo              
this is foo.scm

no title added by klm` on Mon Jun 10 15:45:40 2013


;; read-syntax is expanded at read-time and thus in macros.
;; this works, though!

(define-syntax event
  (er-macro-transformer
   (lambda (x r t)
     `(list 'event ,(cadr x) ,(get-line-number x)))))

(print (event 'device-added))
(print (event 'device-removed))

$ csc foo.scm && ./foo
(event device-added foo.scm:9)
(event device-removed foo.scm:10)