Merge branch 'manuals' into master
This commit is contained in:
		
						commit
						a024ac14a9
					
				
							
								
								
									
										16
									
								
								Shake.hs
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Shake.hs
									
									
									
									
									
								
							| @ -97,7 +97,7 @@ usage = | |||||||
| --  ,"./Shake relnotes           create draft release notes" | --  ,"./Shake relnotes           create draft release notes" | ||||||
| 
 | 
 | ||||||
| -- groff    = "groff -c" ++ " -Wall"  -- see "groff" below | -- groff    = "groff -c" ++ " -Wall"  -- see "groff" below | ||||||
| makeinfo = "makeinfo" ++ " --no-warn"  -- silence makeinfo warnings - comment out to see them | makeinfo = "makeinfo --no-split --force --no-warn --no-validate"  -- silence makeinfo warnings, comment these to see them | ||||||
| pandoc   = "pandoc --strip-comments" | pandoc   = "pandoc --strip-comments" | ||||||
| gitcommit = "git commit --allow-empty" | gitcommit = "git commit --allow-empty" | ||||||
| 
 | 
 | ||||||
| @ -400,18 +400,20 @@ main = do | |||||||
|         let src       = manpageNameToManualName out <.> "m4.md" |         let src       = manpageNameToManualName out <.> "m4.md" | ||||||
|             commonm4  = "doc/common.m4" |             commonm4  = "doc/common.m4" | ||||||
|             dir       = takeDirectory out |             dir       = takeDirectory out | ||||||
|  |             pkg       = dir | ||||||
|             packagemanversionm4 = dir </> ".version.m4" |             packagemanversionm4 = dir </> ".version.m4" | ||||||
|             packagemandatem4 = dir </> ".date.m4" |             packagemandatem4 = dir </> ".date.m4" | ||||||
|             tmpl      = "doc/manpage.nroff" |             tmpl      = "doc/manpage.nroff" | ||||||
|         mandate <- formatTime defaultTimeLocale "%B %Y" <$> liftIO getCurrentDay |         pkgversion <- liftIO $ readFile $ dir </> ".version" | ||||||
|  |         -- mandate <- formatTime defaultTimeLocale "%B %Y" <$> liftIO getCurrentDay  -- XXX not using this.. compare with .date.m4 | ||||||
|         -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib |         -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib | ||||||
|         deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir </>) <$> S.getDirectoryContents dir |         deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir </>) <$> S.getDirectoryContents dir | ||||||
|         need $ [src, commonm4, packagemanversionm4, packagemandatem4, tmpl] ++ deps |         need $ [src, commonm4, packagemanversionm4, packagemandatem4, tmpl] ++ deps | ||||||
|         when (dir=="hledger") $ need commandmds |         when (dir=="hledger") $ need commandmds | ||||||
|         -- cmd_ Shell sed "-i -e" ("'s/(_monthyear_}}, *)\\{\\{[^}]+/\\1{{"++mandate++"/;'") packagem4  -- forces a rebuild, only when month has changed ? |  | ||||||
|         cmd Shell |         cmd Shell | ||||||
|           "m4 -P -DMAN -I" dir commonm4 packagemanversionm4 packagemandatem4 src "|" |           "m4 -P -DMAN -I" dir commonm4 packagemanversionm4 packagemandatem4 src "|" | ||||||
|           pandoc fromsrcmd "-s" "--template" tmpl |           pandoc fromsrcmd "-s" "--template" tmpl | ||||||
|  |           ("-V footer='"++pkg++"-"++pkgversion++"'") | ||||||
|           "--lua-filter tools/pandoc-drop-html-blocks.lua" |           "--lua-filter tools/pandoc-drop-html-blocks.lua" | ||||||
|           "--lua-filter tools/pandoc-drop-html-inlines.lua" |           "--lua-filter tools/pandoc-drop-html-inlines.lua" | ||||||
|           "--lua-filter tools/pandoc-drop-links.lua" |           "--lua-filter tools/pandoc-drop-links.lua" | ||||||
| @ -419,6 +421,7 @@ main = do | |||||||
| 
 | 
 | ||||||
|       -- Generate plain text manuals suitable for embedding in |       -- Generate plain text manuals suitable for embedding in | ||||||
|       -- executables and viewing with a pager, from the man pages. |       -- executables and viewing with a pager, from the man pages. | ||||||
|  |       -- (Depends on the nroffmanuals.) | ||||||
|       phony "txtmanuals" $ need txtmanuals |       phony "txtmanuals" $ need txtmanuals | ||||||
|       txtmanuals |%> \out -> do  -- hledger/hledger.txt |       txtmanuals |%> \out -> do  -- hledger/hledger.txt | ||||||
|         let src = manualNameToManpageName $ dropExtension out |         let src = manualNameToManpageName $ dropExtension out | ||||||
| @ -444,13 +447,16 @@ main = do | |||||||
|         when (dir=="hledger") $ need commandmds |         when (dir=="hledger") $ need commandmds | ||||||
|         cmd Shell |         cmd Shell | ||||||
|           "m4 -P -DINFO -I" dir commonm4 packagemanversionm4 src "|" |           "m4 -P -DINFO -I" dir commonm4 packagemanversionm4 src "|" | ||||||
|           sed "-e 's/^#(#+)/\\1/'" "|" |           -- sed "-e 's/^#(#+)/\\1/'" "|" | ||||||
|           pandoc fromsrcmd |           pandoc fromsrcmd | ||||||
|           "--lua-filter tools/pandoc-drop-html-blocks.lua" |           "--lua-filter tools/pandoc-drop-html-blocks.lua" | ||||||
|           "--lua-filter tools/pandoc-drop-html-inlines.lua" |           "--lua-filter tools/pandoc-drop-html-inlines.lua" | ||||||
|           "--lua-filter tools/pandoc-drop-links.lua" |           "--lua-filter tools/pandoc-drop-links.lua" | ||||||
|  |           -- add "standalone" headers ? sounds good for setting text encoding, | ||||||
|  |           -- but messes up quotes ('a' becomes ^Xa^Y) | ||||||
|  |           -- "-s" | ||||||
|           "-t texinfo |" |           "-t texinfo |" | ||||||
|           makeinfo "--force --no-split -o" out |           makeinfo "-o" out | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|       -- WEBSITE MARKDOWN SOURCE |       -- WEBSITE MARKDOWN SOURCE | ||||||
|  | |||||||
| @ -13,17 +13,22 @@ m4_dnl | |||||||
| m4_dnl Author to show in man pages. | m4_dnl Author to show in man pages. | ||||||
| m4_define({{_author_}}, {{}})m4_dnl | m4_define({{_author_}}, {{}})m4_dnl | ||||||
| m4_dnl | m4_dnl | ||||||
| m4_dnl Macros for conditionally including format-specific content | m4_dnl Macros for conditionally including or excluding content based on the format | ||||||
| m4_dnl $1 is the manual's web slug: hledger, hledger-ui, journal, csv etc. | m4_dnl (man, web or info). | ||||||
| m4_dnl include in man pages only | m4_define({{_man_}},         m4_ifdef({{MAN}},{{$1}})    )m4_dnl | ||||||
| m4_define({{_man_}},         m4_ifdef({{MAN}},{{$1}})             )m4_dnl | m4_define({{_notman_}},      m4_ifdef({{MAN}},,{{$1}})   )m4_dnl | ||||||
| m4_dnl include in web manuals only | m4_define({{_web_}},         m4_ifdef({{WEB}},{{$1}})    )m4_dnl | ||||||
| m4_define({{_web_}},         m4_ifdef({{WEB}},{{$1}})             )m4_dnl | m4_define({{_notweb_}},      m4_ifdef({{WEB}},,{{$1}})   )m4_dnl | ||||||
| m4_dnl include in info manuals only | m4_define({{_info_}},        m4_ifdef({{INFO}},{{$1}})   )m4_dnl | ||||||
| m4_define({{_info_}},         m4_ifdef({{INFO}},{{$1}})             )m4_dnl | m4_define({{_notinfo_}},     m4_ifdef({{INFO}},,{{$1}})  )m4_dnl | ||||||
| m4_dnl include in text manuals only - not implemented |  | ||||||
| m4_dnl m4_define({{_txt_}},         m4_ifdef({{TXT}},{{$1}})             )m4_dnl |  | ||||||
| m4_dnl | m4_dnl | ||||||
|  | m4_dnl A command's heading and included doc source. | ||||||
|  | m4_dnl Usage: _command_(## commandname, Markdownfilebasename) | ||||||
|  | m4_define({{_command_}},  | ||||||
|  | {{$1 | ||||||
|  | _include_(Hledger/Cli/Commands/$2.md) | ||||||
|  | }})m4_dnl | ||||||
|  | m4_dnl  | ||||||
| m4_dnl Two side-by-side columns. | m4_dnl Two side-by-side columns. | ||||||
| m4_define({{_col2_}}, | m4_define({{_col2_}}, | ||||||
| {{<div class="container-fluid"> | {{<div class="container-fluid"> | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ $if(has-tables)$ | |||||||
| .\"t | .\"t | ||||||
| $endif$ | $endif$ | ||||||
| 
 | 
 | ||||||
| .TH "$title/nowrap$" "$section/nowrap$" "$date/nowrap$" "$footer/nowrap$" "hledger User Manuals" | .TH "$title/nowrap/uppercase$" "$section/nowrap$" "$date/nowrap$" "$footer/nowrap$" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| $for(header-includes)$ | $for(header-includes)$ | ||||||
| $header-includes$ | $header-includes$ | ||||||
| @ -36,6 +36,6 @@ Copyright (C) 2007-2020 Simon Michael. | |||||||
| Released under GNU GPL v3 or later. | Released under GNU GPL v3 or later. | ||||||
| 
 | 
 | ||||||
| .SH SEE ALSO | .SH SEE ALSO | ||||||
| hledger(1), hledger\-ui(1), hledger\-web(1), | hledger(1), hledger\-ui(1), hledger\-web(1), ledger(1) | ||||||
| hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5), | 
 | ||||||
| ledger(1) | hledger_journal(5), hledger_csv(5), hledger_timeclock(5), hledger_timedot(5) | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| % hledger_csv(5) hledger _version_ | % hledger_csv(5) | ||||||
| % _author_ | % _author_ | ||||||
| % _monthyear_ | % _monthyear_ | ||||||
| 
 | 
 | ||||||
| @ -6,7 +6,11 @@ _man_({{ | |||||||
| # NAME | # NAME | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| CSV - how hledger reads CSV data, and the CSV rules file format | m4_dnl _info_({{ | ||||||
|  | m4_dnl # hledger csv format | ||||||
|  | m4_dnl }}) | ||||||
|  | 
 | ||||||
|  | How hledger reads CSV data, and the CSV rules file format. | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| % hledger_journal(5) hledger _version_ | % hledger_journal(5) | ||||||
| % _author_ | % _author_ | ||||||
| % _monthyear_ | % _monthyear_ | ||||||
| 
 | 
 | ||||||
| @ -6,7 +6,11 @@ _man_({{ | |||||||
| # NAME | # NAME | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| Journal - hledger's default file format, representing a General Journal | m4_dnl _info_({{ | ||||||
|  | m4_dnl # hledger journal format | ||||||
|  | m4_dnl }}) | ||||||
|  | 
 | ||||||
|  | hledger's default file format, representing a General Journal. | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
| @ -72,10 +76,6 @@ Here's an example: | |||||||
| ``` | ``` | ||||||
| --> | --> | ||||||
| 
 | 
 | ||||||
| _man_({{ |  | ||||||
| # FILE FORMAT |  | ||||||
| }}) |  | ||||||
| 
 |  | ||||||
| Here's a description of each part of the file format | Here's a description of each part of the file format | ||||||
| (and hledger's data model). | (and hledger's data model). | ||||||
| These are mostly in the order you'll use them, but in some cases | These are mostly in the order you'll use them, but in some cases | ||||||
| @ -83,7 +83,7 @@ related concepts have been grouped together for easy reference, | |||||||
| or linked before they are introduced, | or linked before they are introduced, | ||||||
| so feel free to skip over anything that looks unnecessary right now. | so feel free to skip over anything that looks unnecessary right now. | ||||||
| 
 | 
 | ||||||
| ## Transactions | # TRANSACTIONS | ||||||
| 
 | 
 | ||||||
| Transactions are the main unit of information in a journal file. | Transactions are the main unit of information in a journal file. | ||||||
| They represent events, typically a movement of some quantity of | They represent events, typically a movement of some quantity of | ||||||
| @ -109,9 +109,9 @@ Here's a simple journal file containing one transaction: | |||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Dates | # DATES | ||||||
| 
 | 
 | ||||||
| ### Simple dates | ## Simple dates | ||||||
| 
 | 
 | ||||||
| Dates in the journal file use *simple dates* format: | Dates in the journal file use *simple dates* format: | ||||||
| `YYYY-MM-DD` or `YYYY/MM/DD` or `YYYY.MM.DD`, with leading zeros optional. | `YYYY-MM-DD` or `YYYY/MM/DD` or `YYYY.MM.DD`, with leading zeros optional. | ||||||
| @ -123,7 +123,7 @@ Some examples: `2010-01-31`, `2010/01/31`, `2010.1.31`, `1/31`. | |||||||
| (The UI also accepts simple dates, as well as the more flexible [smart | (The UI also accepts simple dates, as well as the more flexible [smart | ||||||
| dates](hledger.html#smart-dates) documented in the hledger manual.) | dates](hledger.html#smart-dates) documented in the hledger manual.) | ||||||
| 
 | 
 | ||||||
| ### Secondary dates | ## Secondary dates | ||||||
| 
 | 
 | ||||||
| Real-life transactions sometimes involve more than one date - eg the date | Real-life transactions sometimes involve more than one date - eg the date | ||||||
| you write a cheque, and the date it clears in your bank.  When you want to | you write a cheque, and the date it clears in your bank.  When you want to | ||||||
| @ -161,7 +161,7 @@ $ hledger register checking --date2 | |||||||
| 2010-02-19 movie ticket         assets:checking                $-10         $-10 | 2010-02-19 movie ticket         assets:checking                $-10         $-10 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Posting dates | ## Posting dates | ||||||
| 
 | 
 | ||||||
| You can give individual postings a different date from their parent | You can give individual postings a different date from their parent | ||||||
| transaction, by adding a [posting comment](#comments) containing a | transaction, by adding a [posting comment](#comments) containing a | ||||||
| @ -198,7 +198,7 @@ attempt to parse any square-bracketed sequence of the `0123456789/-.=` | |||||||
| characters in this way. With this syntax, DATE infers its year from | characters in this way. With this syntax, DATE infers its year from | ||||||
| the transaction and DATE2 infers its year from DATE. | the transaction and DATE2 infers its year from DATE. | ||||||
| 
 | 
 | ||||||
| ## Status | # STATUS | ||||||
| 
 | 
 | ||||||
| Transactions, or individual postings within a transaction, | Transactions, or individual postings within a transaction, | ||||||
| can have a status mark, which is a single character before | can have a status mark, which is a single character before | ||||||
| @ -239,20 +239,20 @@ With this scheme, you would use | |||||||
| `-U` to see things which will probably hit your bank soon (like uncashed checks), | `-U` to see things which will probably hit your bank soon (like uncashed checks), | ||||||
| and no flags to see the most up-to-date state of your finances. | and no flags to see the most up-to-date state of your finances. | ||||||
| 
 | 
 | ||||||
| ## Description | # DESCRIPTION | ||||||
| 
 | 
 | ||||||
| A transaction's description is the rest of the line following the date and status mark (or until a comment begins). | A transaction's description is the rest of the line following the date and status mark (or until a comment begins). | ||||||
| Sometimes called the "narration" in traditional bookkeeping, it can be used for whatever you wish, | Sometimes called the "narration" in traditional bookkeeping, it can be used for whatever you wish, | ||||||
| or left blank. Transaction descriptions can be queried, unlike [comments](#comments). | or left blank. Transaction descriptions can be queried, unlike [comments](#comments). | ||||||
| 
 | 
 | ||||||
| ### Payee and note | ## Payee and note | ||||||
| 
 | 
 | ||||||
| You can optionally include a `|` (pipe) character in descriptions to subdivide the description | You can optionally include a `|` (pipe) character in descriptions to subdivide the description | ||||||
| into separate fields for payee/payer name on the left (up to the first `|`) and an additional note | into separate fields for payee/payer name on the left (up to the first `|`) and an additional note | ||||||
| field on the right (after the first `|`). This may be worthwhile if you need to do more precise | field on the right (after the first `|`). This may be worthwhile if you need to do more precise | ||||||
| [querying](hledger.html#queries) and [pivoting](hledger.html#pivoting) by payee or by note. | [querying](hledger.html#queries) and [pivoting](hledger.html#pivoting) by payee or by note. | ||||||
| 
 | 
 | ||||||
| ## Comments | # COMMENTS | ||||||
| 
 | 
 | ||||||
| Lines in the journal beginning with a semicolon (`;`) or hash (`#`) or | Lines in the journal beginning with a semicolon (`;`) or hash (`#`) or | ||||||
| star (`*`) are comments, and will be ignored. (Star comments cause | star (`*`) are comments, and will be ignored. (Star comments cause | ||||||
| @ -291,7 +291,7 @@ end comment | |||||||
| You can also comment larger regions of a file using [`comment` and `end comment` directives](#comment-blocks). | You can also comment larger regions of a file using [`comment` and `end comment` directives](#comment-blocks). | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Tags | # TAGS | ||||||
| 
 | 
 | ||||||
| Tags are a way to add extra labels or labelled data to postings and transactions, | Tags are a way to add extra labels or labelled data to postings and transactions, | ||||||
| which you can then [search](hledger.html#queries) or [pivot](hledger.html#pivoting) on. | which you can then [search](hledger.html#queries) or [pivot](hledger.html#pivoting) on. | ||||||
| @ -333,7 +333,7 @@ Tags are like Ledger's | |||||||
| [metadata](http://ledger-cli.org/3.0/doc/ledger3.html#Metadata) | [metadata](http://ledger-cli.org/3.0/doc/ledger3.html#Metadata) | ||||||
| feature, except hledger's tag values are simple strings. | feature, except hledger's tag values are simple strings. | ||||||
| 
 | 
 | ||||||
| ## Postings | # POSTINGS | ||||||
| 
 | 
 | ||||||
| A posting is an addition of some amount to, or removal of some amount from, an account. | A posting is an addition of some amount to, or removal of some amount from, an account. | ||||||
| Each posting line begins with at least one space or tab (2 or 4 spaces is common), followed by: | Each posting line begins with at least one space or tab (2 or 4 spaces is common), followed by: | ||||||
| @ -351,7 +351,7 @@ Be sure to note the unusual two-space delimiter between account name and amount. | |||||||
| This makes it easy to write account names containing spaces. | This makes it easy to write account names containing spaces. | ||||||
| But if you accidentally leave only one space (or tab) before the amount, the amount will be considered part of the account name. | But if you accidentally leave only one space (or tab) before the amount, the amount will be considered part of the account name. | ||||||
| 
 | 
 | ||||||
| ### Virtual postings | ## Virtual postings | ||||||
| 
 | 
 | ||||||
| A posting with a parenthesised account name is called a *virtual posting* | A posting with a parenthesised account name is called a *virtual posting* | ||||||
| or *unbalanced posting*, which means it is exempt from the usual rule | or *unbalanced posting*, which means it is exempt from the usual rule | ||||||
| @ -386,7 +386,7 @@ Ordinary non-parenthesised, non-bracketed postings are called *real postings*. | |||||||
| You can exclude virtual postings from reports with the `-R/--real` | You can exclude virtual postings from reports with the `-R/--real` | ||||||
| flag or `real:1` query. | flag or `real:1` query. | ||||||
| 
 | 
 | ||||||
| ## Account names | # ACCOUNT NAMES | ||||||
| 
 | 
 | ||||||
| Account names typically have several parts separated by a full colon, from | Account names typically have several parts separated by a full colon, from | ||||||
| which hledger derives a hierarchical chart of accounts. They can be | which hledger derives a hierarchical chart of accounts. They can be | ||||||
| @ -398,7 +398,7 @@ Because of this, they must always be followed by **two or more spaces** (or newl | |||||||
| 
 | 
 | ||||||
| Account names can be [aliased](#rewriting-accounts). | Account names can be [aliased](#rewriting-accounts). | ||||||
| 
 | 
 | ||||||
| ## Amounts | # AMOUNTS | ||||||
| 
 | 
 | ||||||
| After the account name, there is usually an amount. | After the account name, there is usually an amount. | ||||||
| (Important: between account name and amount, there must be **two or more spaces**.) | (Important: between account name and amount, there must be **two or more spaces**.) | ||||||
| @ -443,7 +443,7 @@ A decimal mark can be written as a period or a comma: | |||||||
|     1.23 |     1.23 | ||||||
|     1,23456780000009 |     1,23456780000009 | ||||||
| 
 | 
 | ||||||
| ### Digit group marks | ## Digit group marks | ||||||
| 
 | 
 | ||||||
| In the integer part of the quantity (left of the decimal mark), groups | In the integer part of the quantity (left of the decimal mark), groups | ||||||
| of digits can optionally be separated by a "digit group mark" - a | of digits can optionally be separated by a "digit group mark" - a | ||||||
| @ -479,7 +479,7 @@ commodity       1 000 000.9455 | |||||||
| 
 | 
 | ||||||
| <a name="amount-display-style"></a> | <a name="amount-display-style"></a> | ||||||
| 
 | 
 | ||||||
| ### Commodity display style | ## Commodity display style | ||||||
| 
 | 
 | ||||||
| For each commodity, hledger chooses a consistent style to use when | For each commodity, hledger chooses a consistent style to use when | ||||||
| displaying amounts. (Except [price amounts](#prices), which are always | displaying amounts. (Except [price amounts](#prices), which are always | ||||||
| @ -515,7 +515,7 @@ In summary, each commodity's amounts will be normalised to | |||||||
| If reports are showing amounts in a way you don't like (eg, with too many decimal places),  | If reports are showing amounts in a way you don't like (eg, with too many decimal places),  | ||||||
| use a [commodity directive](#declaring-commodities) to set your preferred style. | use a [commodity directive](#declaring-commodities) to set your preferred style. | ||||||
| 
 | 
 | ||||||
| ### Rounding | ## Rounding | ||||||
| 
 | 
 | ||||||
| Amounts are stored internally as decimal numbers with up to 255 decimal places, | Amounts are stored internally as decimal numbers with up to 255 decimal places, | ||||||
| and displayed with the number of decimal places specified by the commodity display style. | and displayed with the number of decimal places specified by the commodity display style. | ||||||
| @ -524,7 +524,7 @@ it rounds to the nearest even number, eg 0.5 displayed with zero decimal places | |||||||
| (Guaranteed since hledger 1.17.1; in older versions this could vary  if hledger was built with Decimal < 0.5.1.) | (Guaranteed since hledger 1.17.1; in older versions this could vary  if hledger was built with Decimal < 0.5.1.) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Transaction prices | # TRANSACTION PRICES | ||||||
| 
 | 
 | ||||||
| Within a transaction, you can note an amount's price in another commodity. | Within a transaction, you can note an amount's price in another commodity. | ||||||
| This can be used to document the cost (in a purchase) or selling price (in a sale). | This can be used to document the cost (in a purchase) or selling price (in a sale). | ||||||
| @ -597,7 +597,7 @@ $ hledger bal -N --flat -B | |||||||
|                 €100  assets:euros |                 €100  assets:euros | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Lot prices and lot dates | # LOT PRICES, LOT DATES | ||||||
| 
 | 
 | ||||||
| Ledger allows another kind of price,  | Ledger allows another kind of price,  | ||||||
| [lot price](http://ledger-cli.org/3.0/doc/ledger3.html#Fixing-Lot-Prices) | [lot price](http://ledger-cli.org/3.0/doc/ledger3.html#Fixing-Lot-Prices) | ||||||
| @ -608,7 +608,7 @@ hledger will parse these, for compatibility with Ledger journals, but currently | |||||||
| A [transaction price](#transaction-prices), lot price and/or lot date may appear in any order, | A [transaction price](#transaction-prices), lot price and/or lot date may appear in any order, | ||||||
| after the posting amount and before the balance assertion if any. | after the posting amount and before the balance assertion if any. | ||||||
| 
 | 
 | ||||||
| ## Balance assertions | # BALANCE ASSERTIONS | ||||||
| 
 | 
 | ||||||
| hledger supports | hledger supports | ||||||
| [Ledger-style balance assertions](http://ledger-cli.org/3.0/doc/ledger3.html#Balance-assertions) | [Ledger-style balance assertions](http://ledger-cli.org/3.0/doc/ledger3.html#Balance-assertions) | ||||||
| @ -635,7 +635,7 @@ the `-I/--ignore-assertions` flag, which can be useful for | |||||||
| troubleshooting or for reading Ledger files. | troubleshooting or for reading Ledger files. | ||||||
| (Note: this flag currently does not disable balance assignments, below). | (Note: this flag currently does not disable balance assignments, below). | ||||||
| 
 | 
 | ||||||
| ### Assertions and ordering | ## Assertions and ordering | ||||||
| 
 | 
 | ||||||
| hledger sorts an account's postings and assertions first by date and | hledger sorts an account's postings and assertions first by date and | ||||||
| then (for postings on the same day) by parse order. Note this is | then (for postings on the same day) by parse order. Note this is | ||||||
| @ -650,7 +650,7 @@ updating. This order dependence does bring an advantage: precise | |||||||
| control over the order of postings and assertions within a day, so you | control over the order of postings and assertions within a day, so you | ||||||
| can assert intra-day balances. | can assert intra-day balances. | ||||||
| 
 | 
 | ||||||
| ### Assertions and included files | ## Assertions and included files | ||||||
| 
 | 
 | ||||||
| With [included files](#including-other-files), things are a little | With [included files](#including-other-files), things are a little | ||||||
| more complicated. Including preserves the ordering of postings and | more complicated. Including preserves the ordering of postings and | ||||||
| @ -659,13 +659,13 @@ day, split across different files, and you also want to assert the | |||||||
| account's balance on the same day, you'll have to put the assertion | account's balance on the same day, you'll have to put the assertion | ||||||
| in the right file. | in the right file. | ||||||
| 
 | 
 | ||||||
| ### Assertions and multiple -f options | ## Assertions and multiple -f options | ||||||
| 
 | 
 | ||||||
| Balance assertions don't work well across files specified | Balance assertions don't work well across files specified | ||||||
| with multiple -f options. Use include or [concatenate the files](hledger.html#input-files) | with multiple -f options. Use include or [concatenate the files](hledger.html#input-files) | ||||||
| instead. | instead. | ||||||
| 
 | 
 | ||||||
| ### Assertions and commodities | ## Assertions and commodities | ||||||
| 
 | 
 | ||||||
| The asserted balance must be a simple single-commodity amount, and in | The asserted balance must be a simple single-commodity amount, and in | ||||||
| fact the assertion checks only this commodity's balance within the | fact the assertion checks only this commodity's balance within the | ||||||
| @ -713,7 +713,7 @@ One workaround is to isolate each commodity into its own subaccount: | |||||||
|   a:euro   0 ==  1€ |   a:euro   0 ==  1€ | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Assertions and prices | ## Assertions and prices | ||||||
| 
 | 
 | ||||||
| Balance assertions ignore [transaction prices](#transaction-prices), | Balance assertions ignore [transaction prices](#transaction-prices), | ||||||
| and should normally be written without one: | and should normally be written without one: | ||||||
| @ -728,7 +728,7 @@ even though they don't affect whether the assertion passes or fails. | |||||||
| This is for backward compatibility (hledger's [close](hledger.html#close) command used to generate balance assertions with prices), | This is for backward compatibility (hledger's [close](hledger.html#close) command used to generate balance assertions with prices), | ||||||
| and because [balance *assignments*](#balance-assignments) do use them (see below). | and because [balance *assignments*](#balance-assignments) do use them (see below). | ||||||
| 
 | 
 | ||||||
| ### Assertions and subaccounts | ## Assertions and subaccounts | ||||||
| 
 | 
 | ||||||
| The balance assertions above (`=` and `==`) do not count the balance | The balance assertions above (`=` and `==`) do not count the balance | ||||||
| from subaccounts; they check the account's exclusive balance only. | from subaccounts; they check the account's exclusive balance only. | ||||||
| @ -742,13 +742,13 @@ You can assert the balance including subaccounts by writing `=*` or `==*`, eg: | |||||||
|   checking         1  ==* 11 |   checking         1  ==* 11 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Assertions and virtual postings | ## Assertions and virtual postings | ||||||
| 
 | 
 | ||||||
| Balance assertions are checked against all postings, both real and | Balance assertions are checked against all postings, both real and | ||||||
| [virtual](#virtual-postings). They are not affected by the `--real/-R` | [virtual](#virtual-postings). They are not affected by the `--real/-R` | ||||||
| flag or `real:` query. | flag or `real:` query. | ||||||
| 
 | 
 | ||||||
| ### Assertions and precision | ## Assertions and precision | ||||||
| 
 | 
 | ||||||
| Balance assertions compare the exactly calculated amounts, | Balance assertions compare the exactly calculated amounts, | ||||||
| which are not always what is shown by reports. | which are not always what is shown by reports. | ||||||
| @ -756,7 +756,7 @@ Eg a [commodity directive](http://hledger.org/journal.html#declaring-commodities | |||||||
| may limit the display precision, but this will not affect balance assertions. | may limit the display precision, but this will not affect balance assertions. | ||||||
| Balance assertion failure messages show exact amounts. | Balance assertion failure messages show exact amounts. | ||||||
| 
 | 
 | ||||||
| ## Balance assignments | # BALANCE ASSIGNMENTS | ||||||
| 
 | 
 | ||||||
| [Ledger-style balance assignments](http://ledger-cli.org/3.0/doc/ledger3.html#Balance-assignments) are also supported. | [Ledger-style balance assignments](http://ledger-cli.org/3.0/doc/ledger3.html#Balance-assignments) are also supported. | ||||||
| These are like [balance assertions](#balance-assertions), but with no posting amount on the left side of the equals sign; | These are like [balance assertions](#balance-assertions), but with no posting amount on the left side of the equals sign; | ||||||
| @ -785,7 +785,7 @@ Note that using balance assignments makes your journal a little less explicit; | |||||||
| to know the exact amount posted, you have to run hledger or do the calculations yourself, | to know the exact amount posted, you have to run hledger or do the calculations yourself, | ||||||
| instead of just reading it. | instead of just reading it. | ||||||
| 
 | 
 | ||||||
| ### Balance assignments and prices | ## Balance assignments and prices | ||||||
| 
 | 
 | ||||||
| A [transaction price](#transaction-prices) in a balance assignment | A [transaction price](#transaction-prices) in a balance assignment | ||||||
| will cause the calculated amount to have that price attached: | will cause the calculated amount to have that price attached: | ||||||
| @ -800,7 +800,7 @@ $ hledger print --explicit | |||||||
|     (a)         $1 @ €2 = $1 @ €2 |     (a)         $1 @ €2 = $1 @ €2 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Directives | # DIRECTIVES | ||||||
| 
 | 
 | ||||||
| A directive is a line in the journal beginning with a special keyword, | A directive is a line in the journal beginning with a special keyword, | ||||||
| that influences how the journal is processed. | that influences how the journal is processed. | ||||||
| @ -863,7 +863,7 @@ As you can see, directives vary in which journal entries and files they affect, | |||||||
| and whether they are focussed on input (parsing) or output (reports). | and whether they are focussed on input (parsing) or output (reports). | ||||||
| Some directives have multiple effects. | Some directives have multiple effects. | ||||||
| 
 | 
 | ||||||
| ### Directives and multiple files | ## Directives and multiple files | ||||||
| 
 | 
 | ||||||
| If you use multiple `-f`/`--file` options, or the `include` directive, | If you use multiple `-f`/`--file` options, or the `include` directive, | ||||||
| hledger will process multiple input files. But note that directives | hledger will process multiple input files. But note that directives | ||||||
| @ -880,13 +880,13 @@ It can be surprising though; for example, it means that | |||||||
| [`alias` directives do not affect parent or sibling files](#aliases-and-multiple-files) | [`alias` directives do not affect parent or sibling files](#aliases-and-multiple-files) | ||||||
| (see below). | (see below). | ||||||
| 
 | 
 | ||||||
| ### Comment blocks | ## Comment blocks | ||||||
| 
 | 
 | ||||||
| A line containing just `comment` starts a commented region of the file, | A line containing just `comment` starts a commented region of the file, | ||||||
| and a line containing just `end comment` (or the end of the current file) ends it. | and a line containing just `end comment` (or the end of the current file) ends it. | ||||||
| See also [comments](#comments). | See also [comments](#comments). | ||||||
| 
 | 
 | ||||||
| ### Including other files | ## Including other files | ||||||
| 
 | 
 | ||||||
| You can pull in the content of additional files by writing an include directive, like this: | You can pull in the content of additional files by writing an include directive, like this: | ||||||
| 
 | 
 | ||||||
| @ -914,7 +914,7 @@ overriding the file extension (as described in | |||||||
| 
 | 
 | ||||||
| [glob patterns]: https://hackage.haskell.org/package/Glob-0.9.2/docs/System-FilePath-Glob.html#v:compile | [glob patterns]: https://hackage.haskell.org/package/Glob-0.9.2/docs/System-FilePath-Glob.html#v:compile | ||||||
| 
 | 
 | ||||||
| ### Default year | ## Default year | ||||||
| 
 | 
 | ||||||
| You can set a default year to be used for subsequent dates which don't | You can set a default year to be used for subsequent dates which don't | ||||||
| specify a year. This is a line beginning with `Y` followed by the year. Eg: | specify a year. This is a line beginning with `Y` followed by the year. Eg: | ||||||
| @ -937,7 +937,7 @@ Y2010  ; change default year to 2010 | |||||||
|   assets |   assets | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Declaring commodities | ## Declaring commodities | ||||||
| 
 | 
 | ||||||
| The `commodity` directive has several functions: | The `commodity` directive has several functions: | ||||||
| 
 | 
 | ||||||
| @ -992,12 +992,12 @@ Note hledger normally uses | |||||||
| so 0.5 displayed with zero decimal digits is "0".  | so 0.5 displayed with zero decimal digits is "0".  | ||||||
| (More at [Commodity display style](#commodity-display-style).) | (More at [Commodity display style](#commodity-display-style).) | ||||||
| 
 | 
 | ||||||
| #### Commodity error checking | ### Commodity error checking | ||||||
| 
 | 
 | ||||||
| In [strict mode], enabled with the `-s`/`--strict` flag, hledger will report an error if a | In [strict mode], enabled with the `-s`/`--strict` flag, hledger will report an error if a | ||||||
| commodity symbol is used that has not been declared by a [`commodity` directive](#declaring-commodities). This works similarly to [account error checking](#account-error-checking), see the notes there for more details. | commodity symbol is used that has not been declared by a [`commodity` directive](#declaring-commodities). This works similarly to [account error checking](#account-error-checking), see the notes there for more details. | ||||||
| 
 | 
 | ||||||
| ### Default commodity | ## Default commodity | ||||||
| 
 | 
 | ||||||
| The `D` directive sets a default commodity, to be used for amounts without a commodity symbol (ie, plain numbers). | The `D` directive sets a default commodity, to be used for amounts without a commodity symbol (ie, plain numbers). | ||||||
| This commodity will be applied to all subsequent commodity-less amounts, or until the next `D` directive. | This commodity will be applied to all subsequent commodity-less amounts, or until the next `D` directive. | ||||||
| @ -1019,7 +1019,7 @@ D $1,000.00 | |||||||
|   b |   b | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Declaring market prices | ## Declaring market prices | ||||||
| 
 | 
 | ||||||
| The `P` directive declares a market price, which is | The `P` directive declares a market price, which is | ||||||
| an exchange rate between two commodities on a certain date. | an exchange rate between two commodities on a certain date. | ||||||
| @ -1049,7 +1049,7 @@ P 2010/1/1 € $1.40 | |||||||
| The `-V`, `-X` and `--value` flags use these market prices to show amount values | The `-V`, `-X` and `--value` flags use these market prices to show amount values | ||||||
| in another commodity. See [Valuation](hledger.html#valuation). | in another commodity. See [Valuation](hledger.html#valuation). | ||||||
| 
 | 
 | ||||||
| ### Declaring accounts | ## Declaring accounts | ||||||
| 
 | 
 | ||||||
| `account` directives can be used to declare accounts  | `account` directives can be used to declare accounts  | ||||||
| (ie, the places that amounts are transferred from and to). | (ie, the places that amounts are transferred from and to). | ||||||
| @ -1075,7 +1075,7 @@ The simplest form is just the word `account` followed by a hledger-style | |||||||
| account assets:bank:checking | account assets:bank:checking | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| #### Account error checking | ### Account error checking | ||||||
| 
 | 
 | ||||||
| By default, accounts come into existence when a transaction references them by name. | By default, accounts come into existence when a transaction references them by name. | ||||||
| This is convenient, but it means hledger can't warn you when you mis-spell an account name in the journal. | This is convenient, but it means hledger can't warn you when you mis-spell an account name in the journal. | ||||||
| @ -1089,7 +1089,7 @@ In [strict mode], enabled with the `-s`/`--strict` flag, hledger will report an | |||||||
| - Accounts can only be declared in `journal` files (but will affect included files in other formats). | - Accounts can only be declared in `journal` files (but will affect included files in other formats). | ||||||
| - It's currently not possible to declare "all possible subaccounts" with a wildcard; every account posted to must be declared. | - It's currently not possible to declare "all possible subaccounts" with a wildcard; every account posted to must be declared. | ||||||
| 
 | 
 | ||||||
| #### Account comments | ### Account comments | ||||||
| 
 | 
 | ||||||
| [Comments](#comments), beginning with a semicolon, can be added: | [Comments](#comments), beginning with a semicolon, can be added: | ||||||
| 
 | 
 | ||||||
| @ -1108,7 +1108,7 @@ Same-line comments are not supported by Ledger, or hledger <1.13. | |||||||
| 
 | 
 | ||||||
| <!-- Account comments may include [tags](journal.html#tags), though we don't yet use them for anything. --> | <!-- Account comments may include [tags](journal.html#tags), though we don't yet use them for anything. --> | ||||||
| 
 | 
 | ||||||
| #### Account subdirectives | ### Account subdirectives | ||||||
| 
 | 
 | ||||||
| We also allow (and ignore) Ledger-style indented subdirectives, just for compatibility.: | We also allow (and ignore) Ledger-style indented subdirectives, just for compatibility.: | ||||||
| ```journal | ```journal | ||||||
| @ -1123,7 +1123,7 @@ account ACCTNAME  [ACCTTYPE] [;COMMENT] | |||||||
|   [LEDGER-STYLE SUBDIRECTIVES, IGNORED] |   [LEDGER-STYLE SUBDIRECTIVES, IGNORED] | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| #### Account types | ### Account types | ||||||
| 
 | 
 | ||||||
| hledger recognises five main types of account, | hledger recognises five main types of account, | ||||||
| corresponding to the account classes in the [accounting equation][]: | corresponding to the account classes in the [accounting equation][]: | ||||||
| @ -1139,7 +1139,7 @@ and which causes accounts to appear in the [cashflow][] report. | |||||||
| ("Cash" here means [liquid assets][CCE], eg bank balances | ("Cash" here means [liquid assets][CCE], eg bank balances | ||||||
| but typically not investments or receivables.) | but typically not investments or receivables.) | ||||||
| 
 | 
 | ||||||
| ##### Declaring account types | #### Declaring account types | ||||||
| 
 | 
 | ||||||
| Generally, to make these reports work you should declare your | Generally, to make these reports work you should declare your | ||||||
| top-level accounts and their types,  | top-level accounts and their types,  | ||||||
| @ -1162,7 +1162,7 @@ account revenues     ; type: Revenue | |||||||
| account expenses     ; type: Expense | account expenses     ; type: Expense | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ##### Auto-detected account types | #### Auto-detected account types | ||||||
| 
 | 
 | ||||||
| If you happen to use common english top-level account names, you may | If you happen to use common english top-level account names, you may | ||||||
| not need to declare account types, as they will be detected | not need to declare account types, as they will be detected | ||||||
| @ -1183,7 +1183,7 @@ automatically using the following rules: | |||||||
| Even so, explicit declarations may be a good idea, for clarity and | Even so, explicit declarations may be a good idea, for clarity and | ||||||
| predictability.  | predictability.  | ||||||
| 
 | 
 | ||||||
| ##### Interference from auto-detected account types | #### Interference from auto-detected account types | ||||||
| 
 | 
 | ||||||
| If you assign any account type, it's a good idea to assign all of | If you assign any account type, it's a good idea to assign all of | ||||||
| them, to prevent any confusion from mixing declared and auto-detected | them, to prevent any confusion from mixing declared and auto-detected | ||||||
| @ -1201,7 +1201,7 @@ account liabilities  ; type:Equity | |||||||
|   equity       -2 |   equity       -2 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ##### Old account type syntax | #### Old account type syntax | ||||||
| 
 | 
 | ||||||
| In some hledger journals you might instead see this old syntax (the | In some hledger journals you might instead see this old syntax (the | ||||||
| letters ALERX, separated from the account name by two or more spaces); | letters ALERX, separated from the account name by two or more spaces); | ||||||
| @ -1225,7 +1225,7 @@ account expenses     X | |||||||
| [accounting equation]: https://en.wikipedia.org/wiki/Accounting_equation | [accounting equation]: https://en.wikipedia.org/wiki/Accounting_equation | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #### Account display order | ### Account display order | ||||||
| 
 | 
 | ||||||
| Account directives also set the order in which accounts are displayed, | Account directives also set the order in which accounts are displayed, | ||||||
| eg in reports, the hledger-ui accounts screen, and the hledger-web sidebar. | eg in reports, the hledger-ui accounts screen, and the hledger-web sidebar. | ||||||
| @ -1262,7 +1262,7 @@ This means: | |||||||
| - you will sometimes declare parent accounts (eg `account other` above) that you don't intend to post to, just to customize their display order | - you will sometimes declare parent accounts (eg `account other` above) that you don't intend to post to, just to customize their display order | ||||||
| - sibling accounts stay together (you couldn't display `x:y` in between `a:b` and `a:c`). | - sibling accounts stay together (you couldn't display `x:y` in between `a:b` and `a:c`). | ||||||
| 
 | 
 | ||||||
| ### Rewriting accounts | ## Rewriting accounts | ||||||
| 
 | 
 | ||||||
| You can define account alias rules which rewrite your account names, or parts of them, | You can define account alias rules which rewrite your account names, or parts of them, | ||||||
| before generating reports. | before generating reports. | ||||||
| @ -1278,7 +1278,7 @@ They do not affect account names being entered via hledger add or hledger-web. | |||||||
| 
 | 
 | ||||||
| See also [Rewrite account names](rewrite-account-names.html). | See also [Rewrite account names](rewrite-account-names.html). | ||||||
| 
 | 
 | ||||||
| #### Basic aliases | ### Basic aliases | ||||||
| 
 | 
 | ||||||
| To set an account alias, use the `alias` directive in your journal file. | To set an account alias, use the `alias` directive in your journal file. | ||||||
| This affects all subsequent journal entries in the current file or its | This affects all subsequent journal entries in the current file or its | ||||||
| @ -1301,7 +1301,7 @@ alias checking = assets:bank:wells fargo:checking | |||||||
| ; rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a" | ; rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a" | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| #### Regex aliases | ### Regex aliases | ||||||
| 
 | 
 | ||||||
| There is also a more powerful variant that uses a regular expression, | There is also a more powerful variant that uses a regular expression, | ||||||
| indicated by the forward slashes: | indicated by the forward slashes: | ||||||
| @ -1328,7 +1328,7 @@ alias /^(.+):bank:([^:]+):(.*)/ = \1:\2 \3 | |||||||
| Also note that REPLACEMENT continues to the end of line (or on command line, | Also note that REPLACEMENT continues to the end of line (or on command line, | ||||||
| to end of option argument), so it can contain trailing whitespace. | to end of option argument), so it can contain trailing whitespace. | ||||||
| 
 | 
 | ||||||
| #### Combining aliases | ### Combining aliases | ||||||
| 
 | 
 | ||||||
| You can define as many aliases as you like, using journal directives and/or command line options. | You can define as many aliases as you like, using journal directives and/or command line options. | ||||||
| 
 | 
 | ||||||
| @ -1353,7 +1353,7 @@ independent of which files are being read and in which order. | |||||||
| 
 | 
 | ||||||
| In case of trouble, adding `--debug=6` to the command line will show which aliases are being applied when. | In case of trouble, adding `--debug=6` to the command line will show which aliases are being applied when. | ||||||
| 
 | 
 | ||||||
| #### Aliases and multiple files | ### Aliases and multiple files | ||||||
| 
 | 
 | ||||||
| As explained at [Directives and multiple files](#directives-and-multiple-files), | As explained at [Directives and multiple files](#directives-and-multiple-files), | ||||||
| `alias` directives do not affect parent or sibling files. Eg in this command, | `alias` directives do not affect parent or sibling files. Eg in this command, | ||||||
| @ -1382,7 +1382,7 @@ alias bar=Bar | |||||||
| include c.journal  ; also affected | include c.journal  ; also affected | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| #### `end aliases` | ### `end aliases` | ||||||
| 
 | 
 | ||||||
| You can clear (forget) all currently defined aliases with the `end | You can clear (forget) all currently defined aliases with the `end | ||||||
| aliases` directive: | aliases` directive: | ||||||
| @ -1391,7 +1391,7 @@ aliases` directive: | |||||||
| end aliases | end aliases | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Default parent account | ## Default parent account | ||||||
| 
 | 
 | ||||||
| You can specify a parent account which will be prepended to all accounts | You can specify a parent account which will be prepended to all accounts | ||||||
| within a section of the journal. Use the `apply account` and `end apply account` | within a section of the journal. Use the `apply account` and `end apply account` | ||||||
| @ -1430,7 +1430,7 @@ A default parent account also affects [account directives](#declaring-accounts). | |||||||
| It does not affect account names being entered via hledger add or hledger-web. | It does not affect account names being entered via hledger add or hledger-web. | ||||||
| If account aliases are present, they are applied after the default parent account. | If account aliases are present, they are applied after the default parent account. | ||||||
| 
 | 
 | ||||||
| ## Periodic transactions | # PERIODIC TRANSACTIONS | ||||||
| 
 | 
 | ||||||
| Periodic transaction rules describe transactions that recur. | Periodic transaction rules describe transactions that recur. | ||||||
| They allow hledger to generate temporary future transactions to help with forecasting, | They allow hledger to generate temporary future transactions to help with forecasting, | ||||||
| @ -1457,7 +1457,7 @@ Periodic transaction rules also have a second meaning: | |||||||
| they are used to define budget goals, shown in [budget reports](hledger.html#budget-report). | they are used to define budget goals, shown in [budget reports](hledger.html#budget-report). | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ### Periodic rule syntax | ## Periodic rule syntax | ||||||
| 
 | 
 | ||||||
| A periodic transaction rule looks like a normal journal entry, | A periodic transaction rule looks like a normal journal entry, | ||||||
| with the date replaced by a tilde (`~`) followed by a | with the date replaced by a tilde (`~`) followed by a | ||||||
| @ -1476,7 +1476,7 @@ Partial or relative dates (M/D, D, tomorrow, last week) in the period expression | |||||||
| can work (useful or not). They will be relative to today's date, unless | can work (useful or not). They will be relative to today's date, unless | ||||||
| a Y default year directive is in effect, in which case they will be relative to Y/1/1. | a Y default year directive is in effect, in which case they will be relative to Y/1/1. | ||||||
| 
 | 
 | ||||||
| ### Two spaces between period expression and description! | ## Two spaces between period expression and description! | ||||||
| 
 | 
 | ||||||
| If the period expression is followed by a transaction description, | If the period expression is followed by a transaction description, | ||||||
| these must be separated by **two or more spaces**. | these must be separated by **two or more spaces**. | ||||||
| @ -1497,7 +1497,7 @@ So, | |||||||
| - Do write two spaces between your period expression and your transaction description, if any. | - Do write two spaces between your period expression and your transaction description, if any. | ||||||
| - Don't accidentally write two spaces in the middle of your period expression. | - Don't accidentally write two spaces in the middle of your period expression. | ||||||
| 
 | 
 | ||||||
| ### Forecasting with periodic transactions | ## Forecasting with periodic transactions | ||||||
| 
 | 
 | ||||||
| The `--forecast` flag activates any periodic transaction rules in the journal. | The `--forecast` flag activates any periodic transaction rules in the journal. | ||||||
| They will generate temporary recurring transactions, | They will generate temporary recurring transactions, | ||||||
| @ -1544,7 +1544,7 @@ like in a [`date:` query](hledger.html#queries). | |||||||
| (See also hledger.1 -> [Report start & end date](hledger.html#report-start-end-date)). | (See also hledger.1 -> [Report start & end date](hledger.html#report-start-end-date)). | ||||||
| Some examples: `--forecast=202001-202004`, `--forecast=jan-`, `--forecast=2020`. | Some examples: `--forecast=202001-202004`, `--forecast=jan-`, `--forecast=2020`. | ||||||
| 
 | 
 | ||||||
| ### Budgeting with periodic transactions | ## Budgeting with periodic transactions | ||||||
| 
 | 
 | ||||||
| With the `--budget` flag, currently supported by the balance command, | With the `--budget` flag, currently supported by the balance command, | ||||||
| each periodic transaction rule declares recurring budget goals for the specified accounts. | each periodic transaction rule declares recurring budget goals for the specified accounts. | ||||||
| @ -1558,7 +1558,7 @@ See also: [Budgeting and Forecasting](budgeting-and-forecasting.html). | |||||||
| <a name="automated-postings"></a> | <a name="automated-postings"></a> | ||||||
| <a name="auto-postings"></a> | <a name="auto-postings"></a> | ||||||
| 
 | 
 | ||||||
| ## Auto postings | # AUTO POSTINGS | ||||||
| 
 | 
 | ||||||
| "Automated postings" or "auto postings" are extra postings which get | "Automated postings" or "auto postings" are extra postings which get | ||||||
| added automatically to transactions which match certain queries, | added automatically to transactions which match certain queries, | ||||||
| @ -1626,20 +1626,20 @@ $ hledger print --auto | |||||||
|     assets:checking            $20 |     assets:checking            $20 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Auto postings and multiple files | ## Auto postings and multiple files | ||||||
| 
 | 
 | ||||||
| An auto posting rule can affect any transaction in the current file, | An auto posting rule can affect any transaction in the current file, | ||||||
| or in any parent file or child file. Note, currently it will not | or in any parent file or child file. Note, currently it will not | ||||||
| affect sibling files (when multiple `-f`/`--file` are used - see | affect sibling files (when multiple `-f`/`--file` are used - see | ||||||
| [#1212](https://github.com/simonmichael/hledger/issues/1212)). | [#1212](https://github.com/simonmichael/hledger/issues/1212)). | ||||||
| 
 | 
 | ||||||
| ### Auto postings and dates | ## Auto postings and dates | ||||||
| 
 | 
 | ||||||
| A [posting date](#posting-dates) (or secondary date) in the matched posting, | A [posting date](#posting-dates) (or secondary date) in the matched posting, | ||||||
| or (taking precedence) a posting date in the auto posting rule itself, | or (taking precedence) a posting date in the auto posting rule itself, | ||||||
| will also be used in the generated posting. | will also be used in the generated posting. | ||||||
| 
 | 
 | ||||||
| ### Auto postings and transaction balancing / inferred amounts / balance assertions | ## Auto postings and transaction balancing / inferred amounts / balance assertions | ||||||
| 
 | 
 | ||||||
| Currently, auto postings are added: | Currently, auto postings are added: | ||||||
| 
 | 
 | ||||||
| @ -1651,7 +1651,7 @@ after auto postings are added. This changed in hledger 1.12+; see | |||||||
| [#893](https://github.com/simonmichael/hledger/issues/893) for | [#893](https://github.com/simonmichael/hledger/issues/893) for | ||||||
| background. | background. | ||||||
| 
 | 
 | ||||||
| ### Auto posting tags | ## Auto posting tags | ||||||
| 
 | 
 | ||||||
| Automated postings will have some extra [tags](#tags-1): | Automated postings will have some extra [tags](#tags-1): | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| % hledger_timeclock(5) hledger _version_ | % hledger_timeclock(5) | ||||||
| % _author_ | % _author_ | ||||||
| % _monthyear_ | % _monthyear_ | ||||||
| 
 | 
 | ||||||
| @ -6,7 +6,11 @@ _man_({{ | |||||||
| # NAME | # NAME | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| Timeclock - the time logging format of timeclock.el, as read by hledger | m4_dnl _info_({{ | ||||||
|  | m4_dnl # hledger timeclock format | ||||||
|  | m4_dnl }}) | ||||||
|  | 
 | ||||||
|  | The time logging format of timeclock.el, as read by hledger. | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| % hledger_timedot(5) hledger _version_ | % hledger_timedot(5) | ||||||
| % _author_ | % _author_ | ||||||
| % _monthyear_ | % _monthyear_ | ||||||
| 
 | 
 | ||||||
| @ -6,7 +6,11 @@ _man_({{ | |||||||
| # NAME | # NAME | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| Timedot - hledger's human-friendly time logging format | m4_dnl _info_({{ | ||||||
|  | m4_dnl # hledger timedot format | ||||||
|  | m4_dnl }}) | ||||||
|  | 
 | ||||||
|  | hledger's human-friendly time logging format. | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| % hledger-ui(1) hledger-ui _version_ | % hledger-ui(1) | ||||||
| % _author_ | % _author_ | ||||||
| % _monthyear_ | % _monthyear_ | ||||||
| 
 | 
 | ||||||
| @ -6,7 +6,7 @@ _man_({{ | |||||||
| # NAME | # NAME | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| hledger-ui - terminal interface for the hledger accounting tool | A terminal interface (TUI) for the hledger accounting tool. | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # SYNOPSIS | # SYNOPSIS | ||||||
| @ -87,18 +87,18 @@ hledger help options: | |||||||
| 
 | 
 | ||||||
| _helpoptions_ | _helpoptions_ | ||||||
| 
 | 
 | ||||||
| a @file argument will be expanded to the contents of file, | A @FILE argument will be expanded to the contents of FILE, | ||||||
| which should contain one command line option/argument per line. | which should contain one command line option/argument per line. | ||||||
| (to prevent this, insert a `--` argument before.) | (To prevent this, insert a `--` argument before.) | ||||||
| 
 | 
 | ||||||
| # keys | # KEYS | ||||||
| 
 | 
 | ||||||
| `?` shows a help dialog listing all keys. | `?` shows a help dialog listing all keys. | ||||||
| (some of these also appear in the quick help at the bottom of each screen.) | (Some of these also appear in the quick help at the bottom of each screen.) | ||||||
| press `?` again (or `escape`, or `left`, or `q`) to close it. | Press `?` again (or `ESCAPE`, or `LEFT`, or `q`) to close it. | ||||||
| the following keys work on most screens: | The following keys work on most screens: | ||||||
| 
 | 
 | ||||||
| the cursor keys navigate: | The cursor keys navigate: | ||||||
| `right` (or `enter`) goes deeper, | `right` (or `enter`) goes deeper, | ||||||
| `left` returns to the previous screen, | `left` returns to the previous screen, | ||||||
| `up`/`down`/`page up`/`page down`/`home`/`end` move up and down through lists. | `up`/`down`/`page up`/`page down`/`home`/`end` move up and down through lists. | ||||||
| @ -108,90 +108,90 @@ A tip: movement speed is limited by your keyboard repeat rate, | |||||||
| to move faster you may want to adjust it. | to move faster you may want to adjust it. | ||||||
| (If you're on a mac, the karabiner app is one way to do that.) | (If you're on a mac, the karabiner app is one way to do that.) | ||||||
| 
 | 
 | ||||||
| with shift pressed, the cursor keys adjust the report period, | With shift pressed, the cursor keys adjust the report period, | ||||||
| limiting the transactions to be shown (by default, all are shown). | limiting the transactions to be shown (by default, all are shown). | ||||||
| `shift-down/up` steps downward and upward through these standard report period durations: | `shift-down/up` steps downward and upward through these standard report period durations: | ||||||
| year, quarter, month, week, day. | year, quarter, month, week, day. | ||||||
| then, `shift-left/right` moves to the previous/next period. | Then, `shift-left/right` moves to the previous/next period. | ||||||
| `T` sets the report period to today. | `T` sets the report period to today. | ||||||
| with the `--watch` option, when viewing a "current" period | With the `--watch` option, when viewing a "current" period | ||||||
| (the current day, week, month, quarter, or year), | (the current day, week, month, quarter, or year), | ||||||
| the period will move automatically to track the current date. | the period will move automatically to track the current date. | ||||||
| to set a non-standard period, you can use `/` and a `date:` query. | To set a non-standard period, you can use `/` and a `date:` query. | ||||||
| 
 | 
 | ||||||
| `/` lets you set a general filter query limiting the data shown, | `/` lets you set a general filter query limiting the data shown, | ||||||
| using the same [query terms](hledger.html#queries) as in hledger and hledger-web. | using the same [query terms](hledger.html#queries) as in hledger and hledger-web. | ||||||
| while editing the query, you can use [ctrl-a/e/d/k, bs, cursor keys](http://hackage.haskell.org/package/brick-0.7/docs/brick-widgets-edit.html#t:editor); | While editing the query, you can use [CTRL-a/e/d/k, BS, cursor keys](http://hackage.haskell.org/package/brick-0.7/docs/brick-widgets-edit.html#t:editor); | ||||||
| press `enter` to set it, or `escape`to cancel. | press `ENTER` to set it, or `ESCAPE`to cancel. | ||||||
| there are also keys for quickly adjusting some common filters like account depth and transaction status (see below). | There are also keys for quickly adjusting some common filters like account depth and transaction status (see below). | ||||||
| `backspace` or `delete` removes all filters, showing all transactions. | `BACKSPACE` or `DELETE` removes all filters, showing all transactions. | ||||||
| 
 | 
 | ||||||
| as mentioned above, by default hledger-ui hides future transactions - | As mentioned above, by default hledger-ui hides future transactions - | ||||||
| both ordinary transactions recorded in the journal, and periodic | both ordinary transactions recorded in the journal, and periodic | ||||||
| transactions generated by rule. `f` toggles forecast mode, in which | transactions generated by rule. `F` toggles forecast mode, in which | ||||||
| future/forecasted transactions are shown. *(experimental)* | future/forecasted transactions are shown. | ||||||
| 
 | 
 | ||||||
| `escape` resets the UI state and jumps back to the top screen, | `ESCAPE` resets the UI state and jumps back to the top screen, | ||||||
| restoring the app's initial state at startup. | restoring the app's initial state at startup. | ||||||
| Or, it cancels minibuffer data entry or the help dialog. | Or, it cancels minibuffer data entry or the help dialog. | ||||||
| 
 | 
 | ||||||
| `ctrl-l` redraws the screen and centers the selection if possible | `CTRL-l` redraws the screen and centers the selection if possible | ||||||
| (selections near the top won't be centered, since we don't scroll above the top). | (selections near the top won't be centered, since we don't scroll above the top). | ||||||
| 
 | 
 | ||||||
| `g` reloads from the data file(s) and updates the current screen and any | `g` reloads from the data file(s) and updates the current screen and any | ||||||
| previous screens. (with large files, this could cause a noticeable pause.) | previous screens. (With large files, this could cause a noticeable pause.) | ||||||
| 
 | 
 | ||||||
| `i` toggles balance assertion checking. | `I` toggles balance assertion checking. | ||||||
| disabling balance assertions temporarily can be useful for troubleshooting. | Disabling balance assertions temporarily can be useful for troubleshooting. | ||||||
| 
 | 
 | ||||||
| `a` runs command-line hledger's add command, and reloads the updated file. | `a` runs command-line hledger's add command, and reloads the updated file. | ||||||
| this allows some basic data entry. | This allows some basic data entry. | ||||||
| 
 | 
 | ||||||
| `a` is like `a`, but runs the [hledger-iadd](http://hackage.haskell.org/package/hledger-iadd) tool, | `A` is like `a`, but runs the [hledger-iadd](http://hackage.haskell.org/package/hledger-iadd) tool, | ||||||
| which provides a terminal interface. | which provides a terminal interface. | ||||||
| this key will be available if `hledger-iadd` is installed in $path. | This key will be available if `hledger-iadd` is installed in $path. | ||||||
| 
 | 
 | ||||||
| `e` runs $hledger_ui_editor, or $editor, or a default (`emacsclient -a "" -nw`) on the journal file. | `E` runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (`emacsclient -a "" -nw`) on the journal file. | ||||||
| with some editors (emacs, vi), the cursor will be positioned at the current transaction | With some editors (emacs, vi), the cursor will be positioned at the current transaction | ||||||
| when invoked from the register and transaction screens, and at the error location (if possible) | when invoked from the register and transaction screens, and at the error location (if possible) | ||||||
| when invoked from the error screen. | when invoked from the error screen. | ||||||
| 
 | 
 | ||||||
| `b` toggles cost mode, showing amounts in their transaction price's | `B` toggles cost mode, showing amounts in their transaction price's | ||||||
| commodity (like toggling the | commodity (like toggling the | ||||||
| [`-b/--cost`](https://hledger.org/hledger.html#b-cost) flag). | [`-B/--cost`](https://hledger.org/hledger.html#b-cost) flag). | ||||||
| 
 | 
 | ||||||
| `v` toggles value mode, showing amounts' current market value in their | `V` toggles value mode, showing amounts' current market value in their | ||||||
| default valuation commodity (like toggling the | default valuation commodity (like toggling the | ||||||
| [`-v/--market`](https://hledger.org/hledger.html#v-market-value) flag). | [`-V/--market`](https://hledger.org/hledger.html#v-market-value) flag). | ||||||
| note, "current market value" means the value on the report end date if specified, otherwise today. | Note, "current market value" means the value on the report end date if specified, otherwise today. | ||||||
| to see the value on another date, you can temporarily set that as the report end date. | To see the value on another date, you can temporarily set that as the report end date. | ||||||
| eg: to see a transaction as it was valued on july 30, | Eg: to see a transaction as it was valued on july 30, | ||||||
| go to the accounts or register screen, | go to the accounts or register screen, | ||||||
| press `/`, | press `/`, | ||||||
| and add ` date:-7/30` to the query. | and add ` date:-7/30` to the query. | ||||||
| 
 | 
 | ||||||
| at most one of cost or value mode can be active at once. | At most one of cost or value mode can be active at once. | ||||||
| 
 | 
 | ||||||
| there's not yet any visual reminder when cost or value mode is active; | There's not yet any visual reminder when cost or value mode is active; | ||||||
| for now pressing `b` `b` `v` should reliably reset to normal mode. | for now pressing `b` `b` `v` should reliably reset to normal mode. | ||||||
| 
 | 
 | ||||||
| with --watch active, if you save an edit to the journal file | With `--watch` active, if you save an edit to the journal file | ||||||
| while viewing the transaction screen in cost or value mode, | while viewing the transaction screen in cost or value mode, | ||||||
| the `b`/`v` keys will stop working. | the `B`/`V` keys will stop working. | ||||||
| to work around, press g to force a manual reload, or exit the transaction screen. | To work around, press `g` to force a manual reload, or exit the transaction screen. | ||||||
| 
 | 
 | ||||||
| `q` quits the application. | `q` quits the application. | ||||||
| 
 | 
 | ||||||
| additional screen-specific keys are described below. | Additional screen-specific keys are described below. | ||||||
| 
 | 
 | ||||||
| # screens | # SCREENS | ||||||
| 
 | 
 | ||||||
| ## accounts screen | ## Accounts screen | ||||||
| 
 | 
 | ||||||
| this is normally the first screen displayed. | This is normally the first screen displayed. | ||||||
| it lists accounts and their balances, like hledger's balance command. | It lists accounts and their balances, like hledger's balance command. | ||||||
| by default, it shows all accounts and their latest ending balances (including the balances of subaccounts). | By default, it shows all accounts and their latest ending balances (including the balances of subaccounts). | ||||||
| if you specify a query on the command line, it shows just the matched accounts and the balances from matched transactions. | If you specify a query on the command line, it shows just the matched accounts and the balances from matched transactions. | ||||||
| 
 | 
 | ||||||
| Account names are shown as a flat list by default; press `t` to toggle tree mode. | Account names are shown as a flat list by default; press `t` to toggle tree mode. | ||||||
| In list mode, account balances are exclusive of subaccounts, except where subaccounts are hidden by a depth limit (see below). | In list mode, account balances are exclusive of subaccounts, except where subaccounts are hidden by a depth limit (see below). | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| % hledger-web(1) hledger-web _version_ | % hledger-web(1) | ||||||
| % _author_ | % _author_ | ||||||
| % _monthyear_ | % _monthyear_ | ||||||
| 
 | 
 | ||||||
| @ -6,7 +6,7 @@ _man_({{ | |||||||
| # NAME | # NAME | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| hledger-web - web interface for the hledger accounting tool | A web interface (WUI) for the hledger accounting tool. | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # SYNOPSIS | # SYNOPSIS | ||||||
|  | |||||||
| @ -156,6 +156,7 @@ builtinCommands = [ | |||||||
| --  | --  | ||||||
| commandsList :: String -> [String] -> [String] | commandsList :: String -> [String] -> [String] | ||||||
| commandsList progversion othercmds = [ | commandsList progversion othercmds = [ | ||||||
|  |   -- keep synced with hledger.m4.md -> Commands --> | ||||||
|    "-------------------------------------------------------------------------------" |    "-------------------------------------------------------------------------------" | ||||||
|   ,progversion |   ,progversion | ||||||
|   ,"Usage: hledger COMMAND [OPTIONS] [-- ADDONCMDOPTIONS]" |   ,"Usage: hledger COMMAND [OPTIONS] [-- ADDONCMDOPTIONS]" | ||||||
|  | |||||||
| @ -32,6 +32,11 @@ transactions shown. | |||||||
| Transactions making a net change of zero are not shown by default; | Transactions making a net change of zero are not shown by default; | ||||||
| add the `-E/--empty` flag to show them. | add the `-E/--empty` flag to show them. | ||||||
| 
 | 
 | ||||||
|  | This command also supports the | ||||||
|  | [output destination](hledger.html#output-destination) and | ||||||
|  | [output format](hledger.html#output-format) options | ||||||
|  | The output formats supported are `txt`, `csv`, and `json`. | ||||||
|  | 
 | ||||||
| ### aregister and custom posting dates | ### aregister and custom posting dates | ||||||
| 
 | 
 | ||||||
| Transactions whose date is outside the report period can still be | Transactions whose date is outside the report period can still be | ||||||
| @ -45,13 +50,6 @@ To filter strictly by transaction date instead, add the `--txn-dates` | |||||||
| flag. If you use this flag and some of your postings have custom | flag. If you use this flag and some of your postings have custom | ||||||
| dates, it's probably best to assume the running balance is wrong. | dates, it's probably best to assume the running balance is wrong. | ||||||
| 
 | 
 | ||||||
| ### Output format |  | ||||||
| 
 |  | ||||||
| This command also supports the |  | ||||||
| [output destination](hledger.html#output-destination) and |  | ||||||
| [output format](hledger.html#output-format) options |  | ||||||
| The output formats supported are `txt`, `csv`, and `json`. |  | ||||||
| 
 |  | ||||||
| Examples: | Examples: | ||||||
| 
 | 
 | ||||||
| Show all transactions and historical running balance in the first | Show all transactions and historical running balance in the first | ||||||
|  | |||||||
| @ -21,6 +21,12 @@ transaction setting the correct starting balance on that date. | |||||||
| Then the balance command will show real-world account balances. | Then the balance command will show real-world account balances. | ||||||
| In some cases the -H/--historical flag is used to ensure this (more below). | In some cases the -H/--historical flag is used to ensure this (more below). | ||||||
| 
 | 
 | ||||||
|  | This command also supports the | ||||||
|  | [output destination](hledger.html#output-destination) and | ||||||
|  | [output format](hledger.html#output-format) options | ||||||
|  | The output formats supported are (in most modes): | ||||||
|  | `txt`, `csv`, `html`, and `json`. | ||||||
|  | 
 | ||||||
| The balance command can produce several styles of report: | The balance command can produce several styles of report: | ||||||
| 
 | 
 | ||||||
| ### Classic balance report | ### Classic balance report | ||||||
| @ -570,10 +576,3 @@ Budget performance in 2019/01: | |||||||
|                                         ||        0 [                 0]  |                                         ||        0 [                 0]  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Output format |  | ||||||
| 
 |  | ||||||
| This command also supports the |  | ||||||
| [output destination](hledger.html#output-destination) and |  | ||||||
| [output format](hledger.html#output-format) options |  | ||||||
| The output formats supported are (in most modes): |  | ||||||
| `txt`, `csv`, `html`, and `json`. |  | ||||||
|  | |||||||
| @ -41,7 +41,7 @@ amount of original matched posting.  If the amount includes a commodity name, | |||||||
| the new posting amount will be in the new commodity; otherwise, it will be in | the new posting amount will be in the new commodity; otherwise, it will be in | ||||||
| the matched posting amount's commodity. | the matched posting amount's commodity. | ||||||
| 
 | 
 | ||||||
| #### Re-write rules in a file | ### Re-write rules in a file | ||||||
| 
 | 
 | ||||||
| During the run this tool will execute so called | During the run this tool will execute so called | ||||||
| ["Automated Transactions"](http://ledger-cli.org/3.0/doc/ledger3.html#Automated-Transactions) | ["Automated Transactions"](http://ledger-cli.org/3.0/doc/ledger3.html#Automated-Transactions) | ||||||
| @ -83,7 +83,7 @@ $ hledger rewrite -- -f input.journal '^income' --add-posting '(liabilities:tax) | |||||||
| It is important to understand that relative order of such entries in journal is | It is important to understand that relative order of such entries in journal is | ||||||
| important. You can re-use result of previously added postings. | important. You can re-use result of previously added postings. | ||||||
| 
 | 
 | ||||||
| #### Diff output format | ### Diff output format | ||||||
| 
 | 
 | ||||||
| To use this tool for batch modification of your journal files you may find | To use this tool for batch modification of your journal files you may find | ||||||
| useful output in form of unified diff. | useful output in form of unified diff. | ||||||
| @ -123,7 +123,7 @@ See also: | |||||||
| 
 | 
 | ||||||
| https://github.com/simonmichael/hledger/issues/99 | https://github.com/simonmichael/hledger/issues/99 | ||||||
| 
 | 
 | ||||||
| #### rewrite vs. print --auto | ### rewrite vs. print --auto | ||||||
| 
 | 
 | ||||||
| This command predates print --auto, and currently does much the same thing, | This command predates print --auto, and currently does much the same thing, | ||||||
| but with these differences: | but with these differences: | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| % hledger(1) hledger _version_ | % hledger(1) | ||||||
| % _author_ | % _author_ | ||||||
| % _monthyear_ | % _monthyear_ | ||||||
| 
 | 
 | ||||||
| @ -17,16 +17,18 @@ _man_({{ | |||||||
| # NAME | # NAME | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| hledger - a command-line accounting tool | A command-line accounting tool for both power users and folks new to accounting. | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # SYNOPSIS | # SYNOPSIS | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| `hledger [-f FILE] COMMAND [OPTIONS] [ARGS]`\ |  | ||||||
| `hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]`\ |  | ||||||
| `hledger` | `hledger` | ||||||
| 
 | 
 | ||||||
|  | `hledger [-f FILE] COMMAND [OPTIONS] [ARGS]` | ||||||
|  | 
 | ||||||
|  | `hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]` | ||||||
|  | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
| }}) | }}) | ||||||
| @ -1571,185 +1573,122 @@ Related: | |||||||
| 
 | 
 | ||||||
| # COMMANDS | # COMMANDS | ||||||
| 
 | 
 | ||||||
| hledger provides a number of subcommands; `hledger` with no arguments | hledger provides a number of commands for producing reports and managing your data.  | ||||||
| shows a list. | Run `hledger` with no arguments to list the commands available. | ||||||
| 
 | 
 | ||||||
| If you install additional `hledger-*` packages, or if you put programs | To run a command, write its name (or its abbreviation shown in the commands list, | ||||||
| or scripts named `hledger-NAME` in your PATH, these will also be | or any unambiguous prefix of the name) as hledger's first argument. | ||||||
| listed as subcommands. | Eg: `hledger balance` or `hledger bal`. | ||||||
| 
 | 
 | ||||||
| Run a subcommand by writing its name as first argument (eg `hledger | m4_dnl XXX maybe later | ||||||
| incomestatement`). You can also write one of the standard short aliases | m4_dnl Each command's detailed docs are available : | ||||||
| displayed in parentheses in the command list (`hledger b`), or any | m4_dnl  | ||||||
| any unambiguous prefix of a command name (`hledger inc`). | m4_dnl - command line help, eg: `hledger balance --help` | ||||||
|  | m4_dnl -  | ||||||
|  | m4_dnl - info manuals, eg: `hledger help --info hledger` (or possibly `info hledger`) <!-- -> m4_dnl Commands -> balance --> | ||||||
|  | m4_dnl - web manuals, eg: <https://hledger.org/hledger.html#balance> | ||||||
|  | m4_dnl <!-- - man pages, eg: `man hledger-balance` --> | ||||||
| 
 | 
 | ||||||
| Here are all the builtin commands in alphabetical order. | Here are the built-in commands: | ||||||
| See also `hledger` for a more organised command list, | <!-- keep synced with Hledger.Cli.Commands.commandsList --> | ||||||
| and `hledger CMD -h` for detailed command help. |  | ||||||
| 
 | 
 | ||||||
| ## accounts | **Data entry (these modify the journal file):** | ||||||
| 
 | 
 | ||||||
| _include_(Hledger/Cli/Commands/Accounts.md) | - [add](#add)                                      - add transactions using guided prompts | ||||||
|  | - [import](#import)                                - add any new transactions from other files (eg csv) | ||||||
| 
 | 
 | ||||||
| ## activity | **Data management**: | ||||||
| 
 | 
 | ||||||
| _include_(Hledger/Cli/Commands/Activity.md) | - [check](#check)                                  - check for various kinds of issue in the data | ||||||
|  | - [close](#close) (equity)                         - generate balance-resetting transactions | ||||||
|  | - [diff](#diff)                                    - compare account transactions in two journal files | ||||||
|  | - [rewrite](#rewrite)                              - generate extra postings, similar to print --auto | ||||||
| 
 | 
 | ||||||
| ## add | **Financial statements:** | ||||||
| 
 | 
 | ||||||
| _include_(Hledger/Cli/Commands/Add.md) | - [aregister](#aregister) (areg)                   - show transactions in a particular account | ||||||
|  | - [balancesheet](#balancesheet) (bs)               - show assets, liabilities and net worth | ||||||
|  | - [balancesheetequity](#balancesheetequity) (bse)  - show assets, liabilities and equity | ||||||
|  | - [cashflow](#cashflow) (cf)                       - show changes in liquid assets | ||||||
|  | - [incomestatement](#incomestatement) (is)         - show revenues and expenses | ||||||
|  | - [roi](#roi)                                      - show return on investments | ||||||
| 
 | 
 | ||||||
| ## aregister | **Miscellaneous reports:** | ||||||
| 
 | 
 | ||||||
| _include_(Hledger/Cli/Commands/Aregister.md) | - [accounts](#accounts) (a)                        - show account names | ||||||
|  | - [activity](#activity)                            - show postings-per-interval bar charts | ||||||
|  | - [balance](#balance) (b, bal)                     - show balance changes/end balances/budgets in accounts | ||||||
|  | - [codes](#codes)                                  - show transaction codes | ||||||
|  | - [commodities](#commodities)                      - show commodity/currency symbols | ||||||
|  | - [descriptions](#descriptions)                    - show unique transaction descriptions | ||||||
|  | - [files](#files)                                  - show input file paths | ||||||
|  | - [notes](#notes)                                  - show unique note segments of transaction descriptions | ||||||
|  | - [payees](#payees)                                - show unique payee segments of transaction descriptions | ||||||
|  | - [prices](#prices)                                - show market price records | ||||||
|  | - [print](#print) (p, txns)                        - show transactions (journal entries) | ||||||
|  | - [print-unique](#print-unique)                    - show only transactions with unique descriptions | ||||||
|  | - [register](#register) (r, reg)                   - show postings in one or more accounts & running total | ||||||
|  | - [register-match](#register-match)                - show a recent posting that best matches a description | ||||||
|  | - [stats](#stats)                                  - show journal statistics | ||||||
|  | - [tags](#tags)                                    - show tag names | ||||||
|  | - [test](#test)                                    - run self tests | ||||||
| 
 | 
 | ||||||
| ## balance | m4_dnl XXX maybe later | ||||||
|  | m4_dnl _man_({{ | ||||||
|  | m4_dnl (Detailed command docs are omitted here for brevity, | ||||||
|  | m4_dnl if you need them please use one of the other doc formats mentioned above.) | ||||||
|  | m4_dnl }}) | ||||||
|  | m4_dnl _notman_({{ | ||||||
| 
 | 
 | ||||||
| _include_({{Hledger/Cli/Commands/Balance.md}}) | Next, the detailed command docs, in alphabetical order. | ||||||
| 
 | 
 | ||||||
| ## balancesheet | m4_dnl    commandnameheading:     Commandmdfile: | ||||||
| 
 | _command_({{## accounts}}           ,{{Accounts}}) | ||||||
| _include_({{Hledger/Cli/Commands/Balancesheet.md}}) | _command_({{## activity}}           ,{{Activity}}) | ||||||
| 
 | _command_({{## add}}                ,{{Add}}) | ||||||
| ## balancesheetequity | _command_({{## aregister}}          ,{{Aregister}}) | ||||||
| 
 | _command_({{## balance}}            ,{{Balance}}) | ||||||
| _include_({{Hledger/Cli/Commands/Balancesheetequity.md}}) | _command_({{## balancesheet}}       ,{{Balancesheet}}) | ||||||
| 
 | _command_({{## balancesheetequity}} ,{{Balancesheetequity}}) | ||||||
| ## cashflow | _command_({{## cashflow}}           ,{{Cashflow}}) | ||||||
| 
 | _command_({{## check}}              ,{{Check}}) | ||||||
| _include_({{Hledger/Cli/Commands/Cashflow.md}}) | _command_({{## close}}              ,{{Close}}) | ||||||
| 
 | _command_({{## codes}}              ,{{Codes}}) | ||||||
| ## check | _command_({{## commodities}}        ,{{Commodities}}) | ||||||
| 
 | _command_({{## descriptions}}       ,{{Descriptions}}) | ||||||
| _include_({{Hledger/Cli/Commands/Check.md}}) | _command_({{## diff}}               ,{{Diff}}) | ||||||
| 
 | _command_({{## files}}              ,{{Files}}) | ||||||
| ## close | _command_({{## help}}               ,{{Help}}) | ||||||
| 
 | _command_({{## import}}             ,{{Import}}) | ||||||
| _include_({{Hledger/Cli/Commands/Close.md}}) | _command_({{## incomestatement}}    ,{{Incomestatement}}) | ||||||
| 
 | _command_({{## notes}}              ,{{Notes}}) | ||||||
| ## codes | _command_({{## rewrite}}            ,{{Rewrite}}) | ||||||
| 
 | _command_({{## roi}}                ,{{Roi}}) | ||||||
| _include_({{Hledger/Cli/Commands/Codes.md}}) | _command_({{## stats}}              ,{{Stats}}) | ||||||
| 
 | _command_({{## tags}}               ,{{Tags}}) | ||||||
| ## commodities | _command_({{## test}}               ,{{Test}}) | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Commodities.md}}) |  | ||||||
| 
 |  | ||||||
| ## descriptions |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Descriptions.md}}) |  | ||||||
| 
 |  | ||||||
| ## diff |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Diff.md}}) |  | ||||||
| 
 |  | ||||||
| ## files |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Files.md}}) |  | ||||||
| 
 |  | ||||||
| ## help |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Help.md}}) |  | ||||||
| 
 |  | ||||||
| ## import |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Import.md}}) |  | ||||||
| 
 |  | ||||||
| ## incomestatement |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Incomestatement.md}}) |  | ||||||
| 
 |  | ||||||
| ## notes |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Notes.md}}) |  | ||||||
| 
 |  | ||||||
| ## payees |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Payees.md}}) |  | ||||||
| 
 |  | ||||||
| ## prices |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Prices.md}}) |  | ||||||
| 
 |  | ||||||
| ## print |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Print.md}}) |  | ||||||
| 
 |  | ||||||
| ## print-unique |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Printunique.md}}) |  | ||||||
| 
 |  | ||||||
| ## register |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Register.md}}) |  | ||||||
| 
 |  | ||||||
| ## register-match |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Registermatch.md}}) |  | ||||||
| 
 |  | ||||||
| ## rewrite |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Rewrite.md}}) |  | ||||||
| 
 |  | ||||||
| ## roi |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Roi.md}}) |  | ||||||
| 
 |  | ||||||
| ## stats |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Stats.md}}) |  | ||||||
| 
 |  | ||||||
| ## tags |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Tags.md}}) |  | ||||||
| 
 |  | ||||||
| ## test |  | ||||||
| 
 |  | ||||||
| _include_({{Hledger/Cli/Commands/Test.md}}) |  | ||||||
| 
 | 
 | ||||||
|  | m4_dnl }}) | ||||||
| 
 | 
 | ||||||
| ## Add-on commands | ## Add-on commands | ||||||
| 
 | 
 | ||||||
| hledger also searches for external add-on commands, and will include these in the commands list. | Any programs or scripts in your PATH named named `hledger-SOMETHING`  | ||||||
| These are programs or scripts in your PATH whose name starts with `hledger-` | will also appear in the commands list (with a `+` mark).  | ||||||
| and ends with a recognised file extension | These are called add-on commands. | ||||||
| (currently: no extension, `bat`,`com`,`exe`, `hs`,`lhs`,`pl`,`py`,`rb`,`rkt`,`sh`). |  | ||||||
| 
 | 
 | ||||||
| Add-ons can be invoked like any hledger command, but there are a few things to be aware of. | These offical add-ons are maintained and released along with hledger: | ||||||
| Eg if the `hledger-web` add-on is installed, |  | ||||||
| 
 | 
 | ||||||
| - `hledger -h web` shows hledger's help, while `hledger web -h` shows hledger-web's help. | - [ui](hledger-ui.html)    an efficient terminal interface for hledger (TUI) | ||||||
|  | - [web](hledger-web.html)  a simple web interface for hledger (WUI) | ||||||
| 
 | 
 | ||||||
| - Flags specific to the add-on must have a preceding `--` to hide them from hledger. | These add-ons are maintained separately: | ||||||
|   So `hledger web --serve --port 9000` will be rejected; you must use `hledger web -- --serve --port 9000`. |  | ||||||
| 
 | 
 | ||||||
| - You can always run add-ons directly if preferred: `hledger-web --serve --port 9000`. | - [iadd](http://hackage.haskell.org/package/hledger-iadd) | ||||||
| 
 |    a more interactive alternative for the [add](hledger.html#add) command | ||||||
| Add-ons are a relatively easy way to add local features or experiment with new ideas. | - [interest](http://hackage.haskell.org/package/hledger-interest) | ||||||
| They can be written in any language, but haskell scripts have a big advantage: |   generates interest transactions according to various schemes | ||||||
| they can use the same hledger (and haskell) library functions that built-in commands do, | - [stockquotes](http://hackage.haskell.org/package/hledger-stockquotes) | ||||||
| for command-line options, journal parsing, reporting, etc. |   downloads market prices for your commodities from AlphaVantage *(experimental)* | ||||||
| 
 |  | ||||||
| Two important add-ons are the hledger-ui and hledger-web user interfaces. |  | ||||||
| These are maintained and released along with hledger: |  | ||||||
| 
 |  | ||||||
| ### ui |  | ||||||
| [hledger-ui](hledger-ui.html) provides an efficient terminal interface. |  | ||||||
| 
 |  | ||||||
| ### web |  | ||||||
| [hledger-web](hledger-web.html) provides a simple web interface. |  | ||||||
| 
 |  | ||||||
| Third party add-ons, maintained separately from hledger, include: |  | ||||||
| 
 |  | ||||||
| ### iadd |  | ||||||
| 
 |  | ||||||
| [hledger-iadd](http://hackage.haskell.org/package/hledger-iadd) |  | ||||||
| is a more interactive, terminal UI replacement for the [add command](hledger.html#add). |  | ||||||
| 
 |  | ||||||
| ### interest |  | ||||||
| 
 |  | ||||||
| [hledger-interest](http://hackage.haskell.org/package/hledger-interest) |  | ||||||
| generates interest transactions for an account according to various schemes. |  | ||||||
| 
 | 
 | ||||||
| <!-- ### autosync --> | <!-- ### autosync --> | ||||||
| 
 | 
 | ||||||
| @ -1760,14 +1699,43 @@ generates interest transactions for an account according to various schemes. | |||||||
| <!-- and can also download the data  --> | <!-- and can also download the data  --> | ||||||
| <!-- [if your bank offers OFX Direct Connect](http://wiki.gnucash.org/wiki/OFX_Direct_Connect_Bank_Settings).  --> | <!-- [if your bank offers OFX Direct Connect](http://wiki.gnucash.org/wiki/OFX_Direct_Connect_Bank_Settings).  --> | ||||||
| 
 | 
 | ||||||
| ### stockquotes | Additional experimental add-ons, which may not be in a working state,  | ||||||
|  | can be found in the bin/ directory in the hledger repo. | ||||||
| 
 | 
 | ||||||
| [hledger-stockquotes](http://hackage.haskell.org/package/hledger-stockquotes) | ## Add-on command flags | ||||||
| downloads market prices for the commodities in your journal from AlphaVantage. |  | ||||||
| 
 | 
 | ||||||
|  | In a hledger command line, add-on command flags must have a double dash (`--`) preceding them. | ||||||
|  | Eg you must write: | ||||||
|  | ```shell | ||||||
|  | $ hledger web -- --serve | ||||||
|  | ``` | ||||||
|  | and not: | ||||||
|  | ```shell | ||||||
|  | $ hledger web --serve | ||||||
|  | ``` | ||||||
|  | (because the `--serve` flag belongs to `hledger-web`, not `hledger`). | ||||||
|  | 
 | ||||||
|  | The `-h/--help` and `--version` flags work without `--`, with their position deciding which program they refer to.  | ||||||
|  | Eg `hledger -h web` shows hledger's help, `hledger web -h` shows hledger-web's help. | ||||||
|  | 
 | ||||||
|  | If you have any trouble with this, remember you can always run the add-on program directly, eg: | ||||||
|  | ```shell | ||||||
|  | $ hledger-web --serve | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Making add-on commands | ||||||
|  | 
 | ||||||
|  | Add-on commands are programs or scripts in your PATH  | ||||||
|  | 
 | ||||||
|  | - whose name starts with `hledger-` | ||||||
|  | - whose name ends with a recognised file extension: | ||||||
|  |   `.bat`,`.com`,`.exe`, `.hs`,`.lhs`,`.pl`,`.py`,`.rb`,`.rkt`,`.sh` or none | ||||||
|  | - and (on unix, mac) which are executable by the current user. | ||||||
|  | 
 | ||||||
|  | Add-ons are a relatively easy way to add local features or experiment with new ideas. | ||||||
|  | They can be written in any language, but haskell scripts have a big advantage: | ||||||
|  | they can use the same hledger library functions that built-in commands use for command-line options, parsing and reporting. | ||||||
| 
 | 
 | ||||||
| A few more experimental or old add-ons can be found in hledger's bin/ |  | ||||||
| directory. These are typically prototypes and not guaranteed to work. |  | ||||||
| 
 | 
 | ||||||
| # ENVIRONMENT | # ENVIRONMENT | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user