org-macs: store evaluated version of pom

* lisp/org-macs.el (org-with-point-at): Store evaluated version of pom. This
fixes a potential bug when using (org-with-point-at (func) …), where (func)
would be evaluated multiple times, therefore might return different results
if a marker was returned and different each time.

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2011-02-25 18:30:33 +00:00 committed by Bastien Guerry
parent c2443d48e9
commit eced270fbf
1 changed files with 5 additions and 4 deletions

View File

@ -134,11 +134,12 @@ We use a macro so that the test can happen at compilation time."
(defmacro org-with-point-at (pom &rest body)
"Move to buffer and point of point-or-marker POM for the duration of BODY."
`(save-excursion
(if (markerp ,pom) (set-buffer (marker-buffer ,pom)))
`(let ((pom ,pom))
(save-excursion
(goto-char (or ,pom (point)))
,@body)))
(if (markerp pom) (set-buffer (marker-buffer pom)))
(save-excursion
(goto-char (or pom (point)))
,@body))))
(put 'org-with-point-at 'lisp-indent-function 1)
(defmacro org-no-warnings (&rest body)