doc: merge last bits of old manual into new one
This commit is contained in:
parent
b4d491791c
commit
aecbcf9461
@ -59,7 +59,8 @@ Here's an example:
|
||||
assets:bank:checking
|
||||
```
|
||||
|
||||
Now let's explore the available journal file syntax in detail.
|
||||
# FILE FORMAT
|
||||
<!-- Now let's explore the available journal file syntax in detail. -->
|
||||
|
||||
## Transactions
|
||||
|
||||
@ -691,3 +692,29 @@ Glob patterns (`*`) are not currently supported.
|
||||
|
||||
The `include` directive may only be used in journal files, and currently
|
||||
it may only include other journal files (eg, not CSV or timelog files.)
|
||||
|
||||
# EDITOR SUPPORT
|
||||
|
||||
Add-on modes exist for various text editors, to make working with journal
|
||||
files easier. They add colour, navigation aids and helpful commands.
|
||||
For hledger users who edit the journal file directly (the majority),
|
||||
using one of these modes is quite recommended.
|
||||
|
||||
These were written with Ledger in mind, but also work with hledger files:
|
||||
|
||||
|
|
||||
|----------------|----------------------------------------------------|
|
||||
| Emacs | <http://www.ledger-cli.org/3.0/doc/ledger-mode.html> |
|
||||
| Vim | <https://github.com/ledger/ledger/wiki/Getting-started> |
|
||||
| Sublime Text | <https://github.com/ledger/ledger/wiki/Using-Sublime-Text> |
|
||||
| Textmate | <https://github.com/ledger/ledger/wiki/Using-TextMate-2> |
|
||||
| Text Wrangler | <https://github.com/ledger/ledger/wiki/Editing-Ledger-files-with-TextWrangler> |
|
||||
|
||||
<!-- Some related LedgerTips:
|
||||
https://twitter.com/LedgerTips/status/504061626233159681
|
||||
https://twitter.com/LedgerTips/status/502820400276193280
|
||||
https://twitter.com/LedgerTips/status/502503912084361216
|
||||
https://twitter.com/LedgerTips/status/501767602067472384
|
||||
-->
|
||||
|
||||
|
||||
|
||||
@ -21,9 +21,9 @@ hledger - a command-line accounting tool
|
||||
hledger is a cross-platform program for tracking money, time, or any
|
||||
other commodity, using double-entry accounting and a simple, editable
|
||||
file format. It is inspired by and largely compatible with ledger(1).
|
||||
hledger aims to be a reliable, practical tool for daily use. This man
|
||||
page is a quick reference and introduction; for more complete docs, see
|
||||
http://hledger.org/manual.
|
||||
Tested on unix, mac, windows, hledger aims to be a reliable, practical
|
||||
tool for daily use.
|
||||
|
||||
</div>
|
||||
|
||||
_include_(description.m4.md)
|
||||
@ -31,6 +31,7 @@ _include_(examples.m4.md)
|
||||
_include_(options.m4.md)
|
||||
_include_(queries.m4.md)
|
||||
_include_(commands.m4.md)
|
||||
_include_(troubleshooting.m4.md)
|
||||
|
||||
<div class="man">
|
||||
|
||||
|
||||
@ -194,3 +194,38 @@ Examples:
|
||||
-p "every 15th day of month"
|
||||
-p "every 4th day of week"
|
||||
|
||||
## Regular Expressions
|
||||
|
||||
hledger uses [regular expressions](http://www.regular-expressions.info) in a number of places:
|
||||
|
||||
- [query terms](#queries), on the command line and in the hledger-web search form: `REGEX`, `desc:REGEX`, `cur:REGEX`, `tag:...=REGEX`
|
||||
- [CSV rules](#csv-rules) conditional blocks: `if REGEX ...`
|
||||
- [account alias](#account-aliases) directives and options: `alias /REGEX/ = REPLACEMENT`, `--alias /REGEX/=REPLACEMENT`
|
||||
|
||||
hledger's regular expressions come from the
|
||||
[regex-tdfa](http://hackage.haskell.org/package/regex-tdfa/docs/Text-Regex-TDFA.html)
|
||||
library. In general they:
|
||||
|
||||
- are case insensitive
|
||||
- are infix matching (do not need to match the entire thing being matched)
|
||||
- are [POSIX extended regular expressions](http://www.regular-expressions.info/posix.html#ere)
|
||||
- also support [GNU word boundaries](http://www.regular-expressions.info/wordboundaries.html) (\\<, \\>, \\b, \\B)
|
||||
- and parenthesised [capturing groups](http://www.regular-expressions.info/refcapture.html) and numeric backreferences in replacement strings
|
||||
- do not support [mode modifiers](http://www.regular-expressions.info/modifiers.html) like (?s)
|
||||
|
||||
Some things to note:
|
||||
|
||||
- In the `alias` directive and `--alias` option, regular expressions
|
||||
must be enclosed in forward slashes (`/REGEX/`). Elsewhere in hledger,
|
||||
these are not required.
|
||||
|
||||
- To match a regular expression metacharacter like `$` as a literal
|
||||
character, prepend a backslash. Eg to search for amounts with the
|
||||
dollar sign in hledger-web, write `cur:\$`.
|
||||
|
||||
- On the command line, some metacharacters like `$` have a special
|
||||
meaning to the shell and so must be escaped a second time, with single
|
||||
or double quotes or another backslash. Eg, to match amounts with the
|
||||
dollar sign from the command line, write `cur:'\$'` or `cur:\\$`.
|
||||
|
||||
|
||||
|
||||
@ -93,6 +93,65 @@ parent transaction.
|
||||
**`not:`**
|
||||
: before any of the above negates the match.
|
||||
|
||||
---
|
||||
# as a table:
|
||||
#---------------------------------- ------------------------------------------------------------------------------------------------------------------------
|
||||
#`REGEX` match account names by this regular expression
|
||||
#
|
||||
#\ \
|
||||
#`acct:REGEX` same as above
|
||||
#
|
||||
#\ \
|
||||
#`amt:N`, `amt:<N`, `amt:<=N`, match postings with a single-commodity
|
||||
#`amt:>N`, `amt:>=N` amount that is equal to, less than, or greater than N.
|
||||
#\ (Multi-commodity amounts are not tested, and will always match.)
|
||||
#\ The comparison has two modes: if N is preceded by a `+` or `-` sign
|
||||
# (or is 0), the two signed numbers are compared. Otherwise, the
|
||||
# absolute magnitudes are compared, ignoring sign.
|
||||
#
|
||||
#\ \
|
||||
#`code:REGEX` match by transaction code (eg check number)
|
||||
#
|
||||
#\ \
|
||||
#`cur:REGEX` match postings or transactions including any amounts
|
||||
#\ whose currency/commodity symbol is fully matched by REGEX. (For a
|
||||
#\ partial match, use `.*REGEX.*`). Note, to match characters which are
|
||||
#\ regex-significant, like the dollar sign (`$`), you need to prepend `\`.
|
||||
#\ And when using the command line you need to add one more level
|
||||
# of quoting to hide it from the shell, so eg do: `hledger print cur:'\$'`
|
||||
# or `hledger print cur:\\$`.
|
||||
#
|
||||
#\ \
|
||||
#`desc:REGEX` match transaction descriptions
|
||||
#
|
||||
#\ \
|
||||
#`date:PERIODEXPR` match dates within the specified [period](#period-expressions)
|
||||
#\ (which should not include a [reporting interval](#reporting-interval))
|
||||
#
|
||||
#\ \
|
||||
#`date2:PERIODEXPR` as above, but match [secondary dates](#secondary-dates)
|
||||
#
|
||||
#\ \
|
||||
#`depth:N` match (or display, depending on command) accounts at or above this [depth](#depth-limiting)
|
||||
#
|
||||
#\ \
|
||||
#`real:`, `real:0` match real or [virtual](#virtual-postings) postings respectively
|
||||
#
|
||||
#\ \
|
||||
#`status:*`, `status:!`, `status:` match cleared, pending, or uncleared/pending transactions respectively
|
||||
# \
|
||||
# \
|
||||
#
|
||||
#\ \
|
||||
#`tag:REGEX[=REGEX]` match by [tag](#tags) name, and optionally also by tag value.
|
||||
#\ Note a `tag:` query is considered to match a transaction if it matches any of the postings.
|
||||
#\ Also remember that postings inherit the tags of their parent transaction.
|
||||
#
|
||||
#\ \
|
||||
#`not:` before any of the above negates the match.
|
||||
...
|
||||
---------------------------------- ------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Some of the above can also be expressed as command-line options (eg `depth:2` is equivalent to `--depth 2`).
|
||||
Generally you can mix options and query arguments, and the resulting query will be their intersection (aside from the `-p/--period` option).
|
||||
Some of these can also be expressed as command-line options (eg `depth:2` is equivalent to `--depth 2`).
|
||||
Generally you can mix options and query arguments, and the resulting query will be their intersection
|
||||
(perhaps excluding the `-p/--period` option).
|
||||
|
||||
85
hledger/doc/troubleshooting.m4.md
Normal file
85
hledger/doc/troubleshooting.m4.md
Normal file
@ -0,0 +1,85 @@
|
||||
# TROUBLESHOOTING
|
||||
|
||||
## Run-time problems
|
||||
|
||||
Here are some issues you might encounter when you run hledger
|
||||
(and remember you can also seek help from the
|
||||
[IRC channel](http://irc.hledger.org),
|
||||
[mail list](http://list.hledger.org) or
|
||||
[bug tracker](http://bugs.hledger.org)):
|
||||
|
||||
**Successfully installed, but "No command 'hledger' found"**
|
||||
stack and cabal install binaries into a special directory, which
|
||||
should be added to your PATH environment variable. Eg on unix-like
|
||||
systems, that is ~/.local/bin and ~/.cabal/bin respectively.
|
||||
|
||||
**I set a custom LEDGER_FILE, but hledger is still using the default file**
|
||||
`LEDGER_FILE` should be a real environment variable, not just a shell variable.
|
||||
The command `env | grep LEDGER_FILE` should show it.
|
||||
You may need to use `export`. Here's an [explanation](http://stackoverflow.com/a/7411509).
|
||||
|
||||
**"Illegal byte sequence" or "Invalid or incomplete multibyte or wide character" errors**
|
||||
In order to handle non-ascii letters and symbols (like £), hledger needs
|
||||
an appropriate locale. This is usually configured system-wide; you can
|
||||
also configure it temporarily. The locale may need to be one that
|
||||
supports UTF-8, if you built hledger with GHC < 7.2 (or possibly always,
|
||||
I'm not sure yet).
|
||||
|
||||
Here's an example of setting the locale temporarily, on ubuntu gnu/linux:
|
||||
|
||||
```{.shell}
|
||||
$ file my.journal
|
||||
my.journal: UTF-8 Unicode text # <- the file is UTF8-encoded
|
||||
$ locale -a
|
||||
C
|
||||
en_US.utf8 # <- a UTF8-aware locale is available
|
||||
POSIX
|
||||
$ LANG=en_US.utf8 hledger -f my.journal print # <- use it for this command
|
||||
```
|
||||
|
||||
Here's one way to set it permanently, there are probably better ways:
|
||||
|
||||
```{.shell}
|
||||
$ echo "export LANG=en_US.UTF-8" >>~/.bash_profile
|
||||
$ bash --login
|
||||
```
|
||||
|
||||
If we preferred to use eg `fr_FR.utf8`, we might have to install that first:
|
||||
|
||||
```{.shell}
|
||||
$ apt-get install language-pack-fr
|
||||
$ locale -a
|
||||
C
|
||||
en_US.utf8
|
||||
fr_BE.utf8
|
||||
fr_CA.utf8
|
||||
fr_CH.utf8
|
||||
fr_FR.utf8
|
||||
fr_LU.utf8
|
||||
POSIX
|
||||
$ LANG=fr_FR.utf8 hledger -f my.journal print
|
||||
```
|
||||
|
||||
Note some platforms allow variant locale spellings, but not all (ubuntu
|
||||
accepts `fr_FR.UTF8`, mac osx requires exactly `fr_FR.UTF-8`).
|
||||
|
||||
|
||||
## Known limitations
|
||||
|
||||
**Command line interface**
|
||||
|
||||
Add-on command options, unless they are also understood by the main
|
||||
hledger executable, must be written after `--`, like this:
|
||||
`hledger web -- --server`
|
||||
|
||||
**Differences from Ledger**
|
||||
|
||||
Not all of Ledger's journal file syntax is supported. See [file format differences](faq#file-format-differences).
|
||||
|
||||
hledger is slower than Ledger, and uses more memory, on large data files.
|
||||
|
||||
**Windows limitations**
|
||||
|
||||
In a windows CMD window, non-ascii characters and colours are not supported.
|
||||
|
||||
In a windows Cygwin/MSYS/Mintty window, the tab key is not supported in hledger add.
|
||||
Loading…
Reference in New Issue
Block a user