Merge commit '64426842a34f0517e43a47a404cd15c764f1c7f2' into next

This commit is contained in:
Craig Earls 2015-09-28 19:00:01 -07:00
commit 1cf83c6f5f
4 changed files with 32 additions and 12 deletions

View file

@ -5902,6 +5902,7 @@ or testing small journal files not associated with your main financial
database. database.
@item --debug @var{CODE} @item --debug @var{CODE}
@value{FIXME:UNDOCUMENTED}
If ledger has been built with debug options this will provide extra data during If ledger has been built with debug options this will provide extra data during
the run. the run.
@ -6756,8 +6757,8 @@ week.
@item --subtotal @item --subtotal
@itemx -s @itemx -s
Group all postings together. This is very similar to the totals shown by Cause all transactions in a @command{register} report to be collapsed
the balance report. into a single, subtotaled transaction.
@item --tail @var{INT} @item --tail @var{INT}
@itemx --last @var{INT} @itemx --last @var{INT}
@ -8246,8 +8247,8 @@ Evaluate @var{string} as format just like the @option{--format} option.
@end defun @end defun
@defun format_date date format @defun format_date date format
Return the @var{date} as a string using @var{format}. See strftime (3) Return the @var{date} as a string using @var{format}. See
for format string details. @code{strftime (3)} for format string details.
@smallexample @c command:9605B13,with_input:3406FC1 @smallexample @c command:9605B13,with_input:3406FC1
$ ledger -f expr.dat --format "%(format_date(date, '%A, %B %d. %Y'))\n" reg assets $ ledger -f expr.dat --format "%(format_date(date, '%A, %B %d. %Y'))\n" reg assets
@end smallexample @end smallexample
@ -8257,8 +8258,8 @@ Friday, January 16. 2015
@end defun @end defun
@defun format_datetime datetime format @defun format_datetime datetime format
Return the @var{datetime} as a string using @var{format}. Refer to strftime (3) Return the @var{datetime} as a string using @var{format}. Refer to
for format string details. @code{strftime (3)} for format string details.
@end defun @end defun
@defun get_at sequence index @defun get_at sequence index
@ -8599,8 +8600,8 @@ $ ledger -f expr.dat --format "%12(5*O)\n" reg assets
@end smallexample @end smallexample
@item [DATEFMT] @item [DATEFMT]
Inserts the result of formatting a posting's date with a date Inserts the result of formatting a posting's date with a date format
format string, exactly like those supported by strftime (3). For string, exactly like those supported by @code{strftime (3)}. For
example: @samp{%[%Y/%m/%d %H:%M:%S]}. example: @samp{%[%Y/%m/%d %H:%M:%S]}.
@item S @item S

View file

@ -285,6 +285,7 @@ With a prefix argument, remove the effective date."
(define-key map [(meta ?p)] 'ledger-navigate-prev-xact-or-directive) (define-key map [(meta ?p)] 'ledger-navigate-prev-xact-or-directive)
(define-key map [(meta ?n)] 'ledger-navigate-next-xact-or-directive) (define-key map [(meta ?n)] 'ledger-navigate-next-xact-or-directive)
(define-key map [(meta ?q)] 'ledger-post-align-dwim)
map) map)
"Keymap for `ledger-mode'.") "Keymap for `ledger-mode'.")

View file

@ -79,8 +79,7 @@ point at beginning of the commodity."
(when (re-search-forward ledger-amount-regex end t) (when (re-search-forward ledger-amount-regex end t)
(goto-char (match-beginning 0)) (goto-char (match-beginning 0))
(skip-syntax-forward " ") (skip-syntax-forward " ")
(- (or (match-end 4) (- (match-end 3) (point)))))
(match-end 3)) (point)))))
(defun ledger-next-account (&optional end) (defun ledger-next-account (&optional end)
"Move to the beginning of the posting, or status marker, limit to END. "Move to the beginning of the posting, or status marker, limit to END.
@ -146,6 +145,19 @@ at beginning of account"
(setq lines-left (not (eobp))))) (setq lines-left (not (eobp)))))
(setq inhibit-modification-hooks nil)))) (setq inhibit-modification-hooks nil))))
(defun ledger-post-align-dwim ()
"Align all the posting of the current xact or the current region.
If the point is in a comment, fill the comment paragraph as
regular text."
(interactive)
(cond
((nth 4 (syntax-ppss))
(call-interactively 'ledger-post-align-postings)
(fill-paragraph))
((use-region-p) (call-interactively 'ledger-post-align-postings))
(t (call-interactively 'ledger-post-align-xact))))
(defun ledger-post-edit-amount () (defun ledger-post-edit-amount ()
"Call 'calc-mode' and push the amount in the posting to the top of stack." "Call 'calc-mode' and push the amount in the posting to the top of stack."
(interactive) (interactive)

View file

@ -27,8 +27,14 @@
(defconst ledger-amount-regex (defconst ledger-amount-regex
(concat "\\( \\|\t\\| \t\\)[ \t]*-?" (concat "\\( \\|\t\\| \t\\)[ \t]*-?"
"\\([A-Z$€£₹_(]+ *\\)?" "\\([A-Z$€£₹_(]+ *\\)?"
"\\(-?[0-9,\\.]+?\\)" ;; We either match just a number after the commodity with no
"\\(.[0-9)]+\\)?" ;; decimal or thousand separators or a number with thousand
;; separators. If we have a decimal part starting with `,'
;; or `.', because the match is non-greedy, it must leave at
;; least one of those symbols for the following capture
;; group, which then finishes the decimal part.
"\\(-?\\(?:[0-9]+\\|[0-9,.]+?\\)\\)"
"\\([,.][0-9)]+\\)?"
"\\( *[[:word:]€£₹_\"]+\\)?" "\\( *[[:word:]€£₹_\"]+\\)?"
"\\([ \t]*[@={]@?[^\n;]+?\\)?" "\\([ \t]*[@={]@?[^\n;]+?\\)?"
"\\([ \t]+;.+?\\|[ \t]*\\)?$")) "\\([ \t]+;.+?\\|[ \t]*\\)?$"))