;;; Catbird Game Engine ;;; Copyright © 2022 David Thompson ;;; ;;; Catbird is free software: you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation, either version 3 of the License, or ;;; (at your option) any later version. ;;; ;;; Catbird is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with Catbird. If not, see . ;;; Commentary: ;; ;; In-engine asynchronous REPL implementation. ;; ;;; Code: (define-module (catbird repl) #:use-module (catbird line-editor) #:use-module (catbird kernel) #:use-module (catbird mode) #:use-module (catbird node) #:use-module (catbird node-2d) #:use-module (catbird region) #:use-module (catbird ring-buffer) #:use-module (catbird scene) #:use-module (chickadee) #:use-module (chickadee graphics color) #:use-module (chickadee graphics path) #:use-module (chickadee graphics text) #:use-module (chickadee math vector) #:use-module (ice-9 exceptions) #:use-module (ice-9 match) #:use-module (oop goops) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (system base compile) #:use-module (system base language) #:export ( resize-repl)) ;; TODO: Multiple values ;; TODO: Multiple expressions ;; TODO: Debugger ;; TODO: Switching languages (define %background-color (make-color 0.0 0.0 0.0 0.9)) (define (make-user-module) (let ((module (resolve-module '(guile-user) #f))) (beautify-user-module! module) module)) (define-class () (language #:accessor language #:init-value (lookup-language 'scheme)) (module #:accessor module #:init-thunk make-user-module) (max-line-length #:accessor max-line-length #:init-value 256) (log-lines #:accessor log-lines #:init-form (make-ring-buffer 64))) (define-method (on-boot (repl )) (attach-to repl (make #:name 'background) (make