[plt-scheme] slatex error
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