chiark / gitweb /
dot/lisp-init.lisp: Make ABCL shut up about redefinition.
[profile] / dot / lisp-init.lisp
index da50a6f2ab71ed6d7675024ed9fbb7402ba5bfdb..08dce6e826e8ad65ca4e364a61ea40a8a26be01a 100644 (file)
@@ -13,29 +13,61 @@ (setf *load-verbose* nil
 (setf ext:*gc-verbose* nil
       ext:*require-verbose* nil)
 
 (setf ext:*gc-verbose* nil
       ext:*require-verbose* nil)
 
+#+ecl
+(let ((old-output *standard-output*)
+      (old-prompt si:*tpl-prompt-hook*))
+  ;; There doesn't seem to be a good way to do this, so we do it the bad
+  ;; way.  Since the herald is printed to `*standard-outout*', we set (not
+  ;; bind!) that to a bit bucket, and then arrange to restore it just before
+  ;; the first REPL prompt is written.
+  ;;
+  ;; One more awful part is that, having intercepted the prompt hook, I need
+  ;; to restore and invoke the old version, and there isn't a clean way to do
+  ;; this.
+  (when (<= (ext:argc) 1)
+    (setf *standard-output* (make-broadcast-stream)
+         si:*tpl-prompt-hook* (lambda ()
+                                (setf *standard-output* old-output
+                                      si:*tpl-prompt-hook* old-prompt)
+                                (si::tpl-prompt)))))
+
+#+ccl
+(setf ccl::*inhibit-greeting* t)
+
+#+abcl
+(setf ext:*warn-on-redefinition* nil)
+
 ;; Obtain ASDF from somewhere.
 (require "asdf")
 
 ;; Obtain ASDF from somewhere.
 (require "asdf")
 
-;; Get CMU CL to quit on EOF.
+;; Get CMU CL and CCL to quit on EOF.
 #+cmu
 (setf ext:*batch-mode* t)
 #+cmu
 (setf ext:*batch-mode* t)
+#+ccl
+(setf ccl:*quit-on-eof* t)
 
 ;; Tell SBCL where to find its source source.
 #+sbcl
 (sb-ext:set-sbcl-source-location #p"/usr/share/sbcl-source/")
 
 
 ;; Tell SBCL where to find its source source.
 #+sbcl
 (sb-ext:set-sbcl-source-location #p"/usr/share/sbcl-source/")
 
-;; Tell some Lisps about my home directory.
-#+(and unix (or sbcl clisp))
+;; Tell some Lisps about my home directory.  CMU CL already has a search list
+;; which does the same job, and CCL sets up a logical-pathname host.
+#+(and unix (or sbcl clisp ecl abcl))
 (let* ((homestring (or #+sbcl (sb-ext:posix-getenv "HOME")
 (let* ((homestring (or #+sbcl (sb-ext:posix-getenv "HOME")
-                      #+clisp (ext:getenv "HOME")
-                      #+cmu (unix:unix-getenv "HOME")
+                      #+(or clisp ecl abcl) (ext:getenv "HOME")
+                      #+abcl (java:jstatic "getProperty"
+                                           "java.lang.System"
+                                           "user.home")
                       "/home/mdw"))
        (home (pathname (concatenate 'string homestring "/"))))
   (setf (logical-pathname-translations "HOME")
                       "/home/mdw"))
        (home (pathname (concatenate 'string homestring "/"))))
   (setf (logical-pathname-translations "HOME")
-       `(("HOME:**;*.*.*" ,(merge-pathnames "**/*.*" home nil)))
-       (logical-pathname-translations "CL")
-       '(("CL:SOURCE;**;*.*.*" #p"/usr/share/common-lisp/source/**/*.*")
-         ("CL:SYSTEMS;**;*.*.*" #p"/usr/share/common-lisp/systems/**/*.*"))))
+         `(("HOME:**;*.*.*" ,(merge-pathnames "**/*.*" home nil)))))
+(when (#.(car '(#+clisp ext:probe-directory
+               probe-file))
+        #p"/usr/share/common-lisp/")
+  (setf (logical-pathname-translations "CL")
+         '(("CL:SOURCE;**;*.*.*" #p"/usr/share/common-lisp/source/**/*.*")
+           ("CL:SYSTEMS;**;*.*.*" #p"/usr/share/common-lisp/systems/**/*.*"))))
 
 ;; Various fixings.
 #+clisp
 
 ;; Various fixings.
 #+clisp
@@ -66,7 +98,10 @@   (defvar *history-size* 1000)
   (push (lambda () (readline:write-history *history-file*))
        custom:*fini-hooks*))
 
   (push (lambda () (readline:write-history *history-file*))
        custom:*fini-hooks*))
 
-;; Shebang.
+;; Don't choke on shebang lines.  This isn't here so that we can run Lisp
+;; scripts like proper Unix programs: `cl-launch' or `runlisp' do that.  It's
+;; here so that we can `load' a script into a running Lisp without it choking
+;; on the shebang.
 (set-dispatch-macro-character
  #\# #\!
  (lambda (stream char arg)
 (set-dispatch-macro-character
  #\# #\!
  (lambda (stream char arg)