diff --git a/ledger-mode.el b/ledger-mode.el index bdd1b5e94..589dbc2a2 100644 --- a/ledger-mode.el +++ b/ledger-mode.el @@ -325,7 +325,7 @@ With a prefix argument, remove the effective date." (ledger-init-load-init-file) (setq-local comment-start ";") (setq-local indent-line-function #'ledger-indent-line) - (setq-local indent-region-function 'ledger-post-align-postings)) + (setq-local indent-region-function #'ledger-indent-region)) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.ledger\\'" . ledger-mode)) diff --git a/ledger-post.el b/ledger-post.el index 66c97e96b..c960c4406 100644 --- a/ledger-post.el +++ b/ledger-post.el @@ -140,6 +140,20 @@ Looks only as far as END, if supplied, otherwise `point-max'." (when ledger-post-auto-align (ledger-post-align-postings (line-beginning-position) (line-end-position)))) +(defun ledger-indent-region (beg end) + "Indent the region from BEG to END. +This works by calling `ledger-indent-line' for each line." + (save-excursion + (goto-char beg) + (beginning-of-line) + (ledger-indent-line) + (while (< (point) end) + (forward-line) + (ledger-indent-line)) + (when (progn (beginning-of-line) + (looking-at-p "^[[:space:]]*$")) + (delete-region (point) (line-end-position))))) + (defun ledger-post-align-dwim () "Align all the posting of the current xact or the current region. diff --git a/test/post-test.el b/test/post-test.el index 1d913fa36..ea66cbf9a 100644 --- a/test/post-test.el +++ b/test/post-test.el @@ -258,7 +258,7 @@ http://bugs.ledger-cli.org/show_bug.cgi?id=924" " (indent-region (point-min) (point-max)) (should - (equal (buffer-string) + (equal (buffer-substring-no-properties (point-min) (point-max)) "1994/01/10 * Mother Actif:Courant:BnpCc 500,00 F ; Étrennes Revenu:Autre:CadeauReçu @@ -453,6 +453,22 @@ http://bugs.ledger-cli.org/show_bug.cgi?id=946" Assets:Bar " )))) +(ert-deftest ledger-post/test-197 () + "Regress test for Bug #197" + :tags '(post regress) + (ledger-tests-with-temp-file + "2019/08/13 Test +this 8000 GBP +out" + (let ((ledger-post-auto-align nil)) + (set-mark-command nil) + (goto-char (point-max)) + (call-interactively #'indent-for-tab-command) + (should (string= (buffer-substring-no-properties (point-min) (point-max)) + "2019/08/13 Test + this 8000 GBP + out"))))) + (provide 'post-test)