[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:01837] Re: 終了 (done) した Todo のまとめて移動



大賀きゆきです。

> > Todo <==> Done を簡単に切り替える設定は、以前からみなさん追求さ
> > れていまして、ぼくは、みなさんの設定をかき集めて、

> 作るのは楽しいんですが、結局使わずに解決できるようですね…
> ひとまず手作業で done&todo => done にします。ありがとうございました。

結局こんなのを作りました。以下のように運用します。

(1) 表示対象は todo&done … 終わってるんだけどちょっと残しておきたい
	       !done	 … 普通の項目や終了していないtodo

(2) 期限から1週間過ぎてから mhc-todo-set-done/todo-as-done すると、
    todo&done は done に変更 
      → 表示されなくなる/intersectionから移動

(3) todo -> todo&done は直接編集? toggleするものも作ってあるが…

;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; 

(setq mhc-default-category "(todo && done) || !done")

(defun mhc-draft-get-x-sc-day-last ()
  (let ((str  (mhc-header-get-value "x-sc-day"))
	(date 0)
	(i    0))
    (while (string-match "[ \t]*\\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\)[ \t]*" str i)
      (let ((cur (mhc-date-new-from-string 
		  (substring str 
			     (match-beginning 1)
			     (match-end       1)))))
	(if (< date cur)
	    (setq date cur)))
      (setq i (match-end 0)))
    date))

(defvar mhc-done/todo-as-done-interval 7)
  
(defun mhc-todo-set-done/todo-as-done ()
  (interactive)
  (mhc-modify-file (mhc-summary-filename))
  (if (and (mhc-draft-in-category-p "done") 
	   (mhc-draft-in-category-p "todo")
	   (let* ((now  (mhc-date-now))
		  (date (mhc-draft-get-x-sc-day-last)))
	     (< (+ date mhc-done/todo-as-done-interval) now)))
      (let ((subject (mhc-header-get-value "x-sc-subject")))
	(mhc-draft-delete-category "todo")
	(mhc-draft-delete-category "wait")
	(mhc-draft-append-category "done")
	(mhc-draft-finish)
	(message "Completed: %s" subject))
    (kill-buffer (current-buffer))
    (beep)))

;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; ;;; 

--
sakura@xxxxxxxxxxxx
http://www.tennodai.com/~sakura/