Re: Allegro 8.1 Express + Emacs (slime): CLC Error

John Fremlin <[email protected]> Fri, 23 Jan 2009 13:15:30 +0900
Newsgroups gmane.lisp.allegro
Message-ID <[email protected]>
Hi Fabio,

The common-lisp-controller is a handy way to share system-wide installed
ASDF packages across many the common lisp implementations.

To use it with Allegro I put the following in my .clinit.cl (actually
this file is shared across all the Lisps I use). It has the extra
advantage of putting all fasls in a directory separate for each lisp
implementation version and word-size.

This will let Allegro easily use all the system-wide installed asdf
packages, and the user installed packages in ~/.clc

(in-package #:cl-user)

(defmacro with-dev-null (&body body)
  `(eval-when (:compile-toplevel :load-toplevel :execute)
     (let ((devnull (make-two-way-stream (make-string-input-stream "") (make-broadcast-stream))))
       (let ((*standard-output* devnull) 
	     (*error-output* devnull) 
	     (*debug-io* devnull)
	     (*trace-output* devnull))
	 ,@body))))

(with-dev-null
    #+sbcl (require '#:asdf)

    (unless (find-package '#:asdf)
      (load "/usr/share/common-lisp/source/cl-asdf/asdf.lisp")))

(with-dev-null
    (defun asdf (&rest pkgs)
      (loop for pkg in pkgs do
	    (asdf:operate 'asdf:load-op pkg)))

    (ignore-errors
      (load "/usr/share/common-lisp/source/common-lisp-controller/common-lisp-controller.lisp")))



(with-dev-null
    (defun lisp-version-string ()
      (flet ((clean (string)
	       (substitute #\- #\Space (substitute #\v #\. string))))
	(format nil "~A-~A-~A"
		(clean (lisp-implementation-type))
		(clean (lisp-implementation-version))
		(expt 2 (ceiling (log (log most-positive-fixnum 2) 2))))))

  
  (common-lisp-controller:init-common-lisp-controller-v4 
   (lisp-version-string)))