December 14th, 2006

dear santa

All I want for Christmas is a GUI slime interface to symbol conflict resolution in SBCL!

Update Apparently this isn't clear to everyone. Here's what I mean:

;; a.lisp

(defpackage :a
  (:use :cl))

(in-package :a)

(defvar *conflict* '(a b c d))

Compile and load a.lisp.

;; b.lisp

(defpackage :b
  (:use :cl)
  (:export :a :b :c :d))

Compile and load b.lisp.

Then evaluate:

(defpackage :a
  (:use :cl :b))

You get something that looks like this:

USE-PACKAGE #<PACKAGE "B"> causes name-conflicts in #<PACKAGE "A"> between the
following symbols:
  B:B, B
   [Condition of type SB-INT:NAME-CONFLICT]

See also:
  Common Lisp Hyperspec, 11.1.1.2.5 [section]

Restarts:
  0: [RESOLVE-CONFLICT] Resolve conflict.
If you pick restart 0, you get something like this:
Select a symbol to be made accessible in package A:
  1. B:B
  2. B
  
Enter an integer (between 1 and 2): 
CL-USER> 1

The code for the restart prints its own prompt and does its own input reading to resolve the conflict. It works, but it intermixes slime output with other output and looks ugly.

I would like something klickibunti like the slime inspector.

Santa, I hope you understand now.