]> code.delx.au - gnu-emacs/commitdiff
todo-mode.el: Handle calling revert-buffer.
authorStephen Berman <stephen.berman@gmx.net>
Wed, 26 Nov 2014 22:17:41 +0000 (23:17 +0100)
committerStephen Berman <stephen.berman@gmx.net>
Wed, 26 Nov 2014 22:17:41 +0000 (23:17 +0100)
Fixes: debbugs:19187
* calendar/todo-mode.el: (todo-revert-buffer): New function.
(todo-modes-set-1): Use it as the buffer-local value of
revert-buffer-function.

lisp/ChangeLog
lisp/calendar/todo-mode.el

index 0741bfd41c9d32186d323bb046a961426d98b311..5947c76ac17a5e186356fee1e730f8d16649e540 100644 (file)
@@ -1,3 +1,10 @@
+2014-11-26  Stephen Berman  <stephen.berman@gmx.net>
+
+       * calendar/todo-mode.el: Handle calling revert-buffer (bug#19187).
+       (todo-revert-buffer): New function.
+       (todo-modes-set-1): Use it as the buffer-local value of
+       revert-buffer-function.
+
 2014-11-26  Stephen Berman  <stephen.berman@gmx.net>
 
        * calendar/todo-mode.el (todo-mode): If called interactively, just
index ed7c60776b2b6d1aff8f0a6f886c906ac9a2de08..3ba263f00e3d9b8c0c80c21593d70bb91ed32734 100644 (file)
@@ -5194,6 +5194,15 @@ Overrides `diary-goto-entry'."
 
 (add-function :override diary-goto-entry-function #'todo-diary-goto-entry)
 
+(defun todo-revert-buffer (&optional ignore-auto noconfirm)
+  "Call `revert-buffer', preserving buffer's current modes.
+Also preserve category display, if applicable."
+  (interactive (list (not current-prefix-arg)))
+  (let ((revert-buffer-function nil))
+    (revert-buffer ignore-auto noconfirm 'preserve-modes)
+    (when (memq major-mode '(todo-mode todo-archive-mode))
+      (todo-category-select))))
+
 (defun todo-desktop-save-buffer (_dir)
   `((catnum . ,(todo-category-number (todo-current-category)))))
 
@@ -6540,6 +6549,7 @@ Added to `window-configuration-change-hook' in Todo mode."
 (defun todo-modes-set-1 ()
   "Make some settings that apply to multiple Todo modes."
   (setq-local font-lock-defaults '(todo-font-lock-keywords t))
+  (setq-local revert-buffer-function 'todo-revert-buffer)
   (setq-local tab-width todo-indent-to-here)
   (setq-local indent-line-function 'todo-indent)
   (when todo-wrap-lines