summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorCraig Earls <enderw88@gmail.com>2013-04-02 14:20:29 -0700
committerCraig Earls <enderw88@gmail.com>2013-04-02 14:20:29 -0700
commit86d0fd87c49e20b0f5262e7ae48234986584b750 (patch)
treebf0ce6f235ea7a885bc334a3091625fe44891416 /lisp
parent70bbc81299704b57191b1313ea44bf955345079d (diff)
downloadfork-ledger-86d0fd87c49e20b0f5262e7ae48234986584b750.tar.gz
fork-ledger-86d0fd87c49e20b0f5262e7ae48234986584b750.tar.bz2
fork-ledger-86d0fd87c49e20b0f5262e7ae48234986584b750.zip
Fixes bug 904, failure to highly pending postings. Adds two new faces for pending and cleared posting.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ldg-fonts.el31
-rw-r--r--lisp/ldg-post.el4
-rw-r--r--lisp/ldg-regex.el24
3 files changed, 48 insertions, 11 deletions
diff --git a/lisp/ldg-fonts.el b/lisp/ldg-fonts.el
index 3a7d1e0a..81196c10 100644
--- a/lisp/ldg-fonts.el
+++ b/lisp/ldg-fonts.el
@@ -26,6 +26,8 @@
;;; Code:
+(require 'ldg-regex)
+
(defgroup ledger-faces nil "Ledger mode highlighting" :group 'ledger)
(defface ledger-font-uncleared-face
`((t :foreground "#dc322f" :weight bold ))
@@ -57,6 +59,16 @@
"Face for Ledger accounts"
: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
`((t :foreground "yellow" ))
"Face for Ledger amounts"
@@ -99,16 +111,17 @@
(defvar ledger-font-lock-keywords
- '(("^[0-9]+[-/.=][-/.=0-9]+\\s-\\!\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" 2 'ledger-font-pending-face)
- ("^[0-9]+[-/.=][-/.=0-9]+\\s-\\*\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" 2 'ledger-font-cleared-face)
- ("^[0-9]+[-/.=][-/.=0-9]+\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" 2 'ledger-font-uncleared-face)
- ("^\\s-+\\([*]\\s-*\\)?\\(\\([[(]\\)?[^*:
- ]+?:\\([^]);
- ]\\|\\s-\\)+?\\([])]\\)?\\)\\( \\| \\|$\\)"
+ `((,ledger-payee-pending-regex 2 'ledger-font-pending-face)
+ (,ledger-payee-cleared-regex 2 'ledger-font-cleared-face)
+ (,ledger-payee-uncleared-regex 2 'ledger-font-uncleared-face)
+ (,ledger-posting-account-cleared-regex
+ 2 'ledger-font-posting-account-cleared-face)
+ (,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-comment-face) ; works
- ("^\\([~=].+\\)" 1 ledger-font-other-face)
- ("^\\([A-Za-z]+ .+\\)" 1 ledger-font-other-face))
+ (,ledger-comment-regex 2 'ledger-font-comment-face) ; works
+ (,ledger-other-entries-regex 1 ledger-font-other-face))
"Expressions to highlight in Ledger mode.")
diff --git a/lisp/ldg-post.el b/lisp/ldg-post.el
index 554b8578..f29d8af8 100644
--- a/lisp/ldg-post.el
+++ b/lisp/ldg-post.el
@@ -136,14 +136,14 @@ point at beginning of the commodity."
(match-end 3)) (point))))
(defvar ledger-post-account-regex
- "\\(^[ \t]+\\)\\(.+?\\)\\( \\|\n\\)")
+ "\\(^[ \t]+\\)\\([!*]?.+?\\)\\( \\|$\\)")
(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.
Return the column of the beginning of the account and leave point
at beginning of account"
(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
(goto-char (match-beginning 2))
(current-column))))
diff --git a/lisp/ldg-regex.el b/lisp/ldg-regex.el
index 97fd6e2c..7c92bf15 100644
--- a/lisp/ldg-regex.el
+++ b/lisp/ldg-regex.el
@@ -24,6 +24,30 @@
(eval-when-compile
(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
"\\([0-9]+\\)[/-]\\([0-9]+\\)[/-]\\([0-9]+\\)")