1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

2009-01-28 Carsten Dominik <carsten.dominik@gmail.com>

* org-agenda.el (org-agenda-get-todos): Start search from correct
	position.

	* org.el (org-fast-todo-selection): Make sure TODO selection does
	not change buffer position.

	* org-list.el (org-toggle-checkbox): Implement adding or removing
	checkboxes from line or region when called with a prefix
	argument.

	* org-rmail.el (org-rmail-store-link): Protect the call to
	`rmail-narrow-to-non-pruned-header'.

	* org-clock.el (org-clock-special-range): Fix week display in
	clock tables.

	* org-exp.el (org-get-current-options): Fix bug when in indirect
	buffer.

	* org-agenda.el (org-agenda-dim-blocked-tasks): New option.
	(org-finalize-agenda): Call `org-agenda-dim-blocked-tasks'.
	(org-agenda-dim-blocked-tasks): New function.

	* org.el (org-enforce-todo-dependencies): New option.
	(org-block-todo-from-children-or-siblings): New function.

	* org-faces.el (org-agenda-dimmed-todo-face): New face.
This commit is contained in:
Carsten Dominik 2009-01-28 14:33:23 +00:00
parent f088b05476
commit d6685abc9e
35 changed files with 314 additions and 126 deletions

View file

@ -7,7 +7,7 @@
;; Bastien Guerry <bzg AT altern DOT org>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
;; Version: 6.19e
;; Version: 6.20c
;;
;; This file is part of GNU Emacs.
;;
@ -248,11 +248,15 @@ Return t when things worked, nil when we are not in an item."
(skip-chars-forward " \t")
(looking-at "\\[[- X]\\]"))))
(defun org-toggle-checkbox (&optional arg)
"Toggle the checkbox in the current line."
(defun org-toggle-checkbox (&optional toggle-presence)
"Toggle the checkbox in the current line.
With prefix arg TOGGLE-PRESENCE, add or remove checkboxes.
When there is an active region, toggle status or presence of the checkbox
in the first line, and make every item in the region have the same
status or precence, respectively."
(interactive "P")
(catch 'exit
(let (beg end status (firstnew 'unknown))
(let (beg end status first-present first-status)
(cond
((org-region-active-p)
(setq beg (region-beginning) end (region-end)))
@ -260,23 +264,46 @@ Return t when things worked, nil when we are not in an item."
(setq beg (point) end (save-excursion (outline-next-heading) (point))))
((org-at-item-checkbox-p)
(let ((pos (point)))
(replace-match
(cond (arg "[-]")
((member (match-string 0) '("[ ]" "[-]")) "[X]")
(t "[ ]"))
t t)
(if toggle-presence
(progn
(replace-match "")
(goto-char (match-beginning 0))
(just-one-space))
(replace-match
(cond ((member (match-string 0) '("[ ]" "[-]")) "[X]")
(t "[ ]"))
t t))
(goto-char pos))
(throw 'exit t))
((org-at-item-p)
;; add a checkbox
(save-excursion
(goto-char (match-end 0))
(insert "[ ] "))
(throw 'exit t))
(t (error "Not at a checkbox or heading, and no active region")))
(setq end (move-marker (make-marker) end))
(save-excursion
(goto-char beg)
(setq first-present (org-at-item-checkbox-p)
first-status (and first-present (equal (match-string 0) "[X]")))
(while (< (point) end)
(when (org-at-item-checkbox-p)
(setq status (equal (match-string 0) "[X]"))
(when (eq firstnew 'unknown)
(setq firstnew (not status)))
(replace-match
(if (if arg (not status) firstnew) "[X]" "[ ]") t t))
(if toggle-presence
(cond
((and first-present (org-at-item-checkbox-p))
(save-excursion
(replace-match "")
(goto-char (match-beginning 0))
(just-one-space)))
((and (not first-present) (not (org-at-item-checkbox-p))
(org-at-item-p))
(save-excursion
(goto-char (match-end 0))
(insert "[ ] "))))
(when (org-at-item-checkbox-p)
(setq status (equal (match-string 0) "[X]"))
(replace-match
(if first-status "[ ]" "[X]") t t)))
(beginning-of-line 2)))))
(org-update-checkbox-count-maybe))