From 852385892a293e2a3479846a3f96e98678ba93d3 Mon Sep 17 00:00:00 2001 From: Yasushi SHOJI Date: Mon, 14 Jan 2019 10:19:50 +0900 Subject: [PATCH] org-clone: Allow time shift in backward Make `org-clone-subtree-with-time-shift` accept a negative value to shift the timestamp in backward. Reported-by: Scott Randby Signed-off-by: Yasushi SHOJI --- etc/ORG-NEWS | 5 +++++ lisp/org.el | 2 +- testing/lisp/test-org.el | 12 ++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index e06d0c09b..4821cfa85 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -104,6 +104,11 @@ A 'native option was added to org-highlight-latex-and-related. It matches the same structures than 'latex but it calls org-src-font-lock-fontify-block instead, thus bringing about full LaTeX font locking. +*** ~org-clone-subtree-with-time-shift~ learnt to shift backward in time +== (~org-clone-subtree-with-time-shift~) now takes a +negative value as a valid repeater to shift time stamps in backward +in cloned subtrees. You can give, for example, ā€˜-3dā€™ to shift three +days in the past. ** New functions *** ~org-dynamic-block-insert-dblock~ diff --git a/lisp/org.el b/lisp/org.el index 5c11de7b6..e71ba73e6 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -8452,7 +8452,7 @@ with the original repeater." ""))) ;No time shift (doshift (and (org-string-nw-p shift) - (or (string-match "\\`[ \t]*\\+?\\([0-9]+\\)\\([dwmy]\\)[ \t]*\\'" + (or (string-match "\\`[ \t]*\\([\\+\\-]?[0-9]+\\)\\([dwmy]\\)[ \t]*\\'" shift) (user-error "Invalid shift specification %s" shift))))) (goto-char end-of-tree) diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el index 976b7d8d6..db34a03c2 100644 --- a/testing/lisp/test-org.el +++ b/testing/lisp/test-org.el @@ -1496,6 +1496,18 @@ (replace-regexp-in-string "\\( [.A-Za-z]+\\)\\( \\+[0-9][hdmwy]\\)?>" "" (buffer-string) nil nil 1)))) + ;; Clone repeating once in backward. + (should + (equal "\ +* H1\n<2015-06-21> +* H1\n<2015-06-19> +* H1\n<2015-06-17 +1w> +" + (org-test-with-temp-text "* H1\n<2015-06-21 Sun +1w>" + (org-clone-subtree-with-time-shift 1 "-2d") + (replace-regexp-in-string + "\\( [.A-Za-z]+\\)\\( \\+[0-9][hdmwy]\\)?>" "" (buffer-string) + nil nil 1)))) ;; Clone non-repeating zero times. (should (equal "\ -- 2.20.1