diff options
Diffstat (limited to 'lisp/ledger.el')
-rw-r--r-- | lisp/ledger.el | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/lisp/ledger.el b/lisp/ledger.el index a649250d..be730fd9 100644 --- a/lisp/ledger.el +++ b/lisp/ledger.el @@ -128,17 +128,17 @@ text that should replace the format specifier." (defvar bold 'bold) (defvar ledger-font-lock-keywords - '(("^[0-9./=]+\\s-+\\(?:([^)]+)\\s-+\\)?\\([^*].+\\)" 1 bold) - ("\s \\{5,\\}\\([$]-[0-9][0-9,.]*\\)" 1 font-lock-warning-face) - ("\s \\{5,\\}\\(-?[0-9][0-9,.]*\\)" 1 font-lock-type-face) - ("^\\s-+.+?\\( \\|\t\\|\n\\|\\s-+$\\)" . font-lock-keyword-face) - ("^\s +\\((\\)\\([A-Za-z0-9]+:[A-Za-z0-9]+[A-Za-z0-9: ]*\\)\\()\\)" - (1 font-lock-function-name-face) - (2 font-lock-variable-name-face) - (3 font-lock-function-name-face)) - ("^[0-9]+[/-][0-9]+.*\\([*]\\)" 1 bold) - ("^\\([~=]\\)\\s " 1 font-lock-function-name-face)) - "Improved expressions to highlight in Ledger mode.") + '(("\\( \\| \\|^\\)\\(;.*\\)" 2 font-lock-comment-face) + ("^[0-9]+[-/.=][-/.=0-9]+\\s-+\\(([^)]+)\\s-+\\)?\\([^*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" 2 bold) + ;;("^[0-9]+[-/.=][-/.=0-9]+\\s-+\\(([^)]+)\\s-+\\)?\\([*].+?\\)\\(\\( ;\\| ;\\|$\\)\\)" + ;; 2 font-lock-type-face) + ("^\\s-+\\([*]\\s-*\\)?\\(\\([[(]\\)?[^*: + ]+?:[^]); + ]+?\\([])]\\)?\\)\\( \\| \\|$\\)" + 2 font-lock-keyword-face) + ("^\\([~=].+\\)" 1 font-lock-function-name-face) + ("^\\([A-Za-z]+ .+\\)" 1 font-lock-function-name-face)) + "Expressions to highlight in Ledger mode.") (defsubst ledger-current-year () (format-time-string "%Y")) @@ -225,9 +225,7 @@ Return the difference in the format of a time value." (mapcar 'eval args))) (goto-char (point-min)) (if (looking-at "Error: ") - (progn - (message (buffer-string)) - (error)) + (error (buffer-string)) (buffer-string))) "\n")))) @@ -415,8 +413,20 @@ dropped." (defun ledger-toggle-current (&optional style) (interactive) - (if ledger-clear-whole-entries - (ledger-toggle-current-entry style) + (if (or ledger-clear-whole-entries + (eq 'entry (ledger-thing-at-point))) + (progn + (save-excursion + (forward-line) + (goto-char (line-beginning-position)) + (while (and (not (eolp)) + (save-excursion + (not (eq 'entry (ledger-thing-at-point))))) + (if (looking-at "\\s-+[*!]") + (ledger-toggle-current-transaction nil)) + (forward-line) + (goto-char (line-beginning-position)))) + (ledger-toggle-current-entry style)) (ledger-toggle-current-transaction style))) (defvar ledger-mode-abbrev-table) @@ -483,7 +493,7 @@ dropped." (account ledger-acct) (inhibit-read-only t) cleared) - (when (equal (car where) "<stdin>") + (when (or (equal (car where) "<stdin>") (equal (car where) "/dev/stdin")) (with-current-buffer ledger-buf (goto-char (cdr where)) (setq cleared (ledger-toggle-current 'pending))) @@ -522,7 +532,7 @@ dropped." (defun ledger-reconcile-delete () (interactive) (let ((where (get-text-property (point) 'where))) - (when (equal (car where) "<stdin>") + (when (or (equal (car where) "<stdin>") (equal (car where) "/dev/stdin")) (with-current-buffer ledger-buf (goto-char (cdr where)) (ledger-delete-current-entry)) @@ -534,7 +544,7 @@ dropped." (defun ledger-reconcile-visit () (interactive) (let ((where (get-text-property (point) 'where))) - (when (equal (car where) "<stdin>") + (when (or (equal (car where) "<stdin>") (equal (car where) "/dev/stdin")) (switch-to-buffer-other-window ledger-buf) (goto-char (cdr where))))) @@ -557,7 +567,7 @@ dropped." (let ((where (get-text-property (point) 'where)) (face (get-text-property (point) 'face))) (if (and (eq face 'bold) - (equal (car where) "<stdin>")) + (or (equal (car where) "<stdin>") (equal (car where) "/dev/stdin"))) (with-current-buffer ledger-buf (goto-char (cdr where)) (ledger-toggle-current 'cleared)))) |