On Sun, 2012-05-06 at 17:08 -0400, Faré wrote:
I only want to put a system into "manual" mode, and make sure that find-system never overrides that no matter what. How about adding an optional third parameter to load-sysdef that sets a "definitivep" flag in the system, which makes find-system to never search it on the file-system any more ?
As I explained in my previous mail, it would more be something like what follows (wholly untested), where in your code you'd (1) call the register function initially (2) use load-slime-override-sysdef instead of load-sysdef in your code.
(in-package :asdf)
(defvar *slime-override-systems* (make-hash-table :test 'equal))
(defun sysdef-slime-override (name) (values (gethash (coerce-name system) *slime-override-systems*)))
(defun register-slime-override () (setf asdf:*system-definition-search-functions* (cons 'sysdef-slime-override (remove 'sysdef-slime-override *system-definition-search-functions*))))
(defun load-slime-override-sysdef (name pathname) (let ((name (coerce-name name))) (setf (gethash name *slime-override-systems*) pathname) (load-sysdef name pathname)))
Yes, but I'd like to push this as Slime contrib and there's no guarantee that this will work in any case