summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ldg-mode.el1
-rw-r--r--lisp/ldg-post.el66
-rw-r--r--lisp/ldg-reconcile.el15
-rw-r--r--lisp/ldg-sort.el2
4 files changed, 22 insertions, 62 deletions
diff --git a/lisp/ldg-mode.el b/lisp/ldg-mode.el
index 97662aa3..be825ddb 100644
--- a/lisp/ldg-mode.el
+++ b/lisp/ldg-mode.el
@@ -120,6 +120,7 @@
(define-key map [sort-start] '(menu-item "Mark Sort Beginning" ledger-sort-insert-start-mark))
(define-key map [sort-buff] '(menu-item "Sort Buffer" ledger-sort-buffer))
(define-key map [sort-reg] '(menu-item "Sort Region" ledger-sort-region :enable mark-active))
+ (define-key map [align-reg] '(menu-item "Align Region" ledger-post-align-region :enable mark-active))
(define-key map [sep2] '(menu-item "--"))
(define-key map [copy-xact] '(menu-item "Copy Trans at Point" ledger-copy-transaction))
(define-key map [toggle-post] '(menu-item "Toggle Current Posting" ledger-toggle-current))
diff --git a/lisp/ldg-post.el b/lisp/ldg-post.el
index d37b2f51..3313c8e3 100644
--- a/lisp/ldg-post.el
+++ b/lisp/ldg-post.el
@@ -123,8 +123,8 @@ PROMPT is a string to prompt with. CHOICES is a list of
(- (or (match-end 4)
(match-end 3)) (point))))
-(defun ledger-post-align-postings (&optional column)
- "Align amounts and accounts in the current region.
+(defun ledger-post-align-posting (&optional column)
+ "Align amounts and accounts in the current posting.
This is done so that the last digit falls in COLUMN, which
defaults to 52. ledger-post-account-column positions
the account"
@@ -165,62 +165,16 @@ the account"
(insert " ")))
(forward-line))))))
-(defun ledger-post-align-posting ()
- "Align the amounts in this posting."
- (interactive)
- (save-excursion
- (set-mark (line-beginning-position))
- (goto-char (1+ (line-end-position)))
- (ledger-post-align-postings)))
-
-;;
-;; This is the orignal ledger align amount code it does not attempt to format accounts
-;;
-
-(defun ledger-align-amounts (&optional column)
- "Align amounts and accounts in the current region.
-This is done so that the last digit falls in COLUMN, which
-defaults to 52. ledger-default-acct-transaction-indent positions
-the account"
- (interactive "p")
- (if (or (null column) (= column 1))
- (setq column ledger-post-amount-alignment-column))
+(defun ledger-post-align-region (beg end)
+ (interactive "r")
(save-excursion
- ;; Position the account
- ;; (beginning-of-line)
- (set-mark (point))
- ;; (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)))
- (end (if mark-first (point-marker) (mark-marker)))
- offset)
- ;; Position the amount
- (goto-char begin)
- (while (setq offset (ledger-next-amount end))
- (let ((col (current-column))
- (target-col (- column offset))
- adjust)
- (setq adjust (- target-col col))
- (if (< col target-col)
- (insert (make-string (- target-col col) ? ))
- (move-to-column target-col)
- (if (looking-back " ")
- (delete-char (- col target-col))
- (skip-chars-forward "^ \t")
- (delete-horizontal-space)
- (insert " ")))
- (forward-line))))))
+ (goto-char beg)
+ (backward-paragraph) ;; make sure we are at the beginning of an xact
+ (while (< (point) end)
+ (ledger-post-align-posting)
+ (forward-line))))
-(defun ledger-post-align-amount ()
- "Align the amounts in this posting."
- (interactive)
- (save-excursion
- (set-mark (line-beginning-position))
- (goto-char (1+ (line-end-position)))
- (ledger-align-amounts)))
(defun ledger-post-maybe-align (beg end len)
"Align amounts only if point is in a posting.
@@ -231,7 +185,7 @@ BEG, END, and LEN control how far it can align."
(when (<= end (line-end-position))
(goto-char (line-beginning-position))
(if (looking-at ledger-post-line-regexp)
- (ledger-post-align-postings))))))
+ (ledger-post-align-posting))))))
(defun ledger-post-edit-amount ()
"Call 'calc-mode' and push the amount in the posting to the top of stack."
diff --git a/lisp/ldg-reconcile.el b/lisp/ldg-reconcile.el
index 662ef6c1..c33eef2e 100644
--- a/lisp/ldg-reconcile.el
+++ b/lisp/ldg-reconcile.el
@@ -152,15 +152,20 @@ Return the number of uncleared xacts found."
(erase-buffer)
(prog1 (ledger-do-reconcile)
(set-buffer-modified-p t)
- (goto-char (point-min)))))
+ ;;(goto-char (point-min))
+ )))
(defun ledger-reconcile-refresh-after-save ()
"Refresh the recon-window after the ledger buffer is saved."
- (let ((buf (get-buffer ledger-recon-buffer-name)))
+ (let ((curbuf (current-buffer))
+ (curpoint (point))
+ (buf (get-buffer ledger-recon-buffer-name)))
(if buf
- (with-current-buffer buf
- (ledger-reconcile-refresh)
- (set-buffer-modified-p nil)))))
+ (progn
+ (with-current-buffer buf
+ (ledger-reconcile-refresh)
+ (set-buffer-modified-p nil))
+ (select-window (get-buffer-window curbuf))))))
(defun ledger-reconcile-add ()
"Use ledger xact to add a new transaction."
diff --git a/lisp/ldg-sort.el b/lisp/ldg-sort.el
index 01d8edc9..3ce429fc 100644
--- a/lisp/ldg-sort.el
+++ b/lisp/ldg-sort.el
@@ -76,7 +76,7 @@
(new-end end))
(save-excursion
(save-restriction
- (goto-char beg)
+ (goto-char beg)
(ledger-next-record-function) ;; make sure point is at the
;; beginning of a xact
(setq new-beg (point))