Subject: bug#19727: 25.0.50; setting a todo item to done puts point at the end of the buffer

From: Robert Pluim <[email-masked]>
Date: Thu, 29 Jan 2015 11:10:47 +0100

Hi,

when I set an item to done in a todo-mode buffer, point ends up at the
end of the buffer, which is somewhat surprising. Attached patch
remembers where point was, and restores it.

Regards

Robert

In GNU Emacs 25.0.50.6 (i686-pc-cygwin)
 of 2015-01-28 on RPLUIM
Repository revision: 8a8bd38fedb89b2d04cca2419698813a22862c3b
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --with-w32 --with-wide-int'

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 90681c8..060cbf7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-26  Robert Pluim  <[email-masked]>
+
+	* calendar/todo-mode.el (todo-item-done): Initialize opoint so
+	that point stays where it is when setting items to DONE.
+
 2015-01-28  Tassilo Horn  <[email-masked]>
 
 	* textmodes/reftex.el (reftex-syntax-table-for-bib): Give ( and )
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index 7ca57a4..2fb7e2e 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -2816,7 +2816,8 @@ (defun todo-item-done (&optional arg)
 			  (goto-char (point-min))
 			  (re-search-forward todo-done-string-start nil t)))
 	     (buffer-read-only nil)
-	     item done-item opoint)
+	     item done-item
+	     (opoint (point)))
 	;; Don't add empty comment to done item.
 	(setq comment (unless (zerop (length comment))
 			(concat " [" todo-comment-string ": " comment "]")))