Hi list, I've just found a bug in `org-test-with-temp-text' and have fixed it. Please find attached my patch for the fix. Here's the description from git commit message:
According to the docstring, if the string "<point>" appears in TEXT then the string "<point>" is removed and point is placed there. The problem was that after string "<point>" was removed, the point was *not* placed at the position of the removed text, rather, it was placed one character before that position which is wrong. The reason is that Emacs buffer position is a number started from 1, instead of 0, in other words, the value of `(point-min)' is 1 not 0. The problem is addressed by adding 1 to the calculated position. I'm going to report another bug together with a reproducer written as an "org-test". But my test relies on my fix in `org-test-with-temp-text'. Therefor, I will appreciate it if this patch can be taken care of as soon as possible. Thank you, York
From 9bbfc37ab059e923c57eaa99e3a2d81144c80218 Mon Sep 17 00:00:00 2001 From: York Zhao <gtdplatf...@gmail.com> Date: Wed, 9 Apr 2014 13:39:16 -0400 Subject: [PATCH] testing/org-test.el (org-test-with-temp-text): Fix point position According to the docstring, if the string "<point>" appears in TEXT then the string "<point>" is removed and point is placed there. The problem was that after string "<point>" was removed, the point was *not* placed at the position of the removed text, rather, it was placed one character before that position which is wrong. The reason is that Emacs buffer position is a number started from 1, instead of 0, in other words, the value of `(point-min)' is 1 not 0. The problem is addressed by adding 1 to the calculated position. TINYCHANGE --- testing/org-test.el | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/testing/org-test.el b/testing/org-test.el index 879d45e..983c012 100644 --- a/testing/org-test.el +++ b/testing/org-test.el @@ -209,11 +209,12 @@ otherwise place the point at the beginning of the inserted text." (with-temp-buffer (org-mode) (let ((point (string-match (regexp-quote "<point>") inside-text))) - (if point - (progn (insert (replace-match "" nil nil inside-text)) - (goto-char (match-beginning 0))) - (progn (insert inside-text) - (goto-char (point-min))))) + (if point + (progn + (insert (replace-match "" nil nil inside-text)) + (goto-char (1+ (match-beginning 0)))) + (progn (insert inside-text) + (goto-char (point-min))))) ,@body))) (def-edebug-spec org-test-with-temp-text (form body)) -- 1.8.4