[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-25 e5c17f4: Fix todo-mode category movement
From: |
Stephen Berman |
Subject: |
[Emacs-diffs] emacs-25 e5c17f4: Fix todo-mode category movement |
Date: |
Sat, 26 Mar 2016 22:15:13 +0000 |
branch: emacs-25
commit e5c17f46785e2eca165ccd5aa890f212c6a61ca1
Author: Stephen Berman <address@hidden>
Commit: Stephen Berman <address@hidden>
Fix todo-mode category movement
* lisp/calendar/todo-mode.el (todo-move-category): Use moved
category's existing categories sexp instead of invoking
todo-update-categories-sexp in file moved to, in order to take
archived items into account. If the moved category has archived
items, handle the source archive buffer properly. Remove
superfluous code.
---
lisp/calendar/todo-mode.el | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index 94cd08e..9574c03 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -1414,7 +1414,12 @@ the archive of the file moved to, creating it if it does
not exist."
(setq todo-files (funcall todo-files-function))
(todo-reevaluate-filelist-defcustoms))
(dolist (buf buffers)
+ ;; Make sure archive file is in Todo Archive mode so that
+ ;; todo-categories has correct value.
(with-current-buffer (find-file-noselect buf)
+ (when (equal (file-name-extension (buffer-file-name)) "toda")
+ (unless (derived-mode-p 'todo-archive-mode)
+ (todo-archive-mode)))
(widen)
(goto-char (point-max))
(let* ((beg (re-search-backward
@@ -1466,10 +1471,18 @@ the archive of the file moved to, creating it if it
does not exist."
(re-search-backward
(concat "^" (regexp-quote todo-category-beg)
"\\(" (regexp-quote cat) "\\)$") nil t)
- (replace-match new nil nil nil 1)))
- (setq todo-categories
- (append todo-categories (list (cons (or new cat) counts))))
- (todo-update-categories-sexp)
+ (replace-match new nil nil nil 1))
+ (setq todo-categories
+ (append todo-categories (list (cons (or new cat)
counts))))
+ (goto-char (point-min))
+ (if (looking-at "((\"")
+ ;; Delete existing sexp.
+ (delete-region (line-beginning-position)
(line-end-position))
+ ;; Otherwise, file is new, so make space for categories sexp.
+ (insert "\n")
+ (goto-char (point-min)))
+ ;; Insert (new or updated) sexp.
+ (prin1 todo-categories (current-buffer)))
;; If archive was just created, save it to avoid "File
;; <xyz> no longer exists!" message on invoking
;; `todo-view-archived-items'.
@@ -1500,9 +1513,7 @@ the archive of the file moved to, creating it if it does
not exist."
(setq todo-category-number 1))
(todo-category-select)))))
(set-window-buffer (selected-window)
- (set-buffer (find-file-noselect nfile)))
- (todo-category-number (or new cat))
- (todo-category-select))))
+ (set-buffer (find-file-noselect nfile))))))
(defun todo-merge-category (&optional file)
"Merge current category into another existing category.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-25 e5c17f4: Fix todo-mode category movement,
Stephen Berman <=