diff options
-rw-r--r-- | doc/ledger-mode.texi | 1193 |
1 files changed, 0 insertions, 1193 deletions
diff --git a/doc/ledger-mode.texi b/doc/ledger-mode.texi deleted file mode 100644 index 8ff284b1..00000000 --- a/doc/ledger-mode.texi +++ /dev/null @@ -1,1193 +0,0 @@ -\input texinfo @c -*-texinfo-*- - -@setfilename ledger-mode.info -@settitle Ledger: Command-Line Accounting - -@c Before release, run C-u C-c C-u C-a (texinfo-all-menus-update with -@c a prefix arg). This updates the node pointers, which texinfmt.el -@c needs. - -@copying - -Copyright @copyright{} 2013, Craig Earls. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -@itemize - -@item -Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - -@item -Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -@item -Neither the name of New Artisans LLC nor the names of its contributors -may be used to endorse or promote products derived from this software -without specific prior written permission. - -@end itemize - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS -IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -@end copying - -@dircategory Major Modes -@direntry -* Ledger Mode: (ledger-mode). Command-Line Accounting -@end direntry - -@documentencoding UTF-8 - -@iftex -@finalout -@end iftex - -@titlepage -@title Ledger Mode -@subtitle Emacs Support For Version 3.0 of Ledger -@author Craig Earls -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@contents - -@ifnottex - -@node Top, Introduction to Ledger-mode, (dir), (dir) -@top Overview - -Ledger is a command line accounting tool that provides double-entry -accounting based on a text journal. It provides no bells or whistles, -and returns the user to the days before user interfaces were even -a 1twinkling in their father's CRT. - -Ledger-mode assists you in maintaining input files for Ledger, running -reports and much more... - -@end ifnottex - -@menu -* Introduction to Ledger-mode:: -* The Ledger Buffer:: -* The Reconcile Buffer:: -* The Report Buffer:: -* Scheduling Transactions:: -* Customizing Ledger-mode:: -* Generating Ledger Regression Tests:: -* Embedding Example results in Ledger Documentation:: -* Hacking Ledger-mode:: -* Concept Index:: -* Command & Variable Index:: -* Keystroke Index:: -@end menu - -@node Introduction to Ledger-mode, The Ledger Buffer, Top, Top -@chapter Introduction to Ledger-mode - -@menu -* Quick Installation:: -* Menus:: -* Quick Demo:: -@end menu - -@node Quick Installation, Menus, Introduction to Ledger-mode, Introduction to Ledger-mode -@section Quick Installation -@cindex installation - -The Emacs lisp source for Ledger-mode is included with the source -distribution of Ledger. It is entirely included in the @file{lisp} -subdirectory. To use Ledger-mode, include the following in your Emacs -initialization file (@file{~/.emacs}, @file{~/.emacs.d/init.el}, or -@file{~/.Aquamacs/Preferences.el}). - -@lisp -(autoload 'ledger-mode "ledger-mode" "A major mode for Ledger" t) -(add-to-list 'load-path - (expand-file-name "/path/to/ledger/source/lisp/")) -(add-to-list 'auto-mode-alist '("\\.ledger$" . ledger-mode)) -@end lisp - -This sets up Emacs to automatically recognize files that end with -@file{.ledger} and start Ledger-mode. Nothing else should be required -as long as the ledger command line utility is properly installed. - -@node Menus, Quick Demo, Quick Installation, Introduction to Ledger-mode -@section Menus -@cindex menu - -The vast majority of Ledger-mode functionality is available from the -Emacs menu system. The keystrokes are shown in the menu to help you -learn the faster keyboard methods. - -@node Quick Demo, , Menus, Introduction to Ledger-mode -@section Quick Demo -@cindex demo - -Load the demo file @file{demo.ledger} from the Ledger source -@file{test/input} directory. The ledger will be loaded and font -highlighted. At this point you could manually edit transactions and run -Ledger from a convenient command line. - -@menu -* Quick Add:: -* Reconciliation:: -* Reports:: -* Narrowing:: -@end menu - -@node Quick Add, Reconciliation, Quick Demo, Quick Demo -@subsection Quick Add -@kindex C-c TAB -@kindex C-c C-a - -As simple as the Ledger transaction format is, it can still be daunting -to add many transactions manually. Ledger provides two way to add -transactions with minimal typing. Both are based on the idea that most -transactions are repetitions of earlier transactions. - -In the @file{demo.ledger} buffer enter a date using the correct -format. Then type the first few characters of another payee in the -@file{demo.ledger} buffer. Type @kbd{C-c TAB}. Ledger-mode will -search for a Payee that has the same beginning and copy the rest of the -transaction to you new entry. - -Additionally you can use the ledger @command{xact} command, by either -typing @kbd{C-c C-a} or using @samp{Add Transaction} menu entry. Then -typing a close match to the payee. Ledger-mode will call @command{ledger -xact} with the data you enter and place the transaction in the proper -chronological place in the ledger. - -If you need to add a lot of transactions that are not near your current -date you can set the current year and month so that using @samp{Add -Transaction} will prompt you with a more convenient month and year. To -set the month type @kbd{C-c RET} and enter the month you want. @kbd{C-c -C-y} will prompt you for the year. These settings only effect the -@samp{Add Transaction} command. - -@node Reconciliation, Reports, Quick Add, Quick Demo -@subsection Reconciliation -@kindex C-c C-r -@kindex SPC -@kindex C-c C-c -@kindex q - -The biggest task of maintaining a ledger is ensuring that it matches the -outside world. This process is called reconciliation (@pxref{Basics of -Reconciliation}) and can be quite onerous. Ledger-mode attempts to make -it as painless as possible. - -In the @file{demo.ledger} buffer type @kbd{C-c C-r}. If cursor is on an -account, Ledger-mode will propose this account, or in the Minibuffer, -will prompt for an account to reconcile. Hit @kbd{RET} if you are happy -with proposed account, or enter @samp{Checking} as example. -Emacs will then prompt for a target value. The target value is the -amount you want the cleared transactions in the buffer to total. -Normally this would be the ending value from your bank statement, or the -latest value in your on-line transaction summary. Enter @samp{1710}. -Note that Ledger-mode assumes your are using @samp{$} (USD) as your -default commodity, this can be easily changed in the customization -variables. @xref{Ledger-mode Customization}. - -You now see a list of uncleared transactions in a buffer below the -@file{demo.ledger} buffer. Touching the @kbd{SPC} bar will mark -a transaction as pending and display the current cleared (and pending) -balance, along with the difference remaining to meet your target. Clear -the first three transactions, and you will see the difference to target -reach @samp{$0}. End the reconciliation by typing @kbd{C-c C-c}. This -saves the @file{demo.ledger} buffer and marks the transactions and -finally cleared. Type @kbd{q} to close out the reconciliation buffer. - -@node Reports, Narrowing, Reconciliation, Quick Demo -@subsection Reports -@kindex C-c C-o C-r -@kindex C-c C-c - -The real power of Ledger is in it reporting capabilities. Reports can -be run and displayed in a separate Emacs buffer. In the -@file{demo.ledger} buffer, type @kbd{C-c C-o C-r}. In the Minibuffer -Emacs will prompt for a report name. There are a few built-in reports, -and you can add any report you need @xref{Adding and Editing Reports}. - -In the Minibuffer type @samp{account}. When prompted for an account -type @samp{checking}. In a buffer named @file{*Ledger Report*}, you -will see a Ledger register report. You can move around the buffer, with -the point on a transaction, type @kbd{RET}. Ledger-mode will take you -directly to that transaction in the @file{demo.ledger} buffer. - -Another built-in report is the balance report. In the -@file{demo.ledger} buffer, type @kbd{C-c C-o C-r}. When prompted for -a report to run, type @samp{bal}, and a balance report of all accounts -will be shown. - -@node Narrowing, , Reports, Quick Demo -@subsection Narrowing -@kindex C-c C-f -@kindex C-c C-g - -A ledger file can get very large. It can be helpful to collapse the -buffer to display only the transactions you are interested in. -Ledger-mode copies the @command{occur} mode functionality. Typing -@kbd{C-c C-f} and entering any regex in the Minibuffer will show only -transactions that match the regex. The regex can be on any field, or -amount. Use @kbd{C-c C-g} after editing transactions to re-apply the -current regex. Cancel the narrowing by typing @kbd{C-c C-f} again. - -@node The Ledger Buffer, The Reconcile Buffer, Introduction to Ledger-mode, Top -@chapter The Ledger Buffer - -@menu -* Adding Transactions:: -* Copying Transactions:: -* Editing Amounts:: -* Marking Transactions:: -* Formatting Transactions:: -* Deleting Transactions:: -* Sorting Transactions:: -* Narrowing Transactions:: -@end menu - - -@node Adding Transactions, Copying Transactions, The Ledger Buffer, The Ledger Buffer -@section Adding Transactions -@findex ledger-post-auto-adjust-amounts -@findex ledger-post-amount-alignment-column -@kindex TAB -@cindex transaction, adding - -Beyond the two ways of quickly adding transactions (@pxref{Quick Add}) -Ledger-mode assists you by providing robust @kbd{TAB} completion for -payees and accounts. Ledger-mode will scan the existing buffer for -payees and accounts. Included files are not currently included in the -completion scan. Repeatedly hitting @kbd{TAB} will cycle through the -possible completions. - -Ledger-mode can also help you keep your amounts aligned. Setting -@option{ledger-post-auto-adjust-amounts} to true tells Ledger-mode to -automatically place any amounts such that their last digit is aligned to -the column specified by @option{ledger-post-amount-alignment-column}, -which defaults to @samp{52}. @xref{Ledger Post Customization Group}. - -@menu -* Setting a Transactions Effective Date:: -* Quick Balance Display:: -@end menu - -@node Setting a Transactions Effective Date, Quick Balance Display, Adding Transactions, Adding Transactions -@subsection Setting a Transactions Effective Date -@kindex C-c C-t -@cindex effective date - -Ledger provides for adding information to a transaction that add details -to the dates. For example, you can specify when the transaction was -entered, when the transaction was cleared, or when individual postings -were cleared. -Ledger-mode refers to these additional dates as @emph{effective} dates. -To set the effective date of a transaction, place the point in the first -line of a transaction and type @kbd{C-c C-t}. The effective date will -be added to the transaction. To set the effective date for an -individual posting, place point in the posting and type @kbd{C-c C-t} and -the effective date for that posting will be added at the end of the -posting. - -@node Quick Balance Display, , Setting a Transactions Effective Date, Adding Transactions -@subsection Quick Balance Display -@kindex C-c C-p -@cindex balance - -You will often want to quickly check the balance of an account. The -easiest way it to position point on the account you are interested in, -and type @kbd{C-c C-p}. The Minibuffer will ask you to verify the name -of the account you want, if it is already correct hit @kbd{RET}, then -the balance of the account will be displayed in the Minibuffer. - -@node Copying Transactions, Editing Amounts, Adding Transactions, The Ledger Buffer -@section Copying Transactions -@kindex C-c C-k -@cindex transaction, copying - -An easy way to copy a transaction is to type @kbd{C-c C-k} or menu entry -@samp{Copy Trans at Point}. You will be prompted the new date for the -copied transaction, and after having confirmed with @kbd{RET}, new -transaction will be inserted at @emph{date} position in buffer. - -@node Editing Amounts, Marking Transactions, Copying Transactions, The Ledger Buffer -@section Editing Amounts -@kindex C-c C-b -@kindex y -@cindex Calc -@cindex GNU Emacs Calculator -@cindex transaction, editing amounts - -GNU Emacs Calculator, aka @samp{Calc}, is a very powerful Reverse Polish -Notation calculator built into all recent version of Emacs. Ledger-mode -makes it easy to calculate values for amount by integrating -@command{Calc}. With the point anywhere in the same line as a posting, -typing @kbd{C-c C-b} will bring up the @file{Calc} buffer, and push the -current amount for the posting onto the top of the @command{Calc} stack. -Perform any calculations you need to arrive at the final value, then -type @kbd{y} to yank the value at the top of stack back into the ledger -buffer. Note: @command{Calc} does not directly support commas as -decimal separators. Ledger-mode will translate values from -decimal-comma format to decimal-period format for use in @command{Calc}, -but it cannot intercept the value being yanked form the @command{Calc} -stack, so decimal-comma users will have to manually replace the period -with a comma. - -@node Marking Transactions, Formatting Transactions, Editing Amounts, The Ledger Buffer -@section Marking Transactions -@cindex transaction, marking -@cindex uncleared -@cindex pending -@cindex cleared - -Ledger considers transaction or posting to be in one of three states: -uncleared, cleared, and pending. For calculation Ledger ignores these -states unless specifically instructed to use them. Ledger-mode assigns -some additional meaning to the states: - -@itemize - -@item Uncleared. -No state. This is equivalent to sticking a check in the mail. It has -been obligated, but not been cashed by the recipient. It could also -apply to credit/debit card transactions that have not been cleared into -your account balance. You bank may call these transactions @emph{pending}, -but Ledger-mode uses a slightly different meaning. - -@item Pending. -Ledger-mode's reconciliation function see pending transactions as an -intermediate step in reconciling an account. When doing -a reconciliation (@pxref{Reconciliation}), marking a transaction as -pending means that you have seen the transaction finally recorded by the -recipient, but you have not completely reconciled the account. - -@item Cleared. -The transaction has been completely recognized by all parties to the -transaction. - -@end itemize - -@kindex C-c C-c -@kindex C-c C-e - -Typing @kbd{C-c C-c}, depending where is the point, will clear the -complete transaction, or an individual posting. This places an asterisk -@samp{*} prior to the payee for the complete transaction, or prior to -the account for an individual posting. When point is inside -a transaction, specifically on an individual posting, you can still -clear the complete transaction by typing @kbd{C-c C-e}. - -@node Formatting Transactions, Deleting Transactions, Marking Transactions, The Ledger Buffer -@section Formatting Transactions -@cindex transaction, formatting - -When editing a transaction, liberal use of the @kbd{TAB} key can keep -the transaction well formatted. If you want to have Ledger-mode cleanup -the formatting of a transaction you can use @samp{Align Transaction} or -@samp{Align Region} from the menu bar. - -The menu item @samp{Clean-up Buffer} sorts all transactions in the buffer -by date, removes extraneous empty lines and aligns every transaction. - - -@node Deleting Transactions, Sorting Transactions, Formatting Transactions, The Ledger Buffer -@section Deleting Transactions -@kindex C-c C-d -@cindex transaction, deleting - -Along with normal buffer editing methods to delete text, Ledger-mode -provides an easy way to delete the transaction under point: @kbd{C-c -C-d}. The advantage to using this method is that the complete -transaction operation is in the undo buffer. - -@node Sorting Transactions, Narrowing Transactions, Deleting Transactions, The Ledger Buffer -@section Sorting Transactions -@kindex C-c C-s -@cindex transaction, sorting - -As you operating on the Ledger files, they may become disorganized. For -the most part, Ledger doesn't care, but our human brains prefer a bit of -order. Sorting the transactions in a buffer into chronological order -can help bring order to chaos. Either using @samp{Sort Region} menu -entry or typing @kbd{C-c C-s} will sort all of the transactions in -a region by date. Ledger-mode isn't particularly smart about handling -dates and it simply sorts the transactions using the string at the -beginning of the transaction. So, you should use the preferred ISO 8601 -standard date format @samp{YYYY/MM/DD} which easily sorts. - -Note, there is a menu entry @samp{Sort Buffer} to sort the entire -buffer. Special transactions like automated transaction, will be moved -in the sorting process and may not function correctly afterwards. For -this reason there is no key sequence. - -You can limit the allowed sort region by using embedded Ledger-mode -markup within your ledger. For example: - -@example -<<< information to not sort >>> - -; Ledger-mode: Start sort - -<<< transactions to sort >>> - -; Ledger-mode: End sort - -<<< information to not sort >>> -@end example - -You can use menu entries @samp{Mark Sort Beginning} to insert start and -@samp{Mark Sort End} to insert end markers. These functions will -automatically delete old markers and put new new marker at point. - -@node Narrowing Transactions, , Sorting Transactions, The Ledger Buffer -@section Narrowing Transactions -@kindex C-c C-f -@kindex C-c C-g -@cindex transaction, narrowing -@cindex transaction, display filtering - -Often you will want to run Ledger register reports just to look at -a specific set of transactions. If you don't need the running total -calculation handled by Ledger, Ledger-mode provides a rapid way of -narrowing what is displayed in the buffer in a way that is simpler than -the Ledger register command. - -Based on the Emacs Occur mode by Alexey Veretennikov, Ledger-occur hides -all transactions that do @emph{not} meet a specific regular expression. -The regular expression can match on any part of the transaction. If you -want to find all transactions whose amount ends in @samp{.37}, you can -do that (I don't know why, but hey, whatever ever floats you aerostat). - -Using @kbd{C-c C-f} or the @samp{Narrow to Regex} menu entry, enter a -regular expression in the Minibuffer. Ledger-mode will hide all other -transactions. For details of the regular expression syntax, see your -Emacs documentation. A few examples using the @file{demo.ledger} are -given here: - -@table @samp - -@item Groceries -Show only transactions that have a posting to the @samp{Groceries} -account. - -@item ^2011/01 -Show only transactions occurring in January of 2011. - -@item ^2011/.*/25 -Show only transactions occurring on the 25th of the month in 2011. - -@item auto -Show only transactions with payees or accounts or comments containing. -@samp{auto} - -@item harley$ -Show only transactions with any line ending with @samp{harley}. - -@end table - -To show back all transactions simply invoke @samp{Narrow to Regex} or -@kbd{C-c C-f} again. - -If you've edited some transactions after narrowing such that they would -no longer match the regular expression, you can refresh the narrowed -view using @kbd{C-c C-g}. - -@node The Reconcile Buffer, The Report Buffer, The Ledger Buffer, Top -@chapter The Reconcile Buffer - -@menu -* Basics of Reconciliation:: -* Starting a Reconciliation:: -* Mark Transactions Pending:: -* Edit Transactions During Reconciliation:: -* Finalize Reconciliation:: -* Adding and Deleting Transactions during Reconciliation:: -* Changing Reconciliation Account:: -* Changing Reconciliation Target:: -@end menu - -@node Basics of Reconciliation, Starting a Reconciliation, The Reconcile Buffer, The Reconcile Buffer -@section Basics of Reconciliation -@cindex reconciliation, basics - -Even in this relatively modern era, financial transactions do not happen -instantaneously, unless you are paying cash. When you swipe your debit -card the money may take several days to actually come out of your -account, or a check may take several days to @emph{clear}. That is the -root of the difference between @emph{obligating} funds and -@emph{expending} funds. Obligation says you have agreed to pay it, the -expenditure doesn't happen until the money actually leaves your -account. Or in the case of receiving payment, you have an account -receivable until the money has actually made it to you. - -After an account has been reconciled you have verified that all the -transactions in that account have been correctly recorded and all -parties agree. - -@node Starting a Reconciliation, Mark Transactions Pending, Basics of Reconciliation, The Reconcile Buffer -@section Starting a Reconciliation -@findex ledger-reconcile-default-commodity -@kindex C-c C-r -@cindex reconciliation, starting - -To start reconciling an account you must have a target, both the -transactions that you know about and the transactions the bank knows -about. You can get this from a monthly statement, or from checking your -on-line transaction history. It also helps immensely to know the final -cleared balance you are aiming for. - -Use menu @samp{Reconcile Account} or keyboard shortcut @kbd{C-c C-r} to -start reconciliation. - -If cursor is on an account, Ledger-mode will propose this account, or in -the Minibuffer, will prompt for an account to reconcile. Hit @kbd{RET} -if you are happy with proposed account, or enter @samp{Checking} as -example. Ledger-mode is not particular about what you enter for the -account. You can leave it blank and @file{*Reconcile*} buffer will show -you @emph{all} uncleared transactions. - -After you enter the account enter the target amount. It is helpful to -enter an amount with a commodity. You can also leave it blank, you will -be able to clear transactions but not benefit from balance calculations. -It assumes initially that you are using @samp{$} (USD) as your default -commodity. If you are working in a different currency you can change -the default in variable @option{ledger-reconcile-default-commodity} to -whatever you need. If you work in multiple commodities simply enter the -commoditized amount (for example @samp{340 VSDX}, for 340 shares of -VSDX). - -Ledger-mode reconcile cannot currently reconcile accounts that have -multiple commodities, such as brokerage accounts. You may use -reconciliation mode to clear transactions, but balance calculations will -not display the complete list of commodities. - -@node Mark Transactions Pending, Edit Transactions During Reconciliation, Starting a Reconciliation, The Reconcile Buffer -@section Mark Transactions Pending -@kindex SPC -@cindex reconciliation, transaction marking - -The @file{*Reconcile*} buffer will show all the uncleared transactions -that meet the criteria set in the regex. By default uncleared -transactions are shown in red. When you have verified that -a transaction has been correctly and completely recorded by the opposing -party, mark the transaction as pending using the @kbd{SPC} bar. -Continue this process until you agree with the opposing party and the -difference from your target is zero. - -@node Edit Transactions During Reconciliation, Finalize Reconciliation, Mark Transactions Pending, The Reconcile Buffer -@section Edit Transactions during Reconciliation -@kindex RET -@kindex C-c C-c -@cindex reconciliation, transaction editing - -If you find errors during reconciliation. You can visit the transaction -under point in the @file{*Reconcile*} buffer by hitting the @kbd{RET} -key. This will take you to the transaction in the Ledger buffer. When -you have finished editing the transaction, saving the buffer will -automatically return you to the @file{*Reconcile*} buffer and you can -mark the transaction if appropriate. - -@node Finalize Reconciliation, Adding and Deleting Transactions during Reconciliation, Edit Transactions During Reconciliation, The Reconcile Buffer -@section Finalize Reconciliation -@cindex reconciliation, finalizing -@kindex C-c C-c -@kindex q - -Once you have marked all transactions as pending and the cleared balance -is correct. Finish the reconciliation by typing @kbd{C-c C-c}. This -marks all pending transactions as cleared and saves the ledger buffer. - -Type @kbd{q} to close out the reconciliation buffer. If variable -@var{ledger-reconcile-finish-force-quit} is set, the reconciliation -buffer will be killed automatically after @kbd{C-c C-c}. - -@node Adding and Deleting Transactions during Reconciliation, Changing Reconciliation Account, Finalize Reconciliation, The Reconcile Buffer -@section Adding and Deleting Transactions during Reconciliation -@kindex a -@kindex d -@cindex reconciliation, transaction adding and deleting - -While reconciling, you may find new transactions that need to be entered -into your ledger. Simply type @kbd{a} to bring up the quick add for the -ledger buffer. - -Typing @kbd{d} will delete the transaction under point in the -@file{*Reconcile*} buffer from the ledger buffer. - -@node Changing Reconciliation Account, Changing Reconciliation Target, Adding and Deleting Transactions during Reconciliation, The Reconcile Buffer -@section Changing Reconciliation Account -@kindex g -@cindex reconciliation, account changing - -You can conveniently switch the account being reconciled by typing -@kbd{g}, and entering a new account to reconcile. This simply restarts -the reconcile process. Any transactions that were marked @emph{pending} in -the ledger buffer are left in that state when the account is switched. - -@node Changing Reconciliation Target, , Changing Reconciliation Account, The Reconcile Buffer -@section Changing Reconciliation Target -@kindex t -@cindex reconciliation, target changing - -If for some reason during reconciliation your target amount changes, -type @kbd{t} and enter the new target value. - -@node The Report Buffer, Scheduling Transactions, The Reconcile Buffer, Top -@chapter The Report Buffer - -@menu -* Running Basic Reports:: -* Adding and Editing Reports:: -* Reversing Report Order:: -@end menu - -@node Running Basic Reports, Adding and Editing Reports, The Report Buffer, The Report Buffer -@section Running Reports -@kindex C-c C-o C-r -@kindex C-c C-o C-g -@kindex C-c C-o C-a -@cindex report, running - -The real power behind Ledger is in its amazing reporting capability. -Ledger-mode provides easy facility to run reports directly from Emacs. -It has four reports built-in and facilities for adding custom reports. - -Typing @kbd{C-c C-o C-r} or using menu @samp{Run Report} prompts -for the name of a saved report. The built-in reports are: - -@table @var - -@item bal -Produce a balance reports of all accounts. - -@item reg -Produce a register report of all transactions. - -@item payee -Prompt for a payee, then produce a register report of all transactions -involving that payee. - -@item account -Prompt for an account, then produce a register report of all -transactions involving that account. - -@end table - -While viewing reports you can easily switch back and forth between the -ledger buffer and the @file{*Ledger Report*} buffer. In @file{*Ledger -Report*} buffer, typing @kbd{RET} will take you to that transaction in -the ledger buffer. While in the ledger buffer @kbd{C-c C-o C-g} returns -you to the @file{*Ledger Report*} buffer. - -By default Ledger-mode will refresh the report buffer when the ledger -buffer is saved. If you want to rerun the report at another time -@kbd{C-c C-o C-a}. This is useful if you have other programs altering -your ledger file outside of Emacs. - - -@node Adding and Editing Reports, Reversing Report Order, Running Basic Reports, The Report Buffer -@section Adding and Editing Reports -@findex ledger-reports -@kindex M-1 C-c C-o C-r -@kindex S -@kindex C-c C-o C-e -@kindex e -@cindex report, adding and editing - -@menu -* Expansion Formats:: -* Make Report Transactions Active:: -@end menu - -If you type a report name that Ledger-mode doesn't recognize it will -prompt you for a ledger command line to run. That command is -automatically saved with the name given and you can re-run it at any -time. - -There are two ways to edit the command line for a report. The first is -to provide a prefix argument to the run-report command. For example, -type @kbd{M-1 C-c C-o C-r}. This will prompt you for the report name, -then present the report command line to be edited. When you hit -@kbd{RET}, the report will be run, but it will not be permanently saved. -If you want to save it, type @kbd{S} in the @file{*Ledger Report*} -buffer you will have the option to give it a new name, or overwrite the -old report. - -Deleting reports is accomplished by typing @kbd{C-c C-o C-e} or using -@samp{Edit Report} menu in the ledger buffer, or typing @kbd{e} in the -@file{*Ledger Report*} buffer. This takes you to the Emacs -customization window for the Ledger Reports variables. Use the widgets -to delete the report you want removed. - -Typing @kbd{C-c C-o C-s} will prompt for a name and save the current -report. - -@node Expansion Formats, Make Report Transactions Active, Adding and Editing Reports, Adding and Editing Reports -@subsection Expansion Formats -@cindex report, custom variable - -It is sometimes convenient to leave room to customize a report without -saving the command line every time. For example running a register -report for a specific account entered at runtime by the user. The -built-in report @var{account} does exactly that, using a variable -expansion to prompt the user for the account to use. There are four -variables that can be expanded to run a report: - -@table @var - -@item ledger-file -Returns the file to be operated on. - -@item payee -Prompts for a payee. - -@item account -Prompt for an account. - -@item tagname -Prompt for a meta-data tag name. - -@item tagvalue -Prompt for a meta-data tag value. - -@end table - -You can use these expansion values in your ledger report commands. For -example, if you wanted to specify a register report the displayed -transactions from a user-determined account with a particular meta-data -tag value, you specify the following command line: - -@example -ledger -f %(ledger-file) reg %(account) \ - --limit \"tag('my-tag') =~/%(value)/\" -@end example - -Note how the double-quotes are escaped with back-slashes. - -@node Make Report Transactions Active, , Expansion Formats, Adding and Editing Reports -@subsection Make Report Transactions Active -@cindex report, custom command - -In a large register report it is convenient to be able to jump to the -source transaction. Ledger-mode will automatically include source -information in every register file that doesn't contain -a @option{--subtotal} option. It does this by adding -@option{--prepend-format='%(filename):%(beg_line):'} to the register -report command-line you specify. You should never have to see this, but -if there is an error in your ledger output this additional information -may not get stripped out of the visible report. - -@node Reversing Report Order, , Adding and Editing Reports, The Report Buffer -@section Reversing Report Order -@kindex R -@cindex report, order reversing - -Often, banks show their on-line transaction histories with the most -recent transaction at the top. Ledger itself cannot do a sensible -ledger report in reverse chronological order, if you sort on reverse -date the calculation will also run in the opposite direction. If you -want to compare a ledger register report to a bank report with the most -recent transactions at the top, type @kbd{R} in the @file{*Ledger -Report*} buffer and it will reverse the order of the transactions and -maintain the proper mathematical sense. - -@node Scheduling Transactions, Customizing Ledger-mode, The Report Buffer, Top -@chapter Scheduling Transactions - -The Ledger program provides for automating transactions but these -transaction aren't @emph{real}, they only exist inside a ledger session and -are not reflected in the actual data file. Many transactions are very -repetitive, but may vary slightly in the date they occur on, or the -amount. Some transactions are weekly, monthly, quarterly or annually. -Ledger mode provides a way to schedule upcoming transaction with a -flexible scheduler that allows you to specify the transactions in a -separate ledger file and calculate the upcoming occurrences of those -transactions. You can then copy the transactions into your live data -file. - -@menu -* Specifying Upcoming Transactions:: -@end menu - -@node Specifying Upcoming Transactions, , Scheduling Transactions, Scheduling Transactions -@section Specifying Upcoming Transactions - -The format for specifying transactions is identical to Ledger's file -format with the exception of the date field. The data field is modified -by surrounding it with brackets and using wild cards and special -characters to specify when the transactions should appear. - -@menu -* Transactions that occur on specific dates:: -* Transactions that occur on specific days:: -@end menu - -@node Transactions that occur on specific dates, Transactions that occur on specific days, Specifying Upcoming Transactions, Specifying Upcoming Transactions -@subsection Transactions that occur on specific dates - -Many times you will enter repetitive transactions that occur on the same -day of the month each month. These can be specified using a wild card -in the year and month with a fixed date in the day. The following entry -specifies a transaction that occurs on the first and fifteenth of every -month in every year. -@example -[*/*/1,15] Paycheck - Income:Job $1000.00 - Assets:Checking -@end example - -Some transactions do not occur every month. Comma separated lists of -the months, or @samp{E} for even, or @samp{O} for odd number months can -also be specified. The following entry specifies a bi-monthly -exterminator bill that occurs in the even months: -@example -[*/E/01] Exterminator - Expenses:Home $100.00 - Assets:Checking -@end example - -@node Transactions that occur on specific days, , Transactions that occur on specific dates, Specifying Upcoming Transactions -@subsection Transactions that occur on specific days - -Some transactions occur every relative to the day of the week rather -than the date of the month. For example, many people are paid every two -weeks without regard to the day of the month. Other events may occur on -specific days regardless of the date. For example the following -transactions creates a transaction every other Thursday: - -@example -[2014/11/27+2Th] Paycheck - Income:Job $1000.00 - Assets:Checking -@end example - -It is necessary to specify a starting date in order for this type of -recurrence relation to be specified. The day names are two character -codes that default to Mo, Tu, We, Th, Fr, Sa, Su, for Monday, Tuesday, -Wednesday, Thursday, Friday, Saturday, Sunday respectively. You can -change the codes to something more convenient for your locale by -customizing the ledger @option{ledger-schedule-week-days}. They must be two -characters long. - - - -@node Customizing Ledger-mode, Generating Ledger Regression Tests, Scheduling Transactions, Top -@chapter Customizing Ledger-mode - -@menu -* Ledger-mode Customization:: -* Customization Variables:: -@end menu - -@node Ledger-mode Customization, Customization Variables, Customizing Ledger-mode, Customizing Ledger-mode -@section Ledger-mode Customization - -Ledger-mode has several options available for configuration. All -options can be configured through the Emacs customization menus, or -specified in your Emacs initialization file. The complete list of -options is shown below. To change the option using the Emacs -customization menu, simply chose customize in the Options menu and look -for Ledger under the data options. Alternately you can choose -@samp{Customize Specific Group} and enter @samp{Ledger} as the group. - -@node Customization Variables, , Ledger-mode Customization, Customizing Ledger-mode -@section Customization Variables - -@menu -* Ledger Customization Group:: -* Ledger Reconcile Customization Group:: -* Ledger Report Customization Group:: -* Ledger Faces Customization Group:: -* Ledger Post Customization Group:: -* Ledger Exec Customization Group:: -* Ledger Test Customization Group:: -* Ledger Texi Customization Group:: -@end menu - -@node Ledger Customization Group, Ledger Reconcile Customization Group, Customization Variables, Customization Variables -@subsection Ledger Customization Group -@cindex customization, ledger-mode - -@ftable @option - -@item ledger-occur-use-face-shown -If non-nil, use a custom face for transactions shown in -@option{ledger-occur} mode using @option{ledger-occur-xact-face}. - -@item ledger-clear-whole-transactions -If non-nil, clear whole transactions, not individual postings. - -@item ledger-highlight-xact-under-point -If non-nil, highlight transaction under point using -@option{ledger-font-highlight-face}. - -@end ftable - -@node Ledger Reconcile Customization Group, Ledger Report Customization Group, Ledger Customization Group, Customization Variables -@subsection Ledger Reconcile Customization Group -@cindex customization, reconcile - -@ftable @option - -@item ledger-recon-buffer-name -Name to use for reconciliation buffer. Defaults to @file{*Reconcile*}. - -@item ledger-narrow-on-reconcile -If t, limit transactions shown in main buffer to those matching -the reconcile regex. - -@item ledger-buffer-tracks-reconcile-buffer -If t, then when the cursor is moved to a new transaction in the -@file{*Reconcile*} buffer. Then that transaction will be shown in its -source buffer. - -@item ledger-reconcile-force-window-bottom -If t, make the @file{*Reconcile*} window appear along the bottom -of the register window and resize. - -@item ledger-reconcile-toggle-to-pending -If t, then toggle between uncleared and pending @samp{!}. If -false toggle between uncleared and cleared @samp{*}. - -@item ledger-reconcile-default-date-format -Date format for the reconcile buffer. Defaults to -@option{ledger-default-date-format}. - -@item ledger-reconcile-target-prompt-string -Prompt for recon target. Defaults to "Target amount for reconciliation ". - -@item ledger-reconcile-buffer-header -Header string for the reconcile buffer. If non-nil, the name of the -account being reconciled will be substituted into the '%s'. If nil, no -header will be displayed. Defaults to "Reconciling account %s\n\n". - -@item ledger-reconcile-buffer-line-format -Format string for the ledger reconcile posting format. Available fields -are date, status, code, payee, account, amount. The format for each -field is %WIDTH(FIELD), WIDTH can be preceded by a minus sign which mean -to left justify and pad the field. WIDTH is the minimum number of -characters to display; if string is longer, it is not truncated unless -@option{ledger-reconcile-buffer-payee-max-chars} or -@option{ledger-reconcile-buffer-account-max-chars} is defined. Defaults to -"%(date)s %-4(code)s %-50(payee)s %-30(account)s %15(amount)s\n" - -@item ledger-reconcile-buffer-payee-max-chars -If positive, truncate payee name right side to max number of characters. - -@item ledger-reconcile-buffer-account-max-chars -If positive, truncate account name left side to max number of characters. - -@item ledger-reconcile-sort-key -Key for sorting reconcile buffer. Possible values are '(date)', -'(amount)', '(payee)' or '(0)' for no sorting, i.e. using -ledger file order. Defaults to '(0)'. - -@item ledger-reconcile-insert-effective-date nil -If t, prompt for effective date when clearing transactions during -reconciliation. - -@item ledger-reconcile-finish-force-quit nil -If t, will force closing reconcile window after @kbd{C-c C-c}. - -@end ftable - -@node Ledger Report Customization Group, Ledger Faces Customization Group, Ledger Reconcile Customization Group, Customization Variables -@subsection Ledger Report Customization Group -@cindex customization, report - -@ftable @option - -@item ledger-reports -Definition of reports to run. - -@item ledger-report-format-specifiers -An alist mapping ledger report format specifiers to implementing -functions. - -@end ftable - -@node Ledger Faces Customization Group, Ledger Post Customization Group, Ledger Report Customization Group, Customization Variables -@subsection Ledger Faces Customization Group -@cindex customization, faces - -Ledger Faces: Ledger-mode highlighting - -@ftable @option - -@item ledger-font-uncleared-face -Default face for Ledger. - -@item ledger-font-cleared-face -Default face for cleared @samp{*} transactions. - -@item ledger-font-highlight-face -Default face for transaction under point. - -@item ledger-font-pending-face -Default face for pending @samp{!} transactions. - -@item ledger-font-other-face -Default face for other transactions. - -@item ledger-font-posting-account-face -Face for Ledger accounts. - -@item ledger-font-posting-account-cleared-face -Face for cleared Ledger accounts. - -@item ledger-font-posting-account-pending-face -Face for Ledger pending accounts. - -@item ledger-font-posting-amount-face -Face for Ledger amounts. - -@item ledger-occur-narrowed-face -Default face for Ledger occur mode hidden transactions. - -@item ledger-occur-xact-face -Default face for Ledger occur mode shown transactions. - -@item ledger-font-comment-face -Face for Ledger comments. - -@item ledger-font-reconciler-uncleared-face -Default face for uncleared transactions in the @file{*Reconcile*} buffer. - -@item ledger-font-reconciler-cleared-face -Default face for cleared @samp{*} transactions in the @file{*Reconcile*} -buffer. - -@item ledger-font-reconciler-pending-face -Default face for pending @samp{!} transactions in the @file{*Reconcile*} -buffer. - -@item ledger-font-report-clickable-face -FIXME - -@end ftable - -@node Ledger Post Customization Group, Ledger Exec Customization Group, Ledger Faces Customization Group, Customization Variables -@subsection Ledger Post Customization Group -@cindex customization, post - -Ledger Post: - -@ftable @option - -@item ledger-post-auto-adjust-amounts -If non-nil, then automatically align amounts to column specified in -@option{ledger-post-amount-alignment-column}. - -@item ledger-post-amount-alignment-column -The column Ledger-mode uses to align amounts. - -@item ledger-default-acct-transaction-indent -Default indentation for account transactions in an entry. - -@item ledger-post-use-completion-engine -Which completion engine to use: @var{iswitchb}, @var{ido}, or built-in. - -@item ledger-post-use-ido - -@end ftable - -@node Ledger Exec Customization Group, Ledger Test Customization Group, Ledger Post Customization Group, Customization Variables -@subsection Ledger Exec Customization Group -@cindex customization, executable - -Ledger Exec: Interface to the Ledger command-line accounting program. - -@ftable @option - -@item ledger-binary-path -Path to the ledger executable. - -@item ledger-init-file-name -Location of the ledger initialization file. nil if you don't have one. - -@end ftable - -@node Ledger Test Customization Group, Ledger Texi Customization Group, Ledger Exec Customization Group, Customization Variables -@subsection Ledger Test Customization Group -@cindex customization, test - -@ftable @option - -@item ledger-source-directory -Directory where the Ledger sources are located. - -@item ledger-test-binary -Directory where the debug binary. - -@end ftable - -@node Ledger Texi Customization Group, , Ledger Test Customization Group, Customization Variables -@subsection Ledger Texi Customization Group -@cindex customization, texi - -@ftable @option - -@item ledger-texi-sample-doc-path -Location for sample data to be used in texi tests, defaults to -@file{~/ledger/doc/sample.dat}. - -@item ledger-texi-normalization-args -texi normalization for producing ledger output, defaults to -@samp{--args-only --columns 80}. - -@end ftable - -@node Generating Ledger Regression Tests, Embedding Example results in Ledger Documentation, Customizing Ledger-mode, Top -@chapter Generating Ledger Regression Tests - -Work in Progress. - -@node Embedding Example results in Ledger Documentation, Hacking Ledger-mode, Generating Ledger Regression Tests, Top -@chapter Embedding Example results in Ledger Documentation - -Work in Progress. - -@node Hacking Ledger-mode, Concept Index, Embedding Example results in Ledger Documentation, Top -@chapter Hacking Ledger-mode - -Work in Progress. - -@node Concept Index, Command & Variable Index, Hacking Ledger-mode, Top -@unnumbered Concept Index - -@printindex cp - -@node Command & Variable Index, Keystroke Index, Concept Index, Top -@unnumbered Command & Variable Index - -@printindex fn - -@node Keystroke Index, , Command & Variable Index, Top -@unnumbered Keystroke Index - -@printindex ky - -@bye - -@c Local Variables: -@c mode: texinfo -@c TeX-master: t -@c End: |