diff options
Diffstat (limited to 'lisp/ledger-sort.el')
-rw-r--r-- | lisp/ledger-sort.el | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/lisp/ledger-sort.el b/lisp/ledger-sort.el index 80472a35..870e298c 100644 --- a/lisp/ledger-sort.el +++ b/lisp/ledger-sort.el @@ -1,6 +1,6 @@ ;;; ledger-xact.el --- Helper code for use with the "ledger" command-line tool -;; Copyright (C) 2003-2014 John Wiegley (johnw AT gnu DOT org) +;; Copyright (C) 2003-2015 John Wiegley (johnw AT gnu DOT org) ;; This file is not part of GNU Emacs. @@ -26,25 +26,19 @@ ;;; Code: -(defun ledger-next-record-function () - "Move point to next transaction." - (if (re-search-forward ledger-payee-any-status-regex nil t) - (goto-char (match-beginning 0)) - (goto-char (point-max)))) - -(defun ledger-end-record-function () - "Move point to end of transaction." - (forward-paragraph)) (defun ledger-sort-find-start () + "Find the beginning of a sort region" (if (re-search-forward ";.*Ledger-mode:.*Start sort" nil t) (match-end 0))) (defun ledger-sort-find-end () + "Find the end of a sort region" (if (re-search-forward ";.*Ledger-mode:.*End sort" nil t) (match-end 0))) (defun ledger-sort-insert-start-mark () + "Insert a marker to start a sort region" (interactive) (save-excursion (goto-char (point-min)) @@ -54,6 +48,7 @@ (insert "\n; Ledger-mode: Start sort\n\n")) (defun ledger-sort-insert-end-mark () + "Insert a marker to end a sort region" (interactive) (save-excursion (goto-char (point-min)) @@ -69,11 +64,11 @@ (defun ledger-sort-region (beg end) "Sort the region from BEG to END in chronological order." (interactive "r") ;; load beg and end from point and mark - ;; automagically + ;; automagically (let ((new-beg beg) (new-end end) point-delta - (bounds (ledger-find-xact-extents (point))) + (bounds (ledger-navigate-find-xact-extents (point))) target-xact) (setq point-delta (- (point) (car bounds))) @@ -82,12 +77,14 @@ (save-excursion (save-restriction (goto-char beg) - (ledger-next-record-function) ;; make sure point is at the - ;; beginning of a xact + ;; make sure point is at the beginning of a xact + (ledger-navigate-next-xact) + (unless (looking-at ledger-payee-any-status-regex) + (ledger-navigate-next-xact)) (setq new-beg (point)) (goto-char end) - (ledger-next-record-function) ;; make sure end of region is at - ;; the beginning of next record + (ledger-navigate-next-xact) + ;; make sure end of region is at the beginning of next record ;; after the region (setq new-end (point)) (narrow-to-region new-beg new-end) @@ -96,8 +93,8 @@ (let ((inhibit-field-text-motion t)) (sort-subr nil - 'ledger-next-record-function - 'ledger-end-record-function + 'ledger-navigate-next-xact + 'ledger-navigate-end-of-xact 'ledger-sort-startkey)))) (goto-char (point-min)) |