diff options
-rw-r--r-- | doc/ledger-mode.texi | 15 | ||||
-rw-r--r-- | lisp/ldg-post.el | 6 | ||||
-rw-r--r-- | lisp/ldg-sort.el | 13 |
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) |