Merge branch 'master' into ledger-mode-automatic-transactions
Conflicts: lisp/ledger-init.el lisp/ledger-mode.el lisp/ledger-reconcile.el lisp/ledger-schedule.el
This commit is contained in:
commit
0d4641acc2
19 changed files with 435 additions and 437 deletions
300
lisp/ldg-mode.el
300
lisp/ldg-mode.el
|
|
@ -1,300 +0,0 @@
|
||||||
;;; ldg-mode.el --- Helper code for use with the "ledger" command-line tool
|
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
|
||||||
|
|
||||||
;; This file is not part of GNU Emacs.
|
|
||||||
|
|
||||||
;; This is free software; you can redistribute it and/or modify it under
|
|
||||||
;; the terms of the GNU General Public License as published by the Free
|
|
||||||
;; Software Foundation; either version 2, or (at your option) any later
|
|
||||||
;; version.
|
|
||||||
;;
|
|
||||||
;; This is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
;; for more details.
|
|
||||||
;;
|
|
||||||
;; You should have received a copy of the GNU General Public License
|
|
||||||
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
|
||||||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
|
||||||
;; MA 02111-1307, USA.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
;; Most of the general ledger-mode code is here.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'ldg-regex)
|
|
||||||
(require 'esh-util)
|
|
||||||
(require 'esh-arg)
|
|
||||||
(require 'ldg-commodities)
|
|
||||||
(require 'ldg-complete)
|
|
||||||
(require 'ldg-context)
|
|
||||||
(require 'ldg-exec)
|
|
||||||
(require 'ldg-fonts)
|
|
||||||
(require 'ldg-init)
|
|
||||||
(require 'ldg-occur)
|
|
||||||
(require 'ldg-post)
|
|
||||||
(require 'ldg-reconcile)
|
|
||||||
(require 'ldg-report)
|
|
||||||
(require 'ldg-sort)
|
|
||||||
(require 'ldg-state)
|
|
||||||
(require 'ldg-test)
|
|
||||||
(require 'ldg-texi)
|
|
||||||
(require 'ldg-xact)
|
|
||||||
(require 'ldg-schedule)
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(defgroup ledger nil
|
|
||||||
"Interface to the Ledger command-line accounting program."
|
|
||||||
:group 'data)
|
|
||||||
|
|
||||||
(defconst ledger-version "3.0"
|
|
||||||
"The version of ledger.el currently loaded.")
|
|
||||||
|
|
||||||
(defconst ledger-mode-version "3.0.0")
|
|
||||||
|
|
||||||
(defun ledger-mode-dump-variable (var)
|
|
||||||
(if var
|
|
||||||
(insert (format " %s: %S\n" (symbol-name var) (eval var)))))
|
|
||||||
|
|
||||||
(defun ledger-mode-dump-group (group)
|
|
||||||
"Dump GROUP customizations to current buffer"
|
|
||||||
(let ((members (custom-group-members group nil)))
|
|
||||||
(dolist (member members)
|
|
||||||
(cond ((eq (cadr member) 'custom-group)
|
|
||||||
(insert (format "Group %s:\n" (symbol-name (car member))))
|
|
||||||
(ledger-mode-dump-group (car member)))
|
|
||||||
((eq (cadr member) 'custom-variable)
|
|
||||||
(ledger-mode-dump-variable (car member)))))))
|
|
||||||
|
|
||||||
(defun ledger-mode-dump-configuration ()
|
|
||||||
"Dump all customizations"
|
|
||||||
(find-file "ledger-mode-dump")
|
|
||||||
(ledger-mode-dump-group 'ledger))
|
|
||||||
|
|
||||||
|
|
||||||
(defsubst ledger-current-year ()
|
|
||||||
"The default current year for adding transactions."
|
|
||||||
(format-time-string "%Y"))
|
|
||||||
(defsubst ledger-current-month ()
|
|
||||||
"The default current month for adding transactions."
|
|
||||||
(format-time-string "%m"))
|
|
||||||
|
|
||||||
(defvar ledger-year (ledger-current-year)
|
|
||||||
"Start a ledger session with the current year, but make it customizable to ease retro-entry.")
|
|
||||||
|
|
||||||
(defvar ledger-month (ledger-current-month)
|
|
||||||
"Start a ledger session with the current month, but make it customizable to ease retro-entry.")
|
|
||||||
|
|
||||||
(defun ledger-read-account-with-prompt (prompt)
|
|
||||||
(let* ((context (ledger-context-at-point))
|
|
||||||
(default (if (and (eq (ledger-context-line-type context) 'acct-transaction)
|
|
||||||
(eq (ledger-context-current-field context) 'account))
|
|
||||||
(regexp-quote (ledger-context-field-value context 'account))
|
|
||||||
nil)))
|
|
||||||
(ledger-read-string-with-default prompt default)))
|
|
||||||
|
|
||||||
(defun ledger-read-string-with-default (prompt default)
|
|
||||||
"Return user supplied string after PROMPT, or DEFAULT."
|
|
||||||
(read-string (concat prompt
|
|
||||||
(if default
|
|
||||||
(concat " (" default "): ")
|
|
||||||
": "))
|
|
||||||
nil 'ledger-minibuffer-history default))
|
|
||||||
|
|
||||||
(defun ledger-display-balance-at-point ()
|
|
||||||
"Display the cleared-or-pending balance.
|
|
||||||
And calculate the target-delta of the account being reconciled."
|
|
||||||
(interactive)
|
|
||||||
(let* ((account (ledger-read-account-with-prompt "Account balance to show"))
|
|
||||||
(buffer (current-buffer))
|
|
||||||
(balance (with-temp-buffer
|
|
||||||
(ledger-exec-ledger buffer (current-buffer) "cleared" account)
|
|
||||||
(if (> (buffer-size) 0)
|
|
||||||
(buffer-substring-no-properties (point-min) (1- (point-max)))
|
|
||||||
(concat account " is empty.")))))
|
|
||||||
(when balance
|
|
||||||
(message balance))))
|
|
||||||
|
|
||||||
(defun ledger-display-ledger-stats ()
|
|
||||||
"Display the cleared-or-pending balance.
|
|
||||||
And calculate the target-delta of the account being reconciled."
|
|
||||||
(interactive)
|
|
||||||
(let* ((buffer (current-buffer))
|
|
||||||
(balance (with-temp-buffer
|
|
||||||
(ledger-exec-ledger buffer (current-buffer) "stats")
|
|
||||||
(buffer-substring-no-properties (point-min) (1- (point-max))))))
|
|
||||||
(when balance
|
|
||||||
(message balance))))
|
|
||||||
|
|
||||||
(defun ledger-magic-tab (&optional interactively)
|
|
||||||
"Decide what to with with <TAB>.
|
|
||||||
Can indent, complete or align depending on context."
|
|
||||||
(interactive "p")
|
|
||||||
(if (= (point) (line-beginning-position))
|
|
||||||
(indent-to ledger-post-account-alignment-column)
|
|
||||||
(if (and (> (point) 1)
|
|
||||||
(looking-back "\\([^ \t]\\)" 1))
|
|
||||||
(ledger-pcomplete interactively)
|
|
||||||
(ledger-post-align-postings))))
|
|
||||||
|
|
||||||
(defvar ledger-mode-abbrev-table)
|
|
||||||
|
|
||||||
(defun ledger-insert-effective-date ()
|
|
||||||
(interactive)
|
|
||||||
(let ((context (car (ledger-context-at-point)))
|
|
||||||
(date-string (format-time-string (cdr (assoc "date-format" ledger-environment-alist)))))
|
|
||||||
(cond ((eq 'xact context)
|
|
||||||
(beginning-of-line)
|
|
||||||
(insert date-string "="))
|
|
||||||
((eq 'acct-transaction context)
|
|
||||||
(end-of-line)
|
|
||||||
(insert " ; [=" date-string "]")))))
|
|
||||||
|
|
||||||
(defun ledger-mode-remove-extra-lines ()
|
|
||||||
(goto-char (point-min))
|
|
||||||
(while (re-search-forward "\n\n\\(\n\\)+" nil t)
|
|
||||||
(replace-match "\n\n")))
|
|
||||||
|
|
||||||
(defun ledger-mode-clean-buffer ()
|
|
||||||
"indent, remove multiple linfe feeds and sort the buffer"
|
|
||||||
(interactive)
|
|
||||||
(ledger-sort-buffer)
|
|
||||||
(ledger-post-align-postings (point-min) (point-max))
|
|
||||||
(ledger-mode-remove-extra-lines))
|
|
||||||
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(define-derived-mode ledger-mode text-mode "Ledger"
|
|
||||||
"A mode for editing ledger data files."
|
|
||||||
(ledger-check-version)
|
|
||||||
(ledger-check-schedule-available)
|
|
||||||
(ledger-post-setup)
|
|
||||||
|
|
||||||
(set (make-local-variable 'comment-start) " ; ")
|
|
||||||
(set (make-local-variable 'comment-end) "")
|
|
||||||
(set (make-local-variable 'indent-tabs-mode) nil)
|
|
||||||
|
|
||||||
(if (boundp 'font-lock-defaults)
|
|
||||||
(set (make-local-variable 'font-lock-defaults)
|
|
||||||
'(ledger-font-lock-keywords nil t)))
|
|
||||||
(setq font-lock-extend-region-functions
|
|
||||||
(list #'font-lock-extend-region-wholelines))
|
|
||||||
(setq font-lock-multiline nil)
|
|
||||||
|
|
||||||
(set (make-local-variable 'pcomplete-parse-arguments-function)
|
|
||||||
'ledger-parse-arguments)
|
|
||||||
(set (make-local-variable 'pcomplete-command-completion-function)
|
|
||||||
'ledger-complete-at-point)
|
|
||||||
(set (make-local-variable 'pcomplete-termination-string) "")
|
|
||||||
|
|
||||||
(add-hook 'post-command-hook 'ledger-highlight-xact-under-point nil t)
|
|
||||||
(add-hook 'before-revert-hook 'ledger-occur-remove-all-overlays nil t)
|
|
||||||
(make-variable-buffer-local 'highlight-overlay)
|
|
||||||
|
|
||||||
(ledger-init-load-init-file)
|
|
||||||
|
|
||||||
(set (make-local-variable 'indent-region-function) 'ledger-post-align-postings)
|
|
||||||
|
|
||||||
(let ((map (current-local-map)))
|
|
||||||
(define-key map [(control ?c) (control ?a)] 'ledger-add-transaction)
|
|
||||||
(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-at-point)
|
|
||||||
(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-insert-effective-date)
|
|
||||||
(define-key map [(control ?c) (control ?u)] 'ledger-schedule-upcoming)
|
|
||||||
(define-key map [(control ?c) (control ?y)] 'ledger-set-year)
|
|
||||||
(define-key map [(control ?c) (control ?p)] 'ledger-display-balance-at-point)
|
|
||||||
(define-key map [(control ?c) (control ?l)] 'ledger-display-ledger-stats)
|
|
||||||
(define-key map [(control ?c) (control ?q)] 'ledger-post-align-xact)
|
|
||||||
|
|
||||||
(define-key map [tab] 'ledger-magic-tab)
|
|
||||||
(define-key map [(control tab)] 'ledger-post-align-xact)
|
|
||||||
(define-key map [(control ?i)] 'ledger-magic-tab)
|
|
||||||
(define-key map [(control ?c) tab] 'ledger-fully-complete-xact)
|
|
||||||
(define-key map [(control ?c) (control ?i)] 'ledger-fully-complete-xact)
|
|
||||||
|
|
||||||
(define-key map [(control ?c) (control ?o) (control ?a)] 'ledger-report-redo)
|
|
||||||
(define-key map [(control ?c) (control ?o) (control ?e)] 'ledger-report-edit)
|
|
||||||
(define-key map [(control ?c) (control ?o) (control ?g)] 'ledger-report-goto)
|
|
||||||
(define-key map [(control ?c) (control ?o) (control ?k)] 'ledger-report-kill)
|
|
||||||
(define-key map [(control ?c) (control ?o) (control ?r)] 'ledger-report)
|
|
||||||
(define-key map [(control ?c) (control ?o) (control ?s)] 'ledger-report-save)
|
|
||||||
|
|
||||||
(define-key map [(meta ?p)] 'ledger-post-prev-xact)
|
|
||||||
(define-key map [(meta ?n)] 'ledger-post-next-xact)
|
|
||||||
|
|
||||||
(define-key map [menu-bar] (make-sparse-keymap "ldg-menu"))
|
|
||||||
(define-key map [menu-bar ldg-menu] (cons "Ledger" map))
|
|
||||||
|
|
||||||
(define-key map [report-kill] '(menu-item "Kill Report" ledger-report-kill :enable ledger-works))
|
|
||||||
(define-key map [report-edit] '(menu-item "Edit Report" ledger-report-edit :enable ledger-works))
|
|
||||||
(define-key map [report-save] '(menu-item "Save Report" ledger-report-save :enable ledger-works))
|
|
||||||
(define-key map [report-rrun] '(menu-item "Re-run Report" ledger-report-redo :enable ledger-works))
|
|
||||||
(define-key map [report-goto] '(menu-item "Goto Report" ledger-report-goto :enable ledger-works))
|
|
||||||
(define-key map [report-run] '(menu-item "Run Report" ledger-report :enable ledger-works))
|
|
||||||
(define-key map [sep5] '(menu-item "--"))
|
|
||||||
(define-key map [set-month] '(menu-item "Set Month" ledger-set-month :enable ledger-works))
|
|
||||||
(define-key map [set-year] '(menu-item "Set Year" ledger-set-year :enable ledger-works))
|
|
||||||
(define-key map [cust] '(menu-item "Customize Ledger Mode" (lambda ()
|
|
||||||
(interactive)
|
|
||||||
(customize-group 'ledger))))
|
|
||||||
(define-key map [sep1] '("--"))
|
|
||||||
(define-key map [effective-date] '(menu-item "Set effective date" ledger-insert-effective-date))
|
|
||||||
(define-key map [sort-end] '(menu-item "Mark Sort End" ledger-sort-insert-end-mark))
|
|
||||||
(define-key map [sort-start] '(menu-item "Mark Sort Beginning" ledger-sort-insert-start-mark))
|
|
||||||
(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 [align-xact] '(menu-item "Align Xact" ledger-post-align-xact))
|
|
||||||
(define-key map [align-reg] '(menu-item "Align Region" ledger-post-align-postings :enable mark-active))
|
|
||||||
(define-key map [clean-buf] '(menu-item "Clean-up Buffer" ledger-mode-clean-buffer))
|
|
||||||
(define-key map [sep2] '(menu-item "--"))
|
|
||||||
(define-key map [copy-xact] '(menu-item "Copy Trans at Point" ledger-copy-transaction-at-point))
|
|
||||||
(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-transaction))
|
|
||||||
(define-key map [sep4] '(menu-item "--"))
|
|
||||||
(define-key map [recon-account] '(menu-item "Reconcile Account" ledger-reconcile :enable ledger-works))
|
|
||||||
(define-key map [check-balance] '(menu-item "Check Balance" ledger-display-balance-at-point :enable ledger-works))
|
|
||||||
(define-key map [sep6] '(menu-item "--"))
|
|
||||||
(define-key map [edit-amount] '(menu-item "Calc on Amount" ledger-post-edit-amount))
|
|
||||||
(define-key map [sep] '(menu-item "--"))
|
|
||||||
(define-key map [delete-xact] '(menu-item "Delete Transaction" ledger-delete-current-transaction))
|
|
||||||
(define-key map [cmp-xact] '(menu-item "Complete Transaction" ledger-fully-complete-xact))
|
|
||||||
(define-key map [add-xact] '(menu-item "Add Transaction (ledger xact)" ledger-add-transaction :enable ledger-works))
|
|
||||||
(define-key map [generate-scheduled] '(menu-item "Show Upcoming Transactions" ledger-schedule-upcoming :enable ledger-schedule-available))
|
|
||||||
(define-key map [sep3] '(menu-item "--"))
|
|
||||||
(define-key map [stats] '(menu-item "Ledger Statistics" ledger-display-ledger-stats :enable ledger-works))
|
|
||||||
(define-key map [fold-buffer] '(menu-item "Narrow to REGEX" ledger-occur))))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defun ledger-set-year (newyear)
|
|
||||||
"Set ledger's idea of the current year to the prefix argument NEWYEAR."
|
|
||||||
(interactive "p")
|
|
||||||
(if (= newyear 1)
|
|
||||||
(setq ledger-year (read-string "Year: " (ledger-current-year)))
|
|
||||||
(setq ledger-year (number-to-string newyear))))
|
|
||||||
|
|
||||||
(defun ledger-set-month (newmonth)
|
|
||||||
"Set ledger's idea of the current month to the prefix argument NEWMONTH."
|
|
||||||
(interactive "p")
|
|
||||||
(if (= newmonth 1)
|
|
||||||
(setq ledger-month (read-string "Month: " (ledger-current-month)))
|
|
||||||
(setq ledger-month (format "%02d" newmonth))))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(provide 'ledger)
|
|
||||||
|
|
||||||
;;; ldg-mode.el ends here
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-commodities.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-commodities.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'ldg-regex)
|
(require 'ledger-regex)
|
||||||
|
|
||||||
(defcustom ledger-reconcile-default-commodity "$"
|
(defcustom ledger-reconcile-default-commodity "$"
|
||||||
"The default commodity for use in target calculations in ledger reconcile."
|
"The default commodity for use in target calculations in ledger reconcile."
|
||||||
|
|
@ -144,6 +144,6 @@ longer ones are after the value."
|
||||||
comm
|
comm
|
||||||
(list (car comm) ledger-reconcile-default-commodity))))))
|
(list (car comm) ledger-reconcile-default-commodity))))))
|
||||||
|
|
||||||
(provide 'ldg-commodities)
|
(provide 'ledger-commodities)
|
||||||
|
|
||||||
;;; ldg-commodities.el ends here
|
;;; ledger-commodities.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-complete.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-complete.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -252,6 +252,6 @@ ledger-magic-tab would cycle properly"
|
||||||
'(sole shortest))
|
'(sole shortest))
|
||||||
pcomplete-last-completion-raw))))))
|
pcomplete-last-completion-raw))))))
|
||||||
|
|
||||||
(provide 'ldg-complete)
|
(provide 'ledger-complete)
|
||||||
|
|
||||||
;;; ldg-complete.el ends here
|
;;; ledger-complete.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-context.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-context.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -206,6 +206,6 @@ specified line, returns nil."
|
||||||
(defun ledger-context-goto-field-end (context-info field-name)
|
(defun ledger-context-goto-field-end (context-info field-name)
|
||||||
(goto-char (ledger-context-field-end-position context-info field-name)))
|
(goto-char (ledger-context-field-end-position context-info field-name)))
|
||||||
|
|
||||||
(provide 'ldg-context)
|
(provide 'ledger-context)
|
||||||
|
|
||||||
;;; ldg-report.el ends here
|
;;; ledger-report.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-exec.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-exec.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -96,6 +96,6 @@
|
||||||
(message "Good Ledger Version")
|
(message "Good Ledger Version")
|
||||||
(message "Bad Ledger Version")))
|
(message "Bad Ledger Version")))
|
||||||
|
|
||||||
(provide 'ldg-exec)
|
(provide 'ledger-exec)
|
||||||
|
|
||||||
;;; ldg-exec.el ends here
|
;;; ledger-exec.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-fonts.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-fonts.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'ldg-regex)
|
(require 'ledger-regex)
|
||||||
|
|
||||||
(defgroup ledger-faces nil "Ledger mode highlighting" :group 'ledger)
|
(defgroup ledger-faces nil "Ledger mode highlighting" :group 'ledger)
|
||||||
(defface ledger-font-payee-uncleared-face
|
(defface ledger-font-payee-uncleared-face
|
||||||
|
|
@ -133,6 +133,6 @@
|
||||||
"Expressions to highlight in Ledger mode.")
|
"Expressions to highlight in Ledger mode.")
|
||||||
|
|
||||||
|
|
||||||
(provide 'ldg-fonts)
|
(provide 'ledger-fonts)
|
||||||
|
|
||||||
;;; ldg-fonts.el ends here
|
;;; ledger-fonts.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-init.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-init.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;; Determine the ledger environment
|
;; Determine the ledger environment
|
||||||
|
|
||||||
(require 'ldg-regex)
|
(require 'ledger-regex)
|
||||||
|
|
||||||
(defcustom ledger-init-file-name "~/.ledgerrc"
|
(defcustom ledger-init-file-name "~/.ledgerrc"
|
||||||
"Location of the ledger initialization file. nil if you don't have one"
|
"Location of the ledger initialization file. nil if you don't have one"
|
||||||
|
|
@ -63,6 +63,6 @@
|
||||||
(ledger-init-parse-initialization init-base-name))
|
(ledger-init-parse-initialization init-base-name))
|
||||||
(kill-buffer init-base-name)))))
|
(kill-buffer init-base-name)))))
|
||||||
|
|
||||||
(provide 'ldg-init)
|
(provide 'ledger-init)
|
||||||
|
|
||||||
;;; ldg-init.el ends here
|
;;; ledger-init.el ends here
|
||||||
298
lisp/ledger-mode.el
Normal file
298
lisp/ledger-mode.el
Normal file
|
|
@ -0,0 +1,298 @@
|
||||||
|
;;; ledger-mode.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
|
||||||
|
;; This is free software; you can redistribute it and/or modify it under
|
||||||
|
;; the terms of the GNU General Public License as published by the Free
|
||||||
|
;; Software Foundation; either version 2, or (at your option) any later
|
||||||
|
;; version.
|
||||||
|
;;
|
||||||
|
;; This is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
;; for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||||
|
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||||
|
;; MA 02111-1307, USA.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;; Most of the general ledger-mode code is here.
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'ledger-regex)
|
||||||
|
(require 'esh-util)
|
||||||
|
(require 'esh-arg)
|
||||||
|
(require 'ledger-commodities)
|
||||||
|
(require 'ledger-complete)
|
||||||
|
(require 'ledger-context)
|
||||||
|
(require 'ledger-exec)
|
||||||
|
(require 'ledger-fonts)
|
||||||
|
(require 'ledger-init)
|
||||||
|
(require 'ledger-occur)
|
||||||
|
(require 'ledger-post)
|
||||||
|
(require 'ledger-reconcile)
|
||||||
|
(require 'ledger-report)
|
||||||
|
(require 'ledger-sort)
|
||||||
|
(require 'ledger-state)
|
||||||
|
(require 'ledger-test)
|
||||||
|
(require 'ledger-texi)
|
||||||
|
(require 'ledger-xact)
|
||||||
|
(require 'ledger-schedule)
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(defgroup ledger nil
|
||||||
|
"Interface to the Ledger command-line accounting program."
|
||||||
|
:group 'data)
|
||||||
|
|
||||||
|
(defconst ledger-version "3.0"
|
||||||
|
"The version of ledger.el currently loaded.")
|
||||||
|
|
||||||
|
(defconst ledger-mode-version "3.0.0")
|
||||||
|
|
||||||
|
(defun ledger-mode-dump-variable (var)
|
||||||
|
(if var
|
||||||
|
(insert (format " %s: %S\n" (symbol-name var) (eval var)))))
|
||||||
|
|
||||||
|
(defun ledger-mode-dump-group (group)
|
||||||
|
"Dump GROUP customizations to current buffer"
|
||||||
|
(let ((members (custom-group-members group nil)))
|
||||||
|
(dolist (member members)
|
||||||
|
(cond ((eq (cadr member) 'custom-group)
|
||||||
|
(insert (format "Group %s:\n" (symbol-name (car member))))
|
||||||
|
(ledger-mode-dump-group (car member)))
|
||||||
|
((eq (cadr member) 'custom-variable)
|
||||||
|
(ledger-mode-dump-variable (car member)))))))
|
||||||
|
|
||||||
|
(defun ledger-mode-dump-configuration ()
|
||||||
|
"Dump all customizations"
|
||||||
|
(find-file "ledger-mode-dump")
|
||||||
|
(ledger-mode-dump-group 'ledger))
|
||||||
|
|
||||||
|
|
||||||
|
(defsubst ledger-current-year ()
|
||||||
|
"The default current year for adding transactions."
|
||||||
|
(format-time-string "%Y"))
|
||||||
|
(defsubst ledger-current-month ()
|
||||||
|
"The default current month for adding transactions."
|
||||||
|
(format-time-string "%m"))
|
||||||
|
|
||||||
|
(defvar ledger-year (ledger-current-year)
|
||||||
|
"Start a ledger session with the current year, but make it customizable to ease retro-entry.")
|
||||||
|
|
||||||
|
(defvar ledger-month (ledger-current-month)
|
||||||
|
"Start a ledger session with the current month, but make it customizable to ease retro-entry.")
|
||||||
|
|
||||||
|
(defun ledger-read-account-with-prompt (prompt)
|
||||||
|
(let* ((context (ledger-context-at-point))
|
||||||
|
(default (if (and (eq (ledger-context-line-type context) 'acct-transaction)
|
||||||
|
(eq (ledger-context-current-field context) 'account))
|
||||||
|
(regexp-quote (ledger-context-field-value context 'account))
|
||||||
|
nil)))
|
||||||
|
(ledger-read-string-with-default prompt default)))
|
||||||
|
|
||||||
|
(defun ledger-read-string-with-default (prompt default)
|
||||||
|
"Return user supplied string after PROMPT, or DEFAULT."
|
||||||
|
(read-string (concat prompt
|
||||||
|
(if default
|
||||||
|
(concat " (" default "): ")
|
||||||
|
": "))
|
||||||
|
nil 'ledger-minibuffer-history default))
|
||||||
|
|
||||||
|
(defun ledger-display-balance-at-point ()
|
||||||
|
"Display the cleared-or-pending balance.
|
||||||
|
And calculate the target-delta of the account being reconciled."
|
||||||
|
(interactive)
|
||||||
|
(let* ((account (ledger-read-account-with-prompt "Account balance to show"))
|
||||||
|
(buffer (current-buffer))
|
||||||
|
(balance (with-temp-buffer
|
||||||
|
(ledger-exec-ledger buffer (current-buffer) "cleared" account)
|
||||||
|
(if (> (buffer-size) 0)
|
||||||
|
(buffer-substring-no-properties (point-min) (1- (point-max)))
|
||||||
|
(concat account " is empty.")))))
|
||||||
|
(when balance
|
||||||
|
(message balance))))
|
||||||
|
|
||||||
|
(defun ledger-display-ledger-stats ()
|
||||||
|
"Display the cleared-or-pending balance.
|
||||||
|
And calculate the target-delta of the account being reconciled."
|
||||||
|
(interactive)
|
||||||
|
(let* ((buffer (current-buffer))
|
||||||
|
(balance (with-temp-buffer
|
||||||
|
(ledger-exec-ledger buffer (current-buffer) "stats")
|
||||||
|
(buffer-substring-no-properties (point-min) (1- (point-max))))))
|
||||||
|
(when balance
|
||||||
|
(message balance))))
|
||||||
|
|
||||||
|
(defun ledger-magic-tab (&optional interactively)
|
||||||
|
"Decide what to with with <TAB>.
|
||||||
|
Can indent, complete or align depending on context."
|
||||||
|
(interactive "p")
|
||||||
|
(if (= (point) (line-beginning-position))
|
||||||
|
(indent-to ledger-post-account-alignment-column)
|
||||||
|
(if (and (> (point) 1)
|
||||||
|
(looking-back "\\([^ \t]\\)" 1))
|
||||||
|
(ledger-pcomplete interactively)
|
||||||
|
(ledger-post-align-postings))))
|
||||||
|
|
||||||
|
(defvar ledger-mode-abbrev-table)
|
||||||
|
|
||||||
|
(defun ledger-insert-effective-date ()
|
||||||
|
(interactive)
|
||||||
|
(let ((context (car (ledger-context-at-point)))
|
||||||
|
(date-string (format-time-string (cdr (assoc "date-format" ledger-environment-alist)))))
|
||||||
|
(cond ((eq 'xact context)
|
||||||
|
(beginning-of-line)
|
||||||
|
(insert date-string "="))
|
||||||
|
((eq 'acct-transaction context)
|
||||||
|
(end-of-line)
|
||||||
|
(insert " ; [=" date-string "]")))))
|
||||||
|
|
||||||
|
(defun ledger-mode-remove-extra-lines ()
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (re-search-forward "\n\n\\(\n\\)+" nil t)
|
||||||
|
(replace-match "\n\n")))
|
||||||
|
|
||||||
|
(defun ledger-mode-clean-buffer ()
|
||||||
|
"indent, remove multiple linfe feeds and sort the buffer"
|
||||||
|
(interactive)
|
||||||
|
(ledger-sort-buffer)
|
||||||
|
(ledger-post-align-postings (point-min) (point-max))
|
||||||
|
(ledger-mode-remove-extra-lines))
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(define-derived-mode ledger-mode text-mode "Ledger"
|
||||||
|
"A mode for editing ledger data files."
|
||||||
|
(ledger-check-version)
|
||||||
|
(ledger-post-setup)
|
||||||
|
|
||||||
|
(set (make-local-variable 'comment-start) " ; ")
|
||||||
|
(set (make-local-variable 'comment-end) "")
|
||||||
|
(set (make-local-variable 'indent-tabs-mode) nil)
|
||||||
|
|
||||||
|
(if (boundp 'font-lock-defaults)
|
||||||
|
(set (make-local-variable 'font-lock-defaults)
|
||||||
|
'(ledger-font-lock-keywords nil t)))
|
||||||
|
(setq font-lock-extend-region-functions
|
||||||
|
(list #'font-lock-extend-region-wholelines))
|
||||||
|
(setq font-lock-multiline nil)
|
||||||
|
|
||||||
|
(set (make-local-variable 'pcomplete-parse-arguments-function)
|
||||||
|
'ledger-parse-arguments)
|
||||||
|
(set (make-local-variable 'pcomplete-command-completion-function)
|
||||||
|
'ledger-complete-at-point)
|
||||||
|
(set (make-local-variable 'pcomplete-termination-string) "")
|
||||||
|
|
||||||
|
(add-hook 'post-command-hook 'ledger-highlight-xact-under-point nil t)
|
||||||
|
(add-hook 'before-revert-hook 'ledger-occur-remove-all-overlays nil t)
|
||||||
|
(make-variable-buffer-local 'highlight-overlay)
|
||||||
|
|
||||||
|
(ledger-init-load-init-file)
|
||||||
|
|
||||||
|
(set (make-local-variable 'indent-region-function) 'ledger-post-align-postings)
|
||||||
|
|
||||||
|
(let ((map (current-local-map)))
|
||||||
|
(define-key map [(control ?c) (control ?a)] 'ledger-add-transaction)
|
||||||
|
(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-at-point)
|
||||||
|
(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-insert-effective-date)
|
||||||
|
(define-key map [(control ?c) (control ?u)] 'ledger-schedule-upcoming)
|
||||||
|
(define-key map [(control ?c) (control ?y)] 'ledger-set-year)
|
||||||
|
(define-key map [(control ?c) (control ?p)] 'ledger-display-balance-at-point)
|
||||||
|
(define-key map [(control ?c) (control ?l)] 'ledger-display-ledger-stats)
|
||||||
|
(define-key map [(control ?c) (control ?q)] 'ledger-post-align-xact)
|
||||||
|
|
||||||
|
(define-key map [tab] 'ledger-magic-tab)
|
||||||
|
(define-key map [(control tab)] 'ledger-post-align-xact)
|
||||||
|
(define-key map [(control ?i)] 'ledger-magic-tab)
|
||||||
|
(define-key map [(control ?c) tab] 'ledger-fully-complete-xact)
|
||||||
|
(define-key map [(control ?c) (control ?i)] 'ledger-fully-complete-xact)
|
||||||
|
|
||||||
|
(define-key map [(control ?c) (control ?o) (control ?a)] 'ledger-report-redo)
|
||||||
|
(define-key map [(control ?c) (control ?o) (control ?e)] 'ledger-report-edit)
|
||||||
|
(define-key map [(control ?c) (control ?o) (control ?g)] 'ledger-report-goto)
|
||||||
|
(define-key map [(control ?c) (control ?o) (control ?k)] 'ledger-report-kill)
|
||||||
|
(define-key map [(control ?c) (control ?o) (control ?r)] 'ledger-report)
|
||||||
|
(define-key map [(control ?c) (control ?o) (control ?s)] 'ledger-report-save)
|
||||||
|
|
||||||
|
(define-key map [(meta ?p)] 'ledger-post-prev-xact)
|
||||||
|
(define-key map [(meta ?n)] 'ledger-post-next-xact)
|
||||||
|
|
||||||
|
(define-key map [menu-bar] (make-sparse-keymap "ledger-menu"))
|
||||||
|
(define-key map [menu-bar ledger-menu] (cons "Ledger" map))
|
||||||
|
|
||||||
|
(define-key map [report-kill] '(menu-item "Kill Report" ledger-report-kill :enable ledger-works))
|
||||||
|
(define-key map [report-edit] '(menu-item "Edit Report" ledger-report-edit :enable ledger-works))
|
||||||
|
(define-key map [report-save] '(menu-item "Save Report" ledger-report-save :enable ledger-works))
|
||||||
|
(define-key map [report-rrun] '(menu-item "Re-run Report" ledger-report-redo :enable ledger-works))
|
||||||
|
(define-key map [report-goto] '(menu-item "Goto Report" ledger-report-goto :enable ledger-works))
|
||||||
|
(define-key map [report-run] '(menu-item "Run Report" ledger-report :enable ledger-works))
|
||||||
|
(define-key map [sep5] '(menu-item "--"))
|
||||||
|
(define-key map [set-month] '(menu-item "Set Month" ledger-set-month :enable ledger-works))
|
||||||
|
(define-key map [set-year] '(menu-item "Set Year" ledger-set-year :enable ledger-works))
|
||||||
|
(define-key map [cust] '(menu-item "Customize Ledger Mode" (lambda ()
|
||||||
|
(interactive)
|
||||||
|
(customize-group 'ledger))))
|
||||||
|
(define-key map [sep1] '("--"))
|
||||||
|
(define-key map [effective-date] '(menu-item "Set effective date" ledger-insert-effective-date))
|
||||||
|
(define-key map [sort-end] '(menu-item "Mark Sort End" ledger-sort-insert-end-mark))
|
||||||
|
(define-key map [sort-start] '(menu-item "Mark Sort Beginning" ledger-sort-insert-start-mark))
|
||||||
|
(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 [align-xact] '(menu-item "Align Xact" ledger-post-align-xact))
|
||||||
|
(define-key map [align-reg] '(menu-item "Align Region" ledger-post-align-postings :enable mark-active))
|
||||||
|
(define-key map [clean-buf] '(menu-item "Clean-up Buffer" ledger-mode-clean-buffer))
|
||||||
|
(define-key map [sep2] '(menu-item "--"))
|
||||||
|
(define-key map [copy-xact] '(menu-item "Copy Trans at Point" ledger-copy-transaction-at-point))
|
||||||
|
(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-transaction))
|
||||||
|
(define-key map [sep4] '(menu-item "--"))
|
||||||
|
(define-key map [recon-account] '(menu-item "Reconcile Account" ledger-reconcile :enable ledger-works))
|
||||||
|
(define-key map [check-balance] '(menu-item "Check Balance" ledger-display-balance-at-point :enable ledger-works))
|
||||||
|
(define-key map [sep6] '(menu-item "--"))
|
||||||
|
(define-key map [edit-amount] '(menu-item "Calc on Amount" ledger-post-edit-amount))
|
||||||
|
(define-key map [sep] '(menu-item "--"))
|
||||||
|
(define-key map [delete-xact] '(menu-item "Delete Transaction" ledger-delete-current-transaction))
|
||||||
|
(define-key map [cmp-xact] '(menu-item "Complete Transaction" ledger-fully-complete-xact))
|
||||||
|
(define-key map [add-xact] '(menu-item "Add Transaction (ledger xact)" ledger-add-transaction :enable ledger-works))
|
||||||
|
(define-key map [sep3] '(menu-item "--"))
|
||||||
|
(define-key map [stats] '(menu-item "Ledger Statistics" ledger-display-ledger-stats :enable ledger-works))
|
||||||
|
(define-key map [fold-buffer] '(menu-item "Narrow to REGEX" ledger-occur))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defun ledger-set-year (newyear)
|
||||||
|
"Set ledger's idea of the current year to the prefix argument NEWYEAR."
|
||||||
|
(interactive "p")
|
||||||
|
(if (= newyear 1)
|
||||||
|
(setq ledger-year (read-string "Year: " (ledger-current-year)))
|
||||||
|
(setq ledger-year (number-to-string newyear))))
|
||||||
|
|
||||||
|
(defun ledger-set-month (newmonth)
|
||||||
|
"Set ledger's idea of the current month to the prefix argument NEWMONTH."
|
||||||
|
(interactive "p")
|
||||||
|
(if (= newmonth 1)
|
||||||
|
(setq ledger-month (read-string "Month: " (ledger-current-month)))
|
||||||
|
(setq ledger-month (format "%02d" newmonth))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'ledger)
|
||||||
|
|
||||||
|
;;; ledger-mode.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-mode.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-mode.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -187,6 +187,6 @@ Used for coordinating `ledger-occur' with other buffers, like reconcile."
|
||||||
(setq current-end (cadr match))))
|
(setq current-end (cadr match))))
|
||||||
(nreverse (push (list current-beginning current-end) points))))
|
(nreverse (push (list current-beginning current-end) points))))
|
||||||
|
|
||||||
(provide 'ldg-occur)
|
(provide 'ledger-occur)
|
||||||
|
|
||||||
;;; ldg-occur.el ends here
|
;;; ledger-occur.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-post.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-post.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;; Utility functions for dealing with postings.
|
;; Utility functions for dealing with postings.
|
||||||
|
|
||||||
(require 'ldg-regex)
|
(require 'ledger-regex)
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
|
|
@ -242,8 +242,8 @@ region align the posting on the current line."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(provide 'ldg-post)
|
(provide 'ledger-post)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; ldg-post.el ends here
|
;;; ledger-post.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-reconcile.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-reconcile.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -453,33 +453,33 @@ moved and recentered. If they aren't strange things happen."
|
||||||
|
|
||||||
(define-key map [(control ?c) (control ?p)] (ledger-reconcile-change-sort-key-and-refresh "(payee)"))
|
(define-key map [(control ?c) (control ?p)] (ledger-reconcile-change-sort-key-and-refresh "(payee)"))
|
||||||
|
|
||||||
(define-key map [menu-bar] (make-sparse-keymap "ldg-recon-menu"))
|
(define-key map [menu-bar] (make-sparse-keymap "ledger-recon-menu"))
|
||||||
(define-key map [menu-bar ldg-recon-menu] (cons "Reconcile" map))
|
(define-key map [menu-bar ledger-recon-menu] (cons "Reconcile" map))
|
||||||
(define-key map [menu-bar ldg-recon-menu qui] '("Quit" . ledger-reconcile-quit))
|
(define-key map [menu-bar ledger-recon-menu qui] '("Quit" . ledger-reconcile-quit))
|
||||||
(define-key map [menu-bar ldg-recon-menu sep1] '("--"))
|
(define-key map [menu-bar ledger-recon-menu sep1] '("--"))
|
||||||
(define-key map [menu-bar ldg-recon-menu pre] '("Previous Entry" . previous-line))
|
(define-key map [menu-bar ledger-recon-menu pre] '("Previous Entry" . previous-line))
|
||||||
(define-key map [menu-bar ldg-recon-menu vis] '("Visit Source" . ledger-reconcile-visit))
|
(define-key map [menu-bar ledger-recon-menu vis] '("Visit Source" . ledger-reconcile-visit))
|
||||||
(define-key map [menu-bar ldg-recon-menu nex] '("Next Entry" . next-line))
|
(define-key map [menu-bar ledger-recon-menu nex] '("Next Entry" . next-line))
|
||||||
(define-key map [menu-bar ldg-recon-menu sep2] '("--"))
|
(define-key map [menu-bar ledger-recon-menu sep2] '("--"))
|
||||||
(define-key map [menu-bar ldg-recon-menu del] '("Delete Entry" . ledger-reconcile-delete))
|
(define-key map [menu-bar ledger-recon-menu del] '("Delete Entry" . ledger-reconcile-delete))
|
||||||
(define-key map [menu-bar ldg-recon-menu add] '("Add Entry" . ledger-reconcile-add))
|
(define-key map [menu-bar ledger-recon-menu add] '("Add Entry" . ledger-reconcile-add))
|
||||||
(define-key map [menu-bar ldg-recon-menu tog] '("Toggle Entry" . ledger-reconcile-toggle))
|
(define-key map [menu-bar ledger-recon-menu tog] '("Toggle Entry" . ledger-reconcile-toggle))
|
||||||
(define-key map [menu-bar ldg-recon-menu sep3] '("--"))
|
(define-key map [menu-bar ledger-recon-menu sep3] '("--"))
|
||||||
(define-key map [menu-bar ldg-recon-menu sort-amt] `("Sort by amount" . ,(ledger-reconcile-change-sort-key-and-refresh "(amount)")))
|
(define-key map [menu-bar ledger-recon-menu sort-amt] `("Sort by amount" . ,(ledger-reconcile-change-sort-key-and-refresh "(amount)")))
|
||||||
(define-key map [menu-bar ldg-recon-menu sort-pay] `("Sort by date" . ,(ledger-reconcile-change-sort-key-and-refresh "(date)")))
|
(define-key map [menu-bar ledger-recon-menu sort-pay] `("Sort by date" . ,(ledger-reconcile-change-sort-key-and-refresh "(date)")))
|
||||||
(define-key map [menu-bar ldg-recon-menu sort-dat] `("Sort by payee" . ,(ledger-reconcile-change-sort-key-and-refresh "(payee)")))
|
(define-key map [menu-bar ledger-recon-menu sort-dat] `("Sort by payee" . ,(ledger-reconcile-change-sort-key-and-refresh "(payee)")))
|
||||||
(define-key map [menu-bar ldg-recon-menu sep4] '("--"))
|
(define-key map [menu-bar ledger-recon-menu sep4] '("--"))
|
||||||
(define-key map [menu-bar ldg-recon-menu bal] '("Show Cleared Balance" . ledger-display-balance))
|
(define-key map [menu-bar ledger-recon-menu bal] '("Show Cleared Balance" . ledger-display-balance))
|
||||||
(define-key map [menu-bar ldg-recon-menu tgt] '("Change Target Balance" . ledger-reconcile-change-target))
|
(define-key map [menu-bar ledger-recon-menu tgt] '("Change Target Balance" . ledger-reconcile-change-target))
|
||||||
(define-key map [menu-bar ldg-recon-menu sep5] '("--"))
|
(define-key map [menu-bar ledger-recon-menu sep5] '("--"))
|
||||||
(define-key map [menu-bar ldg-recon-menu rna] '("Reconcile New Account" . ledger-reconcile))
|
(define-key map [menu-bar ledger-recon-menu rna] '("Reconcile New Account" . ledger-reconcile))
|
||||||
(define-key map [menu-bar ldg-recon-menu sep6] '("--"))
|
(define-key map [menu-bar ledger-recon-menu sep6] '("--"))
|
||||||
(define-key map [menu-bar ldg-recon-menu fin] '("Finish" . ledger-reconcile-finish))
|
(define-key map [menu-bar ledger-recon-menu fin] '("Finish" . ledger-reconcile-finish))
|
||||||
(define-key map [menu-bar ldg-recon-menu ref] '("Refresh" . ledger-reconcile-refresh))
|
(define-key map [menu-bar ledger-recon-menu ref] '("Refresh" . ledger-reconcile-refresh))
|
||||||
(define-key map [menu-bar ldg-recon-menu sav] '("Save" . ledger-reconcile-save))
|
(define-key map [menu-bar ledger-recon-menu sav] '("Save" . ledger-reconcile-save))
|
||||||
|
|
||||||
(use-local-map map)))
|
(use-local-map map)))
|
||||||
|
|
||||||
(provide 'ldg-reconcile)
|
(provide 'ledger-reconcile)
|
||||||
|
|
||||||
;;; ldg-reconcile.el ends here
|
;;; ledger-reconcile.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-regex.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-regex.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -332,4 +332,4 @@
|
||||||
"\\(.*\\)" ;; desc
|
"\\(.*\\)" ;; desc
|
||||||
"\\)"))
|
"\\)"))
|
||||||
|
|
||||||
(provide 'ldg-regex)
|
(provide 'ledger-regex)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-report.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-report.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -106,21 +106,21 @@ text that should replace the format specifier."
|
||||||
(define-key map [return] 'ledger-report-visit-source)
|
(define-key map [return] 'ledger-report-visit-source)
|
||||||
|
|
||||||
|
|
||||||
(define-key map [menu-bar] (make-sparse-keymap "ldg-rep"))
|
(define-key map [menu-bar] (make-sparse-keymap "ledger-rep"))
|
||||||
(define-key map [menu-bar ldg-rep] (cons "Reports" map))
|
(define-key map [menu-bar ledger-rep] (cons "Reports" map))
|
||||||
|
|
||||||
(define-key map [menu-bar ldg-rep lrq] '("Quit" . ledger-report-quit))
|
(define-key map [menu-bar ledger-rep lrq] '("Quit" . ledger-report-quit))
|
||||||
(define-key map [menu-bar ldg-rep s2] '("--"))
|
(define-key map [menu-bar ledger-rep s2] '("--"))
|
||||||
(define-key map [menu-bar ldg-rep lrd] '("Scroll Down" . scroll-down))
|
(define-key map [menu-bar ledger-rep lrd] '("Scroll Down" . scroll-down))
|
||||||
(define-key map [menu-bar ldg-rep vis] '("Visit Source" . ledger-report-visit-source))
|
(define-key map [menu-bar ledger-rep vis] '("Visit Source" . ledger-report-visit-source))
|
||||||
(define-key map [menu-bar ldg-rep lru] '("Scroll Up" . scroll-up))
|
(define-key map [menu-bar ledger-rep lru] '("Scroll Up" . scroll-up))
|
||||||
(define-key map [menu-bar ldg-rep s1] '("--"))
|
(define-key map [menu-bar ledger-rep s1] '("--"))
|
||||||
(define-key map [menu-bar ldg-rep rev] '("Reverse report order" . ledger-report-reverse-lines))
|
(define-key map [menu-bar ledger-rep rev] '("Reverse report order" . ledger-report-reverse-lines))
|
||||||
(define-key map [menu-bar ldg-rep s0] '("--"))
|
(define-key map [menu-bar ledger-rep s0] '("--"))
|
||||||
(define-key map [menu-bar ldg-rep lrk] '("Kill Report" . ledger-report-kill))
|
(define-key map [menu-bar ledger-rep lrk] '("Kill Report" . ledger-report-kill))
|
||||||
(define-key map [menu-bar ldg-rep lrr] '("Re-run Report" . ledger-report-redo))
|
(define-key map [menu-bar ledger-rep lrr] '("Re-run Report" . ledger-report-redo))
|
||||||
(define-key map [menu-bar ldg-rep lre] '("Edit Report" . ledger-report-edit))
|
(define-key map [menu-bar ledger-rep lre] '("Edit Report" . ledger-report-edit))
|
||||||
(define-key map [menu-bar ldg-rep lrs] '("Save Report" . ledger-report-save))
|
(define-key map [menu-bar ledger-rep lrs] '("Save Report" . ledger-report-save))
|
||||||
|
|
||||||
(use-local-map map)))
|
(use-local-map map)))
|
||||||
|
|
||||||
|
|
@ -414,6 +414,6 @@ Optional EDIT the command."
|
||||||
(ledger-reports-add ledger-report-name ledger-report-cmd)
|
(ledger-reports-add ledger-report-name ledger-report-cmd)
|
||||||
(ledger-reports-custom-save)))))))
|
(ledger-reports-custom-save)))))))
|
||||||
|
|
||||||
(provide 'ldg-report)
|
(provide 'ledger-report)
|
||||||
|
|
||||||
;;; ldg-report.el ends here
|
;;; ledger-report.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-schedule.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-schedule.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2013 Craig Earls (enderw88 at gmail dot com)
|
;; Copyright (C) 2013 Craig Earls (enderw88 at gmail dot com)
|
||||||
|
|
||||||
|
|
@ -306,6 +306,6 @@ returns true if the date meets the requirements"
|
||||||
(current-buffer)))
|
(current-buffer)))
|
||||||
|
|
||||||
|
|
||||||
(provide 'ldg-schedule)
|
(provide 'ledger-schedule)
|
||||||
|
|
||||||
;;; ldg-schedule.el ends here
|
;;; ledger-schedule.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-xact.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-xact.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -121,6 +121,6 @@
|
||||||
sort-end
|
sort-end
|
||||||
(point-max)))))
|
(point-max)))))
|
||||||
|
|
||||||
(provide 'ldg-sort)
|
(provide 'ledger-sort)
|
||||||
|
|
||||||
;;; ldg-sort.el ends here
|
;;; ledger-sort.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-state.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-state.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -239,6 +239,6 @@ dropped."
|
||||||
(insert " * ")
|
(insert " * ")
|
||||||
'cleared))))))
|
'cleared))))))
|
||||||
|
|
||||||
(provide 'ldg-state)
|
(provide 'ledger-state)
|
||||||
|
|
||||||
;;; ldg-state.el ends here
|
;;; ledger-state.el ends here
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-test.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-test.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -124,4 +124,4 @@
|
||||||
(async-shell-command (format "\"%s\" %s" command args))
|
(async-shell-command (format "\"%s\" %s" command args))
|
||||||
(cd prev-directory)))))))
|
(cd prev-directory)))))))
|
||||||
|
|
||||||
(provide 'ldg-test)
|
(provide 'ledger-test)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-texi.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-texi.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -169,4 +169,4 @@
|
||||||
(ledger-texi-write-test example-name command input output
|
(ledger-texi-write-test example-name command input output
|
||||||
"../test/manual")))))
|
"../test/manual")))))
|
||||||
|
|
||||||
(provide 'ldg-texi)
|
(provide 'ledger-texi)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
;;; ldg-xact.el --- Helper code for use with the "ledger" command-line tool
|
;;; ledger-xact.el --- Helper code for use with the "ledger" command-line tool
|
||||||
|
|
||||||
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
||||||
|
|
||||||
|
|
@ -195,6 +195,6 @@ correct chronological place in the buffer."
|
||||||
(end-of-line -1)))))
|
(end-of-line -1)))))
|
||||||
|
|
||||||
|
|
||||||
(provide 'ldg-xact)
|
(provide 'ledger-xact)
|
||||||
|
|
||||||
;;; ldg-xact.el ends here
|
;;; ledger-xact.el ends here
|
||||||
Loading…
Add table
Reference in a new issue