(list 'setq place
(list 'cons newelt place))
(require 'macroexp)
+ (require 'gv)
(eval `(let ((newelt ',newelt)
(place ',place))
(macroexp-let2 macroexp-copyable-p v newelt
,(if (symbolp place)
;; So we can use `pop' in the bootstrap before `gv' can be used.
(list 'prog1 place (list 'setq place (list 'cdr place)))
- (gv-letplace (getter setter) place
- `(prog1 ,getter ,(funcall setter `(cdr ,getter)))))))
+ (require 'gv)
+ (eval `(let ((place ',place))
+ (gv-letplace (getter setter) place
+ `(prog1 ,getter ,(funcall setter `(cdr ,getter)))))))))
(defmacro when (cond &rest body)
"If COND yields non-nil, do BODY, else return nil.
(setq ,(car spec) (1+ ,(car spec))))
,@(cdr (cdr spec))))))
-(defmacro declare (&rest _specs)
- "Do not evaluate any arguments, and return nil.
-If a `declare' form appears as the first form in the body of a
-`defun' or `defmacro' form, SPECS specifies various additional
-information about the function or macro; these go into effect
-during the evaluation of the `defun' or `defmacro' form.
-
-The possible values of SPECS are specified by
-`defun-declarations-alist' and `macro-declarations-alist'.
-
-For more information, see info node `(elisp)Declare Form'."
- ;; FIXME: edebug spec should pay attention to defun-declarations-alist.
- nil)
-
(defmacro ignore-errors (&rest body)
"Execute BODY; if an error occurs, return nil.
Otherwise, return result of last form in BODY.
See also `with-demoted-errors' that does something similar
without silencing all errors."
(declare (debug t) (indent 0))
- `(condition-case nil (progn ,@body) (error nil)))
+ `(condition-case nil
+ (%funcall (@ (guile) catch)
+ t
+ #'(lambda () ,@body)
+ #'(lambda (&rest args) nil))
+ (error nil)))
\f
;;;; Basic Lisp functions.