[climacs-cvs] CVS climacs
thenriksen
thenriksen at common-lisp.net
Sat Sep 16 12:11:12 UTC 2006
Update of /project/climacs/cvsroot/climacs
In directory clnet:/tmp/cvs-serv881
Modified Files:
lisp-syntax.lisp lisp-syntax-swine.lisp
Log Message:
Even more fixes regarding handling of quoted forms (now works I
think).
--- /project/climacs/cvsroot/climacs/lisp-syntax.lisp 2006/09/16 10:30:37 1.117
+++ /project/climacs/cvsroot/climacs/lisp-syntax.lisp 2006/09/16 12:11:11 1.118
@@ -2025,8 +2025,7 @@
(loop for (first . rest) on children
if (formp first)
do
- (cond ((and (< (start-offset first) offset)
- (<= offset (end-offset first)))
+ (cond ((< (start-offset first) offset (end-offset first))
(return (if (null (children first))
nil
(form-before-in-children (children first) offset))))
@@ -2034,8 +2033,12 @@
(or (null (first-form rest))
(<= offset (start-offset (first-form rest)))))
(return (let ((potential-form
- (when (form-list-p first)
- (form-before-in-children (children first) offset))))
+ (cond ((form-list-p first)
+ (form-before-in-children (children first) offset))
+ ((and (form-quoted-p first)
+ (not (form-incomplete-p first))
+ (form-list-p (second (children first))))
+ (form-before-in-children (children (second (children first))) offset)))))
(if (not (null potential-form))
(if (<= (end-offset first)
(end-offset potential-form))
--- /project/climacs/cvsroot/climacs/lisp-syntax-swine.lisp 2006/09/16 10:30:37 1.10
+++ /project/climacs/cvsroot/climacs/lisp-syntax-swine.lisp 2006/09/16 12:11:12 1.11
@@ -493,13 +493,14 @@
;; nested/destructuring argument lists such as those found in
;; macros.
(labels ((recurse (candidate-form)
- (when (parent candidate-form)
- (if (and (direct-arg-p syntax (first-form (children candidate-form))
- arg-form)
- (not (find-applicable-form syntax (first-form (children candidate-form)))))
- candidate-form
+ (if (and (direct-arg-p syntax (first-form (children candidate-form))
+ arg-form)
+ (not (find-applicable-form syntax (first-form (children candidate-form)))))
+ candidate-form
+ (unless (form-at-top-level-p candidate-form)
(recurse (parent candidate-form))))))
- (recurse (parent arg-form))))
+ (unless (form-at-top-level-p arg-form)
+ (recurse (parent arg-form)))))
(defun relevant-keywords (arglist arg-indices)
"Return a list of the keyword arguments that it would make
@@ -770,7 +771,8 @@
;; If nothing else can be found, and `arg-form'
;; is the operator of its enclosing form, we use
;; the enclosing form.
- (when (eq (first-form (children (parent immediate-form))) immediate-form)
+ (when (and (not (form-at-top-level-p immediate-form))
+ (eq (first-form (children (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.
More information about the Climacs-cvs
mailing list