[mcclim-devel] pathname completion on SBCL

Cyrus Harmon ch-mcclim at bobobeach.com
Mon Jun 15 18:22:45 UTC 2009


On recent SBCLs, at least, (directory "fo*.*") only finds foo if foo  
is a file, not a directory. Not sure if this is a bug or a feature,  
but it breaks my understanding of how filename completion should work.  
The following (slightly ugly) patch fixes things for me:

diff --git a/presentation-defs.lisp b/presentation-defs.lisp
index 8661046..fb2de97 100644
--- a/presentation-defs.lisp
+++ b/presentation-defs.lisp
@@ -1629,8 +1629,21 @@ protocol retrieving gestures from a provided  
string."))
                                               do (replace so-far "\ 
\*" :start1 occurence)
                                                  (setf start (+  
occurence 2))
                                               finally (return so-far)))
+                #+sbcl and #+sbcl wildcard-directories #+sbcl =
+                #+sbcl (format nil "~A*"
+                        (loop for start = 0 ; Replace * -> \*
+                          for occurence = (position #\* so-far :start  
start)
+                          until (= start (length so-far))
+                          until (null occurence)
+                          do (replace so-far "\\*" :start1 occurence)
+                            (setf start (+ occurence 2))
+                          finally (return so-far)))
                  for path in
-                #+(or sbcl cmu lispworks) (directory wildcard)
+                #+sbcl (remove-duplicates
+                        (append (directory wildcard)
+                                (directory wildcard-directories))
+                        :test #'equal)
+                #+(or cmu lispworks) (directory wildcard)
                  #+openmcl (directory wildcard :directories t)
                  #+allegro (directory wildcard :directories-are-files  
nil)
                  #+cormanlisp (nconc (directory wildcard)


Any suggestions on the best way to handle this?

thanks,

cyrus





More information about the mcclim-devel mailing list