diff options
Diffstat (limited to 'lisp/ledger-xact.el')
-rw-r--r-- | lisp/ledger-xact.el | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/lisp/ledger-xact.el b/lisp/ledger-xact.el index 52b89583..f3721e9e 100644 --- a/lisp/ledger-xact.el +++ b/lisp/ledger-xact.el @@ -1,6 +1,6 @@ ;;; ledger-xact.el --- Helper code for use with the "ledger" command-line tool -;; Copyright (C) 2003-2015 John Wiegley (johnw AT gnu DOT org) +;; Copyright (C) 2003-2016 John Wiegley (johnw AT gnu DOT org) ;; This file is not part of GNU Emacs. @@ -52,20 +52,25 @@ (defvar ledger-xact-highlight-overlay (list)) (make-variable-buffer-local 'ledger-xact-highlight-overlay) +(defun ledger-highlight-make-overlay () + (let ((ovl (make-overlay 1 1))) + (overlay-put ovl 'face 'ledger-font-xact-highlight-face) + (overlay-put ovl 'priority '(nil . 99)) + ovl)) + (defun ledger-highlight-xact-under-point () "Move the highlight overlay to the current transaction." - (if ledger-highlight-xact-under-point - (let ((exts (ledger-navigate-find-element-extents (point))) - (ovl ledger-xact-highlight-overlay)) - (if (not ledger-xact-highlight-overlay) - (setq ovl - (setq ledger-xact-highlight-overlay - (make-overlay (car exts) - (cadr exts) - (current-buffer) t nil))) - (move-overlay ovl (car exts) (cadr exts))) - (overlay-put ovl 'face 'ledger-font-xact-highlight-face) - (overlay-put ovl 'priority '(nil . 99))))) + (when ledger-highlight-xact-under-point + (unless ledger-xact-highlight-overlay + (setq ledger-xact-highlight-overlay (ledger-highlight-make-overlay))) + (let ((exts (ledger-navigate-find-element-extents (point)))) + (let ((b (car exts)) + (e (cadr exts)) + (p (point))) + (if (and (> (- e b) 1) ; not an empty line + (<= p e) (>= p b)) ; point is within the boundaries + (move-overlay ledger-xact-highlight-overlay b (+ 1 e)) + (move-overlay ledger-xact-highlight-overlay 1 1)))))) (defun ledger-xact-payee () "Return the payee of the transaction containing point or nil." @@ -97,9 +102,8 @@ MOMENT is an encoded date" (when (and (eobp) last-xact-start) (let ((end (cadr (ledger-navigate-find-xact-extents last-xact-start)))) (goto-char end) - (if (eobp) - (insert "\n") - (forward-line)))))) + (insert "\n") + (forward-line))))) (defun ledger-xact-iterate-transactions (callback) "Iterate through each transaction call CALLBACK for each." @@ -194,8 +198,8 @@ correct chronological place in the buffer." (goto-char (point-min)) (if (looking-at "Error: ") (error (concat "Error in ledger-add-transaction: " (buffer-string))) - (ledger-post-align-postings (point-min) (point-max)) - (buffer-string))) + (ledger-post-align-postings (point-min) (point-max)) + (buffer-string))) "\n")) (progn (insert (car args) " \n\n") |