aboutsummaryrefslogtreecommitdiffstats
path: root/mitscheme.init
diff options
context:
space:
mode:
Diffstat (limited to 'mitscheme.init')
-rw-r--r--mitscheme.init39
1 files changed, 22 insertions, 17 deletions
diff --git a/mitscheme.init b/mitscheme.init
index 9486c18..bd612b0 100644
--- a/mitscheme.init
+++ b/mitscheme.init
@@ -19,8 +19,10 @@
;;; Make this part of your ~/.scheme.init file.
+(define getenv get-environment-variable)
+
;;; (software-type) should be set to the generic operating system type.
-(define (software-type) 'UNIX)
+(define (software-type) (if (getenv "HOMEDRIVE") 'MS-DOS 'UNIX))
;;; (scheme-implementation-type) should return the name of the scheme
;;; implementation loading this file.
@@ -30,16 +32,14 @@
;;; (scheme-implementation-version) should return a string describing
;;; the version the scheme implementation loading this file.
-(define (scheme-implementation-version) "7.3.0")
-
-;;; *features* should be set to a list of symbols describing features
-;;; of this implementation. See Template.scm for the list of feature
-;;; names.
-
-;the following may not be the Right Thing for this application, since
-;it causes an error (rather than just returning nil) when the environment
-;variable is not defined.
-(define getenv get-environment-variable)
+(define (scheme-implementation-version)
+ (let* ((str (with-output-to-string identify-world))
+ (beg (+ (substring? "Release " str) 8))
+ (rst (substring str beg (string-length str)))
+ (end (string-find-next-char-in-set
+ rst
+ (predicate->char-set char-whitespace?))))
+ (substring rst 0 end)))
;;; (implementation-vicinity) should be defined to be the pathname of
;;; the directory where any auxillary files to your Scheme
@@ -47,7 +47,8 @@
(define (implementation-vicinity)
(case (software-type)
- ((UNIX) "/usr/local/src/scheme/")
+ ((MS-DOS) "c:\\scheme\\")
+ ((UNIX) "/usr/local/lib/mit-scheme/")
((VMS) "scheme$src:")))
;;; (library-vicinity) should be defined to be the pathname of the
@@ -58,9 +59,9 @@
(or (getenv "SCHEME_LIBRARY_PATH")
;; Use this path if your scheme does not support GETENV.
(case (software-type)
+ ((MS-DOS) "c:\\slib\\")
((UNIX) "/usr/local/lib/slib/")
((VMS) "lib$scheme:")
- ((MS-DOS) "C:\\SLIB\\")
(else "")))))
(lambda () library-path)))
@@ -72,6 +73,10 @@
(let ((home-path (getenv "HOME")))
(lambda () home-path)))
+;;; *features* should be set to a list of symbols describing features
+;;; of this implementation. See Template.scm for the list of feature
+;;; names.
+
(define *features*
'(
source ;can load scheme source files
@@ -103,6 +108,7 @@
pretty-print
object->string
trace ;has macros: TRACE and UNTRACE
+ defmacro
compiler
getenv
Xwindows
@@ -165,8 +171,7 @@
;;; Return argument
(define (identity x) x)
-;;; If your implementation provides eval, SLIB:EVAL is single argument
-;;; eval using the top-level (user) environment.
+;;; SLIB:EVAL is single argument eval using the top-level (user) environment.
;(define (slib:eval form) (eval form (repl/environment (nearest-repl))))
(define (slib:eval form) (eval form user-initial-environment))
@@ -253,7 +258,7 @@
;;; Here for backward compatability
-(define (scheme-file-suffix) "")
+(define (scheme-file-suffix) ".scm")
;;; (SLIB:LOAD-SOURCE "foo") should load "foo.scm" or with whatever
;;; suffix all the module files in SLIB have. See feature 'SOURCE.
@@ -270,4 +275,4 @@
(define slib:load slib:load-source)
-(slib:load (in-vicinity (library-vicinity) "require"))
+(slib:load (in-vicinity (library-vicinity) "require.scm"))