[plt-scheme] slatex error

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Mon Jan 23 20:55:44 EST 2006

Go hack. Just keep Dorai posted so our gentleman Schemer knows where 
his programs are going :-)

-- Matthias


On Jan 23, 2006, at 7:29 PM, Danny Yoo wrote:

>
>
> On Mon, 23 Jan 2006, Jay McCarthy wrote:
>
>> Anyone know how to convert this into something a bit more useful? Like
>> which scheme block or file contained the problem?
>
>
> Hi Jay,
>
> Would it be ok to hack up SLaTeX to preserve that information in the 
> error
> message?  I haven't tested this yet (haven't set up tetex on my system
> yet), but would something like this be acceptable?
>
>
>
> bash-3.00$ svn diff
> Index: slatex.ss
> ===================================================================
> --- slatex.ss	(revision 1935)
> +++ slatex.ss	(working copy)
> @@ -1,6 +1,22 @@
>  (module slatex mzscheme
>    (provide slatex::process-main-tex-file)
>
> +
> +(define slatex::call-with-input-file
> +  (lambda (filename port-func)
> +    (call-with-input-file filename
> +      (lambda (in)
> +        (set! slatex::*in-filename* filename)
> +	(port-count-lines! in)
> +	(port-func in)))))
> +
> +
> +(define slatex::call-with-output-file
> +  (lambda (filename thunk)
> +    (call-with-output-file filename thunk)))
> +
> +
> +
>  (define-syntax slatex::setf
>    (lambda (so)
>      (datum->syntax-object
> @@ -183,6 +199,18 @@
>      (for-each (lambda (v) (write v) (newline)) what)
>      (error "slatex-error")))
>
> +
> +(define slatex::slatex-in-file-error
> +  (lambda (where . what)
> +    (display "Error: ")
> +    (display where)
> +    (newline)
> +    (let-values (((line col pos) (port-next-location slatex::*in*)))
> +      (printf "~s: line ~s, column ~s, position ~s~%"
> slatex::*in-filename* line col pos))
> +    (for-each (lambda (v) (write v) (newline)) what)
> +    (error "slatex-line-error")))
> +
> +
>  (define slatex::exit-slatex (lambda () (exit)))
>
>  (define slatex::*slatex-case-sensitive?* #t)
> @@ -392,6 +420,8 @@
>
>  (define slatex::*in* 'fwd3)
>
> +(define slatex::*in-filename* "UNDEFINED")
> +
>  (define slatex::*out* 'fwd4)
>
>  (define slatex::*in-qtd-tkn* 'fwd5)
> @@ -652,7 +682,7 @@
>                    &end-string))
>                 ((eq? curr-notab &mid-comment) (set! curr-notab
> &void-notab))
>                 ((eq? curr-notab &mid-math)
> -                (slatex::slatex-error
> +                (slatex::slatex-in-file-error
>                    'slatex::get-line
>                    "Sorry, you can't split "
>                    "math formulas across lines in Scheme code")))
> @@ -1967,7 +1997,7 @@
>            (display raw-filename)
>            (display "]")
>            (flush-output))
> -        (call-with-input-file
> +        (slatex::call-with-input-file
>            filename
>            (lambda (in)
>              (let ((done? #f))
> @@ -2223,7 +2253,7 @@
>            (display ".")
>            (flush-output)
>            (if (file-exists? aux.tex) (delete-file aux.tex))
> -          (call-with-input-file
> +          (slatex::call-with-input-file
>              filename
>              (lambda (in)
>                (call-with-output-file
> @@ -2262,7 +2292,7 @@
>              (slatex::slatex-error
>                "trigger-scheme2tex: ~\n                          
> Unknown
> triggerer ~s."
>                typ)))))
> -      (call-with-input-file
> +      (slatex::call-with-input-file
>          aux.scm
>          (lambda (in)
>            (call-with-output-file
> @@ -2320,7 +2350,7 @@
>                  typ)))))
>          (slatex::process-tex-file aux2.tex)
>          (set! slatex::*protected-files* (reverse! 
> slatex::*protected-files*))
> -        (call-with-input-file
> +        (slatex::call-with-input-file
>            aux2.tex
>            (lambda (in)
>              (call-with-output-file
> @@ -2409,7 +2439,7 @@
>       (else
>        (let ((f (car slatex::*protected-files*)))
>          (set! slatex::*protected-files* (cdr 
> slatex::*protected-files*))
> -        (call-with-input-file
> +        (slatex::call-with-input-file
>            f
>            (lambda (in) (slatex::inline-protected-files in out)))
>          (delete-file f))
>
>
>
>
>
> Best of wishes!
>
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme



Posted on the users mailing list.