(define-module (ice-9 emacs)
:use-module (ice-9 debug)
:use-module (ice-9 threads)
- :use-module (ice-9 session))
+ :use-module (ice-9 session)
+ :no-backtrace)
(define emacs-escape-character #\sub)
(lambda ()
(let loop ((endp (flush-whitespace %%load-port)))
(if (not endp)
- (let ((result
- (start-stack read-and-eval!
- (read-and-eval! %%load-port))))
- (if interactivep
- (result-to-emacs result))
+ (begin
+ (save-module-excursion
+ (lambda ()
+ (if module
+ (set-current-module (resolve-module module #f)))
+ (let ((result
+ (start-stack read-and-eval!
+ (read-and-eval! %%load-port))))
+ (if interactivep
+ (result-to-emacs result)))))
(loop (flush-whitespace %%load-port)))
(begin
- (load-acknowledge))))
- )
+ (load-acknowledge)))
+ (set-port-filename! %%load-port #f))) ;reset port filename
(lambda (key . args)
+ (set-port-filename! %%load-port #f)
(cond ((eq? key 'end-of-chunk)
- (set! the-last-stack #f)
+ (fluid-set! the-last-stack #f)
(set! stack-saved? #t)
(scm-error 'misc-error
#f
;;*fixme* Not necessary to use flags no-stack and no-source
(define (get-frame-source frame)
- (if (or (not the-last-stack)
- (>= frame (stack-length the-last-stack)))
+ (if (or (not (fluid-ref the-last-stack))
+ (>= frame (stack-length (fluid-ref the-last-stack))))
(begin
(no-stack)
#f)
- (let* ((frame (stack-ref the-last-stack (frame-number->index frame)))
+ (let* ((frame (stack-ref (fluid-ref the-last-stack)
+ (frame-number->index frame)))
(source (frame-source frame)))
(or source
(begin (no-source)
(define (format template . rest)
(let loop ((chars (string->list template))
- (result '()))
+ (result '())
+ (rest rest))
(cond ((null? chars) (list->string (reverse result)))
((char=? (car chars) #\%)
(loop (cddr chars)
(case (cadr chars)
((#\S) (object->string (car rest)))
((#\s) (object->string (car rest) display)))))
- result)))
- (else (loop (cdr chars) (cons (car chars) result))))))
+ result)
+ (cdr rest)))
+ (else (loop (cdr chars) (cons (car chars) result) rest)))))
(define (error-args->string args)
(let ((msg (apply format (caddr args) (cadddr args))))