Date: Sunday, September 19, 2010 @ 21:17:14 Author: rtoy Path: /project/cmucl/cvsroot/src/code
Modified: unidata.lisp
Was mishandling the case where there are no more completions. In this case we were returning the prefix string, but that would be incorrect if the prefix string is not a valid character. So check that it is valid and return it. Otherwise do nothing (thereby returning nil) so slime can note the character is invalid.
--------------+ unidata.lisp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
Index: src/code/unidata.lisp diff -u src/code/unidata.lisp:1.20 src/code/unidata.lisp:1.21 --- src/code/unidata.lisp:1.20 Sun Sep 19 20:59:22 2010 +++ src/code/unidata.lisp Sun Sep 19 21:17:14 2010 @@ -4,7 +4,7 @@ ;;; This code was written by Paul Foley and has been placed in the public ;;; domain. ;;; -(ext:file-comment "$Header: /project/cmucl/cvsroot/src/code/unidata.lisp,v 1.20 2010-09-20 00:59:22 rtoy Exp $") +(ext:file-comment "$Header: /project/cmucl/cvsroot/src/code/unidata.lisp,v 1.21 2010-09-20 01:17:14 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -18,7 +18,7 @@
(defconstant +unidata-path+ #p"ext-formats:unidata.bin")
-(defvar *unidata-version* "$Revision: 1.20 $") +(defvar *unidata-version* "$Revision: 1.21 $")
(defstruct unidata range @@ -1291,7 +1291,12 @@ (if suffixes (loop for n in suffixes do (push (concatenate 'string full-prefix n) names)) - (push full-prefix names)))))) + ;; No suffixes. So either the prefix is the + ;; only possible completion or it's not valid. + ;; Figure that out. If it's valid, add it to + ;; names. + (when (search-dictionary (string-upcase prefix-tail) dictionary) + (push prefix-match names))))))) ;; Match prefix for Hangul syllables or CJK unified ideographs. (cond ((char= (char prefix-match 0) #\H) ;; Add "Hangul_Syllable_" as possible completion for @@ -1312,7 +1317,8 @@ (unless *cjk-unified-ideograph-dictionary* (build-cjk-unified-ideograph-dictionary)) (han-or-cjk-completion prefix-match "Cjk_Unified_Ideograph-" - *cjk-unified-ideograph-dictionary*))))) + *cjk-unified-ideograph-dictionary*) + )))) (setf names (mapcar #'string-capitalize names)) ;;(format t "Final names = ~S~%" names) names)))