Fixes bug 904, failure to highly pending postings. Adds two new faces for pending and cleared posting.

This commit is contained in:
Craig Earls 2013-04-02 14:20:29 -07:00
parent 70bbc81299
commit 86d0fd87c4
4 changed files with 53 additions and 11 deletions

View file

@ -672,6 +672,11 @@ Default face for pending (!) transactions
Default face for other transactions Default face for other transactions
@item ledger-font-posting-account-face @item ledger-font-posting-account-face
Face for Ledger accounts Face for Ledger accounts
@item ledger-font-posting-account-cleared-face
Face for cleared Ledger accounts
@item ledger-font-posting-account-pending-face
Face for Ledger pending accounts
@item ledger-font-posting-amount-face @item ledger-font-posting-amount-face
Face for Ledger amounts Face for Ledger amounts
@item ledger-occur-narrowed-face @item ledger-occur-narrowed-face

View file

@ -26,6 +26,8 @@
;;; Code: ;;; Code:
(require 'ldg-regex)
(defgroup ledger-faces nil "Ledger mode highlighting" :group 'ledger) (defgroup ledger-faces nil "Ledger mode highlighting" :group 'ledger)
(defface ledger-font-uncleared-face (defface ledger-font-uncleared-face
`((t :foreground "#dc322f" :weight bold )) `((t :foreground "#dc322f" :weight bold ))
@ -57,6 +59,16 @@
"Face for Ledger accounts" "Face for Ledger accounts"
:group 'ledger-faces) :group 'ledger-faces)
(defface ledger-font-posting-account-cleared-face
`((t :foreground "#657b83" ))
"Face for Ledger accounts"
:group 'ledger-faces)
(defface ledger-font-posting-account-pending-face
`((t :foreground "#cb4b16" ))
"Face for Ledger accounts"
:group 'ledger-faces)
(defface ledger-font-posting-amount-face (defface ledger-font-posting-amount-face
`((t :foreground "yellow" )) `((t :foreground "yellow" ))
"Face for Ledger amounts" "Face for Ledger amounts"
@ -99,16 +111,17 @@
(defvar ledger-font-lock-keywords (defvar ledger-font-lock-keywords
'(("^[0-9]+[-/.=][-/.=0-9]+\\s-\\!\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" 2 'ledger-font-pending-face) `((,ledger-payee-pending-regex 2 'ledger-font-pending-face)
("^[0-9]+[-/.=][-/.=0-9]+\\s-\\*\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" 2 'ledger-font-cleared-face) (,ledger-payee-cleared-regex 2 'ledger-font-cleared-face)
("^[0-9]+[-/.=][-/.=0-9]+\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" 2 'ledger-font-uncleared-face) (,ledger-payee-uncleared-regex 2 'ledger-font-uncleared-face)
("^\\s-+\\([*]\\s-*\\)?\\(\\([[(]\\)?[^*: (,ledger-posting-account-cleared-regex
]+?:\\([^]); 2 'ledger-font-posting-account-cleared-face)
]\\|\\s-\\)+?\\([])]\\)?\\)\\( \\| \\|$\\)" (,ledger-posting-account-pending-regex
2 'ledger-font-posting-account-pending-face) ; works
(,ledger-posting-account-all-regex
2 'ledger-font-posting-account-face) ; works 2 'ledger-font-posting-account-face) ; works
("\\( \\| \\|^\\)\\(;.*\\)" 2 'ledger-font-comment-face) ; works (,ledger-comment-regex 2 'ledger-font-comment-face) ; works
("^\\([~=].+\\)" 1 ledger-font-other-face) (,ledger-other-entries-regex 1 ledger-font-other-face))
("^\\([A-Za-z]+ .+\\)" 1 ledger-font-other-face))
"Expressions to highlight in Ledger mode.") "Expressions to highlight in Ledger mode.")

View file

@ -136,14 +136,14 @@ point at beginning of the commodity."
(match-end 3)) (point)))) (match-end 3)) (point))))
(defvar ledger-post-account-regex (defvar ledger-post-account-regex
"\\(^[ \t]+\\)\\(.+?\\)\\( \\|\n\\)") "\\(^[ \t]+\\)\\([!*]?.+?\\)\\( \\|$\\)")
(defun ledger-next-account (&optional end) (defun ledger-next-account (&optional end)
"Move point to the beginning of the next account, or status marker (!*), as long as it is not past END. "Move point to the beginning of the next account, or status marker (!*), as long as it is not past END.
Return the column of the beginning of the account and leave point Return the column of the beginning of the account and leave point
at beginning of account" at beginning of account"
(if (> end (point)) (if (> end (point))
(when (re-search-forward ledger-post-account-regex (1+ end) t) (when (re-search-forward ledger-posting-account-all-regex (1+ end) t)
;; the 1+ is to make sure we can catch the newline ;; the 1+ is to make sure we can catch the newline
(goto-char (match-beginning 2)) (goto-char (match-beginning 2))
(current-column)))) (current-column))))

View file

@ -24,6 +24,30 @@
(eval-when-compile (eval-when-compile
(require 'cl)) (require 'cl))
(defvar ledger-other-entries-regex
"^\\(\\([~=].+\\)\\|\\(^\\([A-Za-z]+ .+\\)\\)\\)")
(defvar ledger-comment-regex
"\\( \\| \\|^\\)\\(;.*\\)")
(defvar ledger-payee-pending-regex
"^[0-9]+[-/.=][-/.=0-9]+\\s-\\!\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)")
(defvar ledger-payee-cleared-regex
"^[0-9]+[-/.=][-/.=0-9]+\\s-\\*\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)")
(defvar ledger-payee-uncleared-regex
"^[0-9]+[-/.=][-/.=0-9]+\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)")
(defvar ledger-posting-account-all-regex
"\\(^[ \t]+\\)\\(.+?\\)\\( \\|$\\)")
(defvar ledger-posting-account-cleared-regex
"\\(^[ \t]+\\)\\(\\*.+?\\)\\( \\|$\\)")
(defvar ledger-posting-account-pending-regex
"\\(^[ \t]+\\)\\(!.+?\\)\\( \\|$\\)")
(defvar ledger-date-regex (defvar ledger-date-regex
"\\([0-9]+\\)[/-]\\([0-9]+\\)[/-]\\([0-9]+\\)") "\\([0-9]+\\)[/-]\\([0-9]+\\)[/-]\\([0-9]+\\)")