X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=calist.el;h=504476ae05a94a4b6c6ec101de7db1e8cf21a941;hb=408d973cbacdb4d02df4042ac1703cb67c342fea;hp=0d472135046f3231b5c10585e3711de9f2408c05;hpb=487a5900169502e24dd0199c085ea91e000c13a8;p=elisp%2Fapel.git diff --git a/calist.el b/calist.el index 0d47213..504476a 100644 --- a/calist.el +++ b/calist.el @@ -219,7 +219,7 @@ even if other rules are matched for ALIST." (type (car cell)) (value (cdr cell))) (cons type - (list '(t) + (list (list t) (cons value (calist-to-ctree (cdr calist))))) )) (t @@ -238,12 +238,19 @@ even if other rules are matched for ALIST." (delete ret (copy-alist calist))) )))) (setq values (cdr values))) - (setcdr ctree (list* '(t) - (cons (cdr ret) - (calist-to-ctree - (delete ret (copy-alist calist)))) - (cdr ctree))) - ) + (if (assq t (cdr ctree)) + (setcdr ctree + (cons (cons (cdr ret) + (calist-to-ctree + (delete ret (copy-alist calist)))) + (cdr ctree))) + (setcdr ctree + (list* (list t) + (cons (cdr ret) + (calist-to-ctree + (delete ret (copy-alist calist)))) + (cdr ctree))) + )) (catch 'tag (while values (let ((cell (car values))) @@ -251,10 +258,16 @@ even if other rules are matched for ALIST." (ctree-add-calist-with-default (cdr cell) calist)) ) (setq values (cdr values))) - (let ((elt (cons t (calist-to-ctree calist)))) - (or (member elt (cdr ctree)) - (setcdr ctree (cons elt (cdr ctree))) - ))) + (let ((cell (assq t (cdr ctree)))) + (if cell + (setcdr cell + (ctree-add-calist-with-default (cdr cell) + calist)) + (let ((elt (cons t (calist-to-ctree calist)))) + (or (member elt (cdr ctree)) + (setcdr ctree (cons elt (cdr ctree))) + )) + ))) ) ctree))))