[climacs-cvs] CVS climacs

thenriksen thenriksen at common-lisp.net
Sat Jul 22 15:59:25 UTC 2006


Update of /project/climacs/cvsroot/climacs
In directory clnet:/tmp/cvs-serv4596

Modified Files:
	lisp-syntax.lisp 
Log Message:
Fixed how `indices-match-arglist' handles nonmandatory arguments.


--- /project/climacs/cvsroot/climacs/lisp-syntax.lisp	2006/07/21 11:35:28	1.93
+++ /project/climacs/cvsroot/climacs/lisp-syntax.lisp	2006/07/22 15:59:25	1.94
@@ -3614,11 +3614,14 @@
          (pure-arglist (remove-if #'arglist-keyword-p arglist))
          (arg (when (< index (length pure-arglist))
                 (elt pure-arglist index))))
-    (if (and (not (null arg))
-             (listp arg)
-             (rest arg-indices))
-        (indices-match-arglist arg (rest arg-indices))
-        (null (rest arg-indices)))))
+    (cond ((and (> index (or (position #'arglist-keyword-p arglist) 0))
+                (not (null (rest arg-indices))))
+           nil)
+          ((and (not (null arg))
+                (listp arg)
+                (rest arg-indices))
+           (indices-match-arglist arg (rest arg-indices)))
+          (t (null (rest arg-indices))))))
 
 (defun direct-arg-p (form syntax)
   "Check whether `form' is a direct argument to one of its
@@ -3689,10 +3692,11 @@
                                         (multiple-value-list
                                          (find-operand-info ,mark-value-sym ,syntax-value-sym form)))))
                                  (or (recurse (parent form))
-                                     (unless (direct-arg-p form ,syntax-value-sym)
+                                     (unless (and (typep form 'complete-token-lexeme)
+                                                  (direct-arg-p form ,syntax-value-sym))
                                        form))))))
                   (or (recurse (parent immediate-form))
-                      immediate-form)))))
+                      (parent immediate-form))))))
             ;; If we cannot find a form, there's no point in looking
             ;; up any of this stuff.
             (,operator-sym (when ,form-sym (form-operator ,form-sym ,syntax-value-sym)))




More information about the Climacs-cvs mailing list