~ubuntu-branches/ubuntu/dapper/wnn7egg/dapper

« back to all changes in this revision

Viewing changes to elisp/xemacs21/wnn7egg.el

  • Committer: Bazaar Package Importer
  • Author(s): ISHIKAWA Mutsumi
  • Date: 2004-09-22 17:39:30 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040922173930-pna2yuvlq63wxgc9
Tags: 1.02-5
update dolist macro confliction fix, thanks TSUCHIYA Masatoshi.
realy closes: #270839

Show diffs side-by-side

added added

removed removed

Lines of Context:
1297
1297
                        (for-each* (cdr vars) body)
1298
1298
                        (list 'setq tvar (list 'cdr tvar))))))))
1299
1299
                             
1300
 
(put 'dolist 'lisp-indent-hook 1)
1301
 
 
1302
 
(defmacro dolist (pair &rest body)
1303
 
  "(dolist (VAR LISTFORM) . BODY) $B$O(BVAR $B$K=g<!(B LISTFORM $B$NMWAG$rB+G{$7(B
1304
 
$B$F(B BODY $B$r<B9T$9$k(B"
1305
 
 
1306
 
  (for-each* (list pair) (cons 'progn body)))
 
1300
(unless (fboundp 'dolist)
 
1301
  ;; This definition of dolist is imported from subr.el distributed
 
1302
  ;; with Emacs-21.3.
 
1303
  (defmacro dolist (spec &rest body)
 
1304
    "(dolist (VAR LIST [RESULT]) BODY...): loop over a list.
 
1305
Evaluate BODY with VAR bound to each car from LIST, in turn.
 
1306
Then evaluate RESULT to get return value, default nil."
 
1307
    (let ((temp (make-symbol "--dolist-temp--")))
 
1308
      (list 'let (list (list temp (nth 1 spec)) (car spec))
 
1309
            (list 'while temp
 
1310
                  (list 'setq (car spec) (list 'car temp))
 
1311
                  (cons 'progn
 
1312
                        (append body
 
1313
                                (list (list 'setq temp (list 'cdr temp))))))
 
1314
            (if (cdr (cdr spec))
 
1315
                (cons 'progn
 
1316
                      (cons (list 'setq (car spec) nil) (cdr (cdr spec))))))))
 
1317
  (put 'dolist 'lisp-indent-hook 1))
1307
1318
 
1308
1319
;;;
1309
1320
;;; defrule