Added a copy transaction function to ledger-mode

This commit is contained in:
Craig Earls 2013-02-14 13:20:16 -07:00
parent 67201ee850
commit 6eb97a7c38
2 changed files with 29 additions and 7 deletions

View file

@ -71,16 +71,17 @@ customizable to ease retro-entry.")
(let ((map (current-local-map)))
(define-key map [(control ?c) (control ?a)] 'ledger-add-transaction)
(define-key map [(control ?c) (control ?d)] 'ledger-delete-current-transaction)
(define-key map [(control ?c) (control ?y)] 'ledger-set-year)
(define-key map [(control ?c) (control ?m)] 'ledger-set-month)
(define-key map [(control ?c) (control ?b)] 'ledger-post-edit-amount)
(define-key map [(control ?c) (control ?c)] 'ledger-toggle-current)
(define-key map [(control ?c) (control ?d)] 'ledger-delete-current-transaction)
(define-key map [(control ?c) (control ?e)] 'ledger-toggle-current-transaction)
(define-key map [(control ?c) (control ?f)] 'ledger-occur)
(define-key map [(control ?c) (control ?k)] 'ledger-copy-transaction)
(define-key map [(control ?c) (control ?m)] 'ledger-set-month)
(define-key map [(control ?c) (control ?r)] 'ledger-reconcile)
(define-key map [(control ?c) (control ?s)] 'ledger-sort-region)
(define-key map [(control ?c) (control ?t)] 'ledger-test-run)
(define-key map [(control ?c) (control ?b)] 'ledger-post-edit-amount)
(define-key map [(control ?c) (control ?f)] 'ledger-occur)
(define-key map [(control ?c) (control ?y)] 'ledger-set-year)
(define-key map [tab] 'pcomplete)
(define-key map [(control ?i)] 'pcomplete)
(define-key map [(control ?c) tab] 'ledger-fully-complete-entry)
@ -114,6 +115,7 @@ customizable to ease retro-entry.")
(define-key map [sort-buff] '(menu-item "Sort Buffer" ledger-sort-buffer))
(define-key map [sort-reg] '(menu-item "Sort Region" ledger-sort-region :enable mark-active))
(define-key map [sep2] '(menu-item "--"))
(define-key map [copy-xact] '(menu-item "Copy Trans at Point" ledger-copy-transaction))
(define-key map [toggle-post] '(menu-item "Toggle Current Posting" ledger-toggle-current))
(define-key map [toggle-xact] '(menu-item "Toggle Current Transaction" ledger-toggle-current-entry))
(define-key map [sep4] '(menu-item "--"))

View file

@ -27,8 +27,6 @@
:type 'boolean
:group 'ledger)
(defvar highlight-overlay (list))
(defun ledger-find-xact-extents (pos)
@ -92,4 +90,26 @@
(t
(ignore (goto-char here))))))
(defun ledger-copy-transaction-at-point (date)
(interactive (list
(read-string "Copy to date: "
(concat ledger-year "/" ledger-month "/"))))
(let* ((here (point))
(extents (ledger-find-xact-extents (point)))
(transaction (buffer-substring (car extents) (cadr extents)))
encoded-date)
(if (string-match "\\([0-9]+\\)/\\([0-9]+\\)/\\([0-9]+\\)" date)
(setq encoded-date
(encode-time 0 0 0 (string-to-number (match-string 3 date))
(string-to-number (match-string 2 date))
(string-to-number (match-string 1 date)))))
(ledger-find-slot encoded-date)
(insert transaction "\n")
(backward-paragraph)
(re-search-forward "\\([0-9]+\\)/\\([0-9]+\\)/\\([0-9]+\\)")
(replace-match date)
(re-search-forward "[1-9][0-9]+\.[0-9]+")))
(provide 'ldg-xact)