From 58fe513dacd7389a799ffb50b3b3dcbaf5606381 Mon Sep 17 00:00:00 2001 From: Matus Goljer Date: Sat, 2 Jan 2021 15:49:12 +0100 Subject: [PATCH] feat(xact): add default time when copying transaction Use the transaction's time as default time when asking when the copy should be created. This allows us to use the relative syntax of org-read-date to move the transaction an forward or backward from the time of the transaction: +1d (+ 1 day from TODAY) ++1d (+ 1 day from DEFAULT-TIME, i.e. date of the original transaction) In other words, single +/- is relative against today and double ++/-- is relative against the DEFAULT-TIME. Note that since currently the DEFAULT-TIME is today, this feature is only strictly adding functionality and should therefore be fully backward-compatible. --- ledger-mode.el | 7 ++++--- ledger-xact.el | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ledger-mode.el b/ledger-mode.el index db06d4b7..c1c0c539 100644 --- a/ledger-mode.el +++ b/ledger-mode.el @@ -92,11 +92,12 @@ (regexp-quote account)) (ledger-accounts-list)))) -(defun ledger-read-date (prompt) +(defun ledger-read-date (prompt &optional default-time) "Return user-supplied date after `PROMPT', defaults to today. This uses `org-read-date', which see." - (ledger-format-date (let ((org-read-date-prefer-future nil)) - (org-read-date nil t nil prompt)))) + (ledger-format-date (let ((org-read-date-prefer-future nil) + (org-extend-today-until 0)) + (org-read-date nil t nil prompt default-time)))) (defun ledger-get-minibuffer-prompt (prompt default) "Return a minibuffer prompt string composing PROMPT and DEFAULT." diff --git a/ledger-xact.el b/ledger-xact.el index 2ab98919..34ea63a8 100644 --- a/ledger-xact.el +++ b/ledger-xact.el @@ -151,7 +151,9 @@ MOMENT is an encoded date" "Ask for a new DATE and copy the transaction under point to that date. Leave point on the first amount." (interactive (list - (ledger-read-date "Copy to date: "))) + (ledger-read-date "Copy to date: " + (ledger-parse-iso-date + (ledger-xact-date))))) (let* ((extents (ledger-navigate-find-xact-extents (point))) (transaction (buffer-substring-no-properties (car extents) (cadr extents))) (encoded-date (ledger-parse-iso-date date)))