Fix behavior of org-timestamp-change for explicit number of day changes
* lisp/org.el (org-timestamp-change): New optional argument UPDOWN. Use this to identify calls from org-timestamp-up/down, so that we can skip by rounding minutes in this case. (org-timestamp-up): (org-timestamp-down): (org-timestamp-up-day): (org-timestamp-down-day): Call org-timestamp-change with the updown argument. This function used to look only if there was a prefix argument in the current interactive call. Now we have an explicit marker indicating that the function is called from the updown commands.
This commit is contained in:
parent
80531d8d71
commit
80bcadf605
16
lisp/org.el
16
lisp/org.el
|
@ -14887,7 +14887,7 @@ If the cursor is on the year, change the year. If it is on the month or
|
||||||
the day, change that.
|
the day, change that.
|
||||||
With prefix ARG, change by that many units."
|
With prefix ARG, change by that many units."
|
||||||
(interactive "p")
|
(interactive "p")
|
||||||
(org-timestamp-change (prefix-numeric-value arg)))
|
(org-timestamp-change (prefix-numeric-value arg) nil 'updown))
|
||||||
|
|
||||||
(defun org-timestamp-down (&optional arg)
|
(defun org-timestamp-down (&optional arg)
|
||||||
"Decrease the date item at the cursor by one.
|
"Decrease the date item at the cursor by one.
|
||||||
|
@ -14895,7 +14895,7 @@ If the cursor is on the year, change the year. If it is on the month or
|
||||||
the day, change that.
|
the day, change that.
|
||||||
With prefix ARG, change by that many units."
|
With prefix ARG, change by that many units."
|
||||||
(interactive "p")
|
(interactive "p")
|
||||||
(org-timestamp-change (- (prefix-numeric-value arg))))
|
(org-timestamp-change (- (prefix-numeric-value arg)) nil 'updown))
|
||||||
|
|
||||||
(defun org-timestamp-up-day (&optional arg)
|
(defun org-timestamp-up-day (&optional arg)
|
||||||
"Increase the date in the time stamp by one day.
|
"Increase the date in the time stamp by one day.
|
||||||
|
@ -14904,7 +14904,7 @@ With prefix ARG, change that many days."
|
||||||
(if (and (not (org-at-timestamp-p t))
|
(if (and (not (org-at-timestamp-p t))
|
||||||
(org-on-heading-p))
|
(org-on-heading-p))
|
||||||
(org-todo 'up)
|
(org-todo 'up)
|
||||||
(org-timestamp-change (prefix-numeric-value arg) 'day)))
|
(org-timestamp-change (prefix-numeric-value arg) 'day 'updown)))
|
||||||
|
|
||||||
(defun org-timestamp-down-day (&optional arg)
|
(defun org-timestamp-down-day (&optional arg)
|
||||||
"Decrease the date in the time stamp by one day.
|
"Decrease the date in the time stamp by one day.
|
||||||
|
@ -14913,7 +14913,7 @@ With prefix ARG, change that many days."
|
||||||
(if (and (not (org-at-timestamp-p t))
|
(if (and (not (org-at-timestamp-p t))
|
||||||
(org-on-heading-p))
|
(org-on-heading-p))
|
||||||
(org-todo 'down)
|
(org-todo 'down)
|
||||||
(org-timestamp-change (- (prefix-numeric-value arg)) 'day)))
|
(org-timestamp-change (- (prefix-numeric-value arg)) 'day) 'updown))
|
||||||
|
|
||||||
(defun org-at-timestamp-p (&optional inactive-ok)
|
(defun org-at-timestamp-p (&optional inactive-ok)
|
||||||
"Determine if the cursor is in or at a timestamp."
|
"Determine if the cursor is in or at a timestamp."
|
||||||
|
@ -14958,7 +14958,7 @@ With prefix ARG, change that many days."
|
||||||
(message "Timestamp is now %sactive"
|
(message "Timestamp is now %sactive"
|
||||||
(if (equal (char-after beg) ?<) "" "in")))))
|
(if (equal (char-after beg) ?<) "" "in")))))
|
||||||
|
|
||||||
(defun org-timestamp-change (n &optional what)
|
(defun org-timestamp-change (n &optional what updown)
|
||||||
"Change the date in the time stamp at point.
|
"Change the date in the time stamp at point.
|
||||||
The date will be changed by N times WHAT. WHAT can be `day', `month',
|
The date will be changed by N times WHAT. WHAT can be `day', `month',
|
||||||
`year', `minute', `second'. If WHAT is not given, the cursor position
|
`year', `minute', `second'. If WHAT is not given, the cursor position
|
||||||
|
@ -14989,8 +14989,10 @@ in the timestamp determines what will be changed."
|
||||||
(if (string-match "^.\\{10\\}.*?[0-9]+:[0-9][0-9]" ts)
|
(if (string-match "^.\\{10\\}.*?[0-9]+:[0-9][0-9]" ts)
|
||||||
(setq with-hm t))
|
(setq with-hm t))
|
||||||
(setq time0 (org-parse-time-string ts))
|
(setq time0 (org-parse-time-string ts))
|
||||||
(when (and (eq org-ts-what 'minute)
|
(when (and updown
|
||||||
(eq current-prefix-arg nil))
|
(eq org-ts-what 'minute)
|
||||||
|
(not current-prefix-arg))
|
||||||
|
;; This looks like s-up and s-down. Change by one rounding step.
|
||||||
(setq n (* dm (cond ((> n 0) 1) ((< n 0) -1) (t 0))))
|
(setq n (* dm (cond ((> n 0) 1) ((< n 0) -1) (t 0))))
|
||||||
(when (not (= 0 (setq rem (% (nth 1 time0) dm))))
|
(when (not (= 0 (setq rem (% (nth 1 time0) dm))))
|
||||||
(setcar (cdr time0) (+ (nth 1 time0)
|
(setcar (cdr time0) (+ (nth 1 time0)
|
||||||
|
|
Loading…
Reference in New Issue