summaryrefslogtreecommitdiff
path: root/lisp/ledger-sort.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/ledger-sort.el')
-rw-r--r--lisp/ledger-sort.el33
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))