~ chicken-core (chicken-5) 363f295dc28de04cf50f19f5f7d9a248763b3e3b
commit 363f295dc28de04cf50f19f5f7d9a248763b3e3b Author: Evan Hanson <evhan@foldling.org> AuthorDate: Wed Apr 27 20:47:08 2016 +1200 Commit: Peter Bex <peter@more-magic.net> CommitDate: Thu May 12 20:43:02 2016 +0200 Modularise csi Wraps csi in a module and renames the primitive "csi" module to "chicken.csi" for consistency with the other core libraries. Also cleans up some old and unused code from csi.scm. Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/README b/README index 2ae9959d..e997947d 100644 --- a/README +++ b/README @@ -286,6 +286,7 @@ | | |-- chicken.bitwise.import.so | | |-- chicken.compiler.user-pass.import.so | | |-- chicken.continuation.import.so + | | |-- chicken.csi.import.so | | |-- chicken.data-structures.import.so | | |-- chicken.eval.import.so | | |-- chicken.expand.import.so @@ -311,7 +312,6 @@ | | |-- chicken.tcp.import.so | | |-- chicken.time.import.so | | |-- chicken.utils.import.so - | | |-- csi.import.so | | |-- modules.db | | |-- setup-api.import.so | | |-- setup-api.so diff --git a/chicken-install.scm b/chicken-install.scm index 397c3e95..a4b87caf 100644 --- a/chicken-install.scm +++ b/chicken-install.scm @@ -46,6 +46,7 @@ ;;XXX keep this up-to-date! '("chicken.bitwise.import.so" "chicken.continuation.import.so" + "chicken.csi.import.so" "chicken.data-structures.import.so" "chicken.eval.import.so" "chicken.expand.import.so" @@ -72,7 +73,6 @@ "chicken.tcp.import.so" "chicken.time.import.so" "chicken.utils.import.so" - "csi.import.so" "setup-api.import.so" "setup-api.so" "setup-download.so" diff --git a/csi.import.scm b/chicken.csi.import.scm similarity index 83% rename from csi.import.scm rename to chicken.csi.import.scm index a1fad2e1..104799d0 100644 --- a/csi.import.scm +++ b/chicken.csi.import.scm @@ -1,4 +1,4 @@ -;;;; csi.import.scm - import library for "csi" module +;;;; chicken.csi.import.scm - import library for "chicken.csi" module ; ; Copyright (c) 2008-2015, The CHICKEN Team ; All rights reserved. @@ -7,11 +7,11 @@ ; conditions are met: ; ; Redistributions of source code must retain the above copyright notice, this list of conditions and the following -; disclaimer. +; disclaimer. ; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following -; disclaimer in the documentation and/or other materials provided with the distribution. +; disclaimer in the documentation and/or other materials provided with the distribution. ; Neither the name of the author nor the names of its contributors may be used to endorse or promote -; products derived from this software without specific prior written permission. +; products derived from this software without specific prior written permission. ; ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS ; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY @@ -25,5 +25,7 @@ (##sys#register-primitive-module - 'csi - '(toplevel-command editor-command set-describer!)) + 'chicken.csi + '((editor-command . chicken.csi#editor-command) + (set-describer! . chicken.csi#set-describer!) + (toplevel-command . chicken.csi#toplevel-command))) diff --git a/csi.scm b/csi.scm index 9eabeb65..fee1e83a 100644 --- a/csi.scm +++ b/csi.scm @@ -28,7 +28,8 @@ (declare (usual-integrations) (disable-interrupts) - (compile-syntax) + (fixnum-arithmetic) + (always-bound ##sys#windows-platform) (foreign-declare #<<EOF #include <signal.h> @@ -40,20 +41,11 @@ EOF ) ) -(include "banner") +(module chicken.csi + (editor-command toplevel-command set-describer!) -(declare - (always-bound - ##sys#windows-platform) - (hide parse-option-string bytevector-data member* canonicalize-args - describer-table dirseparator? circular-list? improper-pairs? - show-frameinfo selected-frame select-frame copy-from-frame - findall command-table default-editor csi-eval print-usage - print-banner run hexdump chop-separator lookup-script-file report - describe dump tty-input? history-list history-count - history-add history-ref history-clear history-show) ) - -(import chicken.data-structures +(import chicken scheme + chicken.data-structures chicken.foreign chicken.format chicken.gc @@ -63,6 +55,7 @@ EOF chicken.pretty-print chicken.repl) +(include "banner.scm") ;;; Parameters: @@ -136,23 +129,6 @@ EOF (define (print-banner) (newline) - ;;UNUSED BECAUSE IT IS STUPID - #;(when (and (tty-input?) (##sys#fudge 11)) - (let* ((t (string-copy +product+)) - (len (string-length t)) - (c (make-string len #\x08))) - (do ((i (sub1 (* 2 len)) (sub1 i))) - ((zero? i)) - (let* ((p (abs (- i len))) - (o (string-ref t p))) - (string-set! t p #\@) - (print* t) - (string-set! t p o) - (let ((t0 (+ (current-milliseconds) 20))) - (let loop () ; crude, but doesn't need srfi-18 - (when (< (current-milliseconds) t0) - (loop)))) - (print* c) ) ) ) ) (print +product+) (print +banner+ (chicken-version #t) "\n") ) @@ -160,9 +136,7 @@ EOF ;;; Reader for REPL history: (set! ##sys#user-read-hook - (let ([read-char read-char] - [read read] - [old-hook ##sys#user-read-hook] ) + (let ((old-hook ##sys#user-read-hook)) (lambda (char port) (cond [(or (char=? #\) char) (char-whitespace? char)) `',(history-ref (fx- history-count 1)) ] @@ -191,8 +165,6 @@ EOF ;;; Find script in PATH (only used for Windows/DOS): -(define @ #f) - (define lookup-script-file (let* ([buf (make-string 256)] [_getcwd (foreign-lambda nonnull-c-string "_getcwd" scheme-pointer int)] ) @@ -298,14 +270,11 @@ EOF (load-noisily load-noisily) (read read) (read-line read-line) - (length length) (display display) - (write write) (string-split string-split) (printf printf) (expand expand) (pretty-print pretty-print) - (integer? integer?) (values values) ) (lambda (form) (cond ((eof-object? form) (exit)) @@ -466,7 +435,6 @@ EOF (define report (let ((printf printf) - (chop chop) (sort sort) (with-output-to-port with-output-to-port) (current-output-port current-output-port) @@ -811,8 +779,7 @@ EOF ;;; Frame-info operations: (define show-frameinfo - (let ((write-char write-char) - (newline newline) + (let ((newline newline) (display display)) (lambda (fn) (define (prin1 x) @@ -1141,11 +1108,8 @@ EOF (newline ##sys#standard-error) (eval x))))) (when (equal? "-ss" scr) - (call-with-values (cut main (command-line-arguments)) - (lambda results - (exit - (if (and (pair? results) (fixnum? (car results))) - (car results) - 0) ) ) ) ) ) ) ) ) ) ) ) ) - -(run) + (receive rs ((eval 'main) (command-line-arguments)) + (let ((r (optional rs))) + (exit (if (fixnum? r) r 0))))))))))))) + +(run)) diff --git a/defaults.make b/defaults.make index cf8044d3..404fa11c 100644 --- a/defaults.make +++ b/defaults.make @@ -262,7 +262,7 @@ CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile) # import libraries -PRIMITIVE_IMPORT_LIBRARIES = chicken csi chicken.foreign +PRIMITIVE_IMPORT_LIBRARIES = chicken chicken.csi chicken.foreign DYNAMIC_IMPORT_LIBRARIES = setup-api setup-download srfi-4 DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise fixnum flonum format gc io \ keyword locative posix pretty-print random time diff --git a/distribution/manifest b/distribution/manifest index 5b088655..e9106cbd 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -259,6 +259,8 @@ chicken.compiler.user-pass.import.scm chicken.compiler.user-pass.import.c chicken.continuation.import.scm chicken.continuation.import.c +chicken.csi.import.scm +chicken.csi.import.c chicken.data-structures.import.scm chicken.data-structures.import.c chicken.eval.import.scm @@ -309,8 +311,6 @@ chicken.utils.import.scm chicken.utils.import.c srfi-4.import.scm srfi-4.import.c -csi.import.scm -csi.import.c setup-download.scm setup-api.scm chicken-status.scm diff --git a/manual/Using the interpreter b/manual/Using the interpreter index fc5ba765..2891f090 100644 --- a/manual/Using the interpreter +++ b/manual/Using the interpreter @@ -201,6 +201,8 @@ Defines or redefines a toplevel interpreter command which can be invoked by ente read any required argument via {{read}} (or {{read-line}}). If the optional argument {{HELPSTRING}} is given, it will be listed by the {{,?}} command. +This procedure is provided by the {{(chicken csi)}} module. + === Getting error information @@ -285,6 +287,9 @@ example: #;3> ,d (make-point 1 2) a point with x=1 and y=2 +This procedure is provided by the {{(chicken csi)}} module. + + === Auto-completion and edition On platforms that support it, it is possible to get auto-completion of diff --git a/tests/environment-tests.scm b/tests/environment-tests.scm index 49f53aec..285ad65e 100644 --- a/tests/environment-tests.scm +++ b/tests/environment-tests.scm @@ -40,7 +40,7 @@ (define (bar) 99)) (define foo-env (module-environment 'foo)) -(define csi-env (module-environment 'csi)) +(define csi-env (module-environment '(chicken csi))) (define format-env (module-environment 'format)) (test-equal (eval '(bar) foo-env) 99) diff --git a/tests/runtests.sh b/tests/runtests.sh index 99dcf878..fbb0b5e9 100755 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -36,11 +36,12 @@ mkdir -p test-repository # copy files into test-repository (by hand to avoid calling `chicken-install'): for x in \ - chicken.import.so csi.import.so types.db \ + chicken.import.so types.db \ setup-api.so setup-api.import.so srfi-4.import.so \ setup-download.so setup-download.import.so \ chicken.bitwise.import.so \ chicken.continuation.import.so \ + chicken.csi.import.so \ chicken.data-structures.import.so \ chicken.files.import.so \ chicken.flonum.import.so \Trap