tomterl/fullframe — pull request #2 by purcell (2013-11-27 20:24:53+00:00)
Title: Avoid double-evaluation of 'register' macro argument

The macro still isn't 100% safe, since certain symbols are evaluated more than once.

So given:

```el
(defun some-register-name ()
... side effects here ...
:ibuffer-fullscreen)

(fullframe ibuffer ibuffer-quit (some-register-name) nil)
```

the expansion is:

```el
(progn
(defadvice ibuffer
(around fullscreen-rule-23514 activate)
(window-configuration-to-register
(some-register-name))
ad-do-it
(delete-other-windows))
(defadvice ibuffer-quit
(after restore-setup-rule-23515 activate)
(jump-to-register
(some-register-name))))
```

when clearly `some-register-name` should only be called once. This is a common macro-writing pitfall covered best (I think) in [Practical Common Lisp](http://gigamonkeys.com/book/macros-defining-your-own.html).

This commit illustrates how to avoid double evaluation in this case. :-)