diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index b9c19a5a8..a8f3deb28 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -9925,32 +9925,33 @@ The prefix arg is passed through to the command if possible." (org-agenda-set-tags ,tag ,(if (eq action ?+) ''on ''off)))))) - (?s - (let ((time - (and (not arg) - (org-read-date nil nil nil "(Re)Schedule to" - org-overriding-default-time)))) + ((and (or ?s ?d) c) + (let* ((schedule? (eq c ?s)) + (prompt (if schedule? "(Re)Schedule to" "(Re)Set Deadline to")) + (time + (and (not arg) + (let ((new (org-read-date + nil nil nil prompt org-overriding-default-time))) + ;; A "double plus" answer applies to every + ;; scheduled time. Do not turn it into + ;; a fixed date yet. + (if (string-match-p "\\`[ \t]*\\+\\+" + org-read-date-final-answer) + org-read-date-final-answer + new))))) ;; Make sure to not prompt for a note when bulk - ;; rescheduling as Org cannot cope with simultaneous notes. - ;; Besides, it could be annoying depending on the number of - ;; items re-scheduled. + ;; rescheduling/resetting deadline as Org cannot cope with + ;; simultaneous notes. Besides, it could be annoying + ;; depending on the number of marked items. (setq cmd - `(lambda () - (let ((org-log-reschedule (and org-log-reschedule 'time))) - (org-agenda-schedule arg ,time)))))) - (?d - (let ((time - (and (not arg) - (org-read-date nil nil nil "(Re)Set Deadline to" - org-overriding-default-time)))) - ;; Make sure to not prompt for a note when bulk - ;; rescheduling as Org cannot cope with simultaneous - ;; notes. Besides, it could be annoying depending on the - ;; number of items re-scheduled. - (setq cmd - `(lambda () - (let ((org-log-redeadline (and org-log-redeadline 'time))) - (org-agenda-deadline arg ,time)))))) + (if schedule? + `(lambda () + (let ((org-log-reschedule + (and org-log-reschedule 'time))) + (org-agenda-schedule arg ,time))) + `(lambda () + (let ((org-log-redeadline (and org-log-redeadline 'time))) + (org-agenda-deadline arg ,time))))))) (?S (unless (org-agenda-check-type nil 'agenda 'todo)