summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/ledger-mode.texi15
-rw-r--r--lisp/ldg-post.el6
-rw-r--r--lisp/ldg-sort.el13
3 files changed, 28 insertions, 6 deletions
diff --git a/doc/ledger-mode.texi b/doc/ledger-mode.texi
index 1d317725..f530d587 100644
--- a/doc/ledger-mode.texi
+++ b/doc/ledger-mode.texi
@@ -303,6 +303,21 @@ transactions like automated transaction, will be moved in the sorting
process and may not function correctly afterwards. For this reason
there is no key sequence.
+You can limit the allowed sort region by using embedded Ledger-mode
+markup within your ledger. For exmaple
+@smallexample
+<<< infomration to not sort >>>
+
+; Ledger-mode: Start sort
+
+<<< xacts to sort >>>
+
+;Ledger-mode: End sort
+
+<<< information to not sort >>>
+@end smallexample
+
+
@node Hiding Transactions, , Sorting Transactions, The Ledger Buffer
@section Hiding Transactions
diff --git a/lisp/ldg-post.el b/lisp/ldg-post.el
index 2a736bfc..7105ef7a 100644
--- a/lisp/ldg-post.el
+++ b/lisp/ldg-post.el
@@ -133,10 +133,10 @@ the account"
(setq column ledger-post-amount-alignment-column))
(save-excursion
;; Position the account
- (beginning-of-line)
+ ;; (beginning-of-line)
(set-mark (point))
- (delete-horizontal-space)
- (insert ledger-default-acct-transaction-indent)
+ ;; (delete-horizontal-space)
+ ;; (insert ledger-default-acct-transaction-indent)
(goto-char (1+ (line-end-position)))
(let* ((mark-first (< (mark) (point)))
(begin (if mark-first (mark) (point)))
diff --git a/lisp/ldg-sort.el b/lisp/ldg-sort.el
index 361eead8..cc036492 100644
--- a/lisp/ldg-sort.el
+++ b/lisp/ldg-sort.el
@@ -54,8 +54,8 @@
;; the beginning of next record
;; after the region
(setq new-end (point))
- (narrow-to-region beg end)
- (goto-char (point-min))
+ (narrow-to-region new-beg new-end)
+ (goto-char new-beg)
(let ((inhibit-field-text-motion t))
(sort-subr
@@ -66,7 +66,14 @@
(defun ledger-sort-buffer ()
"Sort the entire buffer."
(interactive)
- (ledger-sort-region (point-min) (point-max)))
+ (let ((sort-start (point-min))
+ (sort-end (point-max)))
+ (goto-char (point-min))
+ (if (re-search-forward ";.*Ledger-mode:.*Start sort" nil t)
+ (set 'sort-start (match-end 0)))
+ (if (re-search-forward ";.*Ledger-mode:.*End sort" nil t)
+ (set 'sort-end (match-end 0)))
+ (ledger-sort-region sort-start sort-end)))
(provide 'ldg-sort)