diff options
author | Richard M. Stallman <rms@gnu.org> | 1999-08-29 20:23:54 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1999-08-29 20:23:54 +0000 |
commit | d270117a18a28a1bebdb687fd794b5cc89f1559d (patch) | |
tree | 3ce9f2dfa1196dd03b3f5d7c5c78ff4cdc0ae8eb /lisp/subr.el | |
parent | e3c0f9ded6f68f9fded9904afaca2e7d6e5bc75a (diff) | |
download | emacs-d270117a18a28a1bebdb687fd794b5cc89f1559d.tar.gz |
(push, pop): New macros.
Diffstat (limited to 'lisp/subr.el')
-rw-r--r-- | lisp/subr.el | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lisp/subr.el b/lisp/subr.el index f4f695e8108..a80383467d3 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -51,6 +51,21 @@ BODY should be a list of lisp expressions." ;; depend on backquote.el. (list 'function (cons 'lambda cdr))) +(defmacro push (value listname) + "Add VALUE to the list which is the value of LISTNAME. +This is equivalent to (setq LISTNAME (cons VALUE LISTNAME)). +LISTNAME must be a symbol." + (list 'setq list + (list 'cons value list))) + +(defmacro pop (listname) + "Return the first element of LISTNAME's value, and remove it from the list. +LISTNAME must be a symbol whose value is a list. +If the value is nil, `pop' returns nil but does not actually +change the list." + (list 'prog1 (list 'car listname) + (list 'setq listname (list 'cdr listname)))) + (defmacro when (cond &rest body) "(when COND BODY...): if COND yields non-nil, do BODY, else return nil." (list 'if cond (cons 'progn body))) |