Re: [Orgmode] [PATCH] org-macs: store evaluated version of pom
Hi Julien, Julien Danjou jul...@danjou.info writes: Yes it is. This patch just fix one problem. Without it, what is set with pom is evaluated multiple times: (org-with-point-at (function-that-return-some-marker) (do-stuff)) (function-that-return-some-marker) will be called several times, which can causes a lot of problem, as you imagine just by reading the current code. This patch evalute the function, store it to `pom' and use this variable instead. Many thanks for the explanations. I've now applied this patch. -- Bastien ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [PATCH] org-macs: store evaluated version of pom
Hi Julien, Julien Danjou jul...@danjou.info writes: * 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 I'm not sure I understand this patch. Can you show an actual use of org-with-point-at as the one you describe? Maybe that's related to some code your are working on? Thanks, -- Bastien ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] [PATCH] org-macs: store evaluated version of pom
On Sat, Feb 26 2011, Bastien wrote: * 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 I'm not sure I understand this patch. Can you show an actual use of org-with-point-at as the one you describe? Maybe that's related to some code your are working on? Yes it is. This patch just fix one problem. Without it, what is set with pom is evaluated multiple times: (org-with-point-at (function-that-return-some-marker) (do-stuff)) (function-that-return-some-marker) will be called several times, which can causes a lot of problem, as you imagine just by reading the current code. This patch evalute the function, store it to `pom' and use this variable instead. -- Julien Danjou ❱ http://julien.danjou.info pgpRQy35eQkWq.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] [PATCH] 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 jul...@danjou.info --- lisp/org-macs.el |9 + 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/org-macs.el b/lisp/org-macs.el index 9c161e3..2090ca7 100644 --- a/lisp/org-macs.el +++ b/lisp/org-macs.el @@ -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) -- 1.7.4.1 ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode