vim-ledger
==========

This is the ledger filetype for Vim.

Usage
-----

Copy each file to the corresponding directory in your `~/.vim` directory or
install using [Pathogen](https://github.com/tpope/vim-pathogen).

You can also use a modeline like this in every ledger file:

    vim:filetype=ledger

Tips and useful commands
------------------------

* Try account-completion (as explained below)

* `:call ledger#transaction_date_set(line('.'), 'auxiliary')`

  will set today's date as the auxiliary date of the current transaction. You
  can use also `primary` or `unshift` in place of `auxiliary`. When you pass
  "unshift" the old primary date will be set as the auxiliary date and today's
  date will be set as the new primary date.
  To use a different date pass a date measured in seconds since 1st Jan 1970
  as the third argument.

* `:call ledger#transaction_state_set(line('.'), '*')`

  sets the state of the current transaction to '*'. You can use this in custom
  mappings.

* `:call ledger#transaction_state_toggle(line('.'), ' *?!')`

  will toggle through the provided transaction states. You can map this to
  double-clicking for example:

        noremap <silent><buffer> <2-LeftMouse>\
        :call ledger#transaction_state_toggle(line('.'), ' *?!')<CR>

* Align commodities at the decimal point. See `help ledger-tips`.

* `:call ledger#entry()`

  will replace the text on the current line with a new transaction based
  on the replaced text.

Configuration
-------------

Include the following let-statements somewhere in your `.vimrc` to modify the
behaviour of the ledger filetype.

* Number of columns that will be used to display the foldtext. Set this when
  you think that the amount is too far off to the right.

        let g:ledger_maxwidth = 80

* String that will be used to fill the space between account name and amount in
  the foldtext. Set this to get some kind of lines or visual aid.

        let g:ledger_fillstring = '    -'

* If you want the account completion to be sorted by level of detail/depth
  instead of alphabetical, include the following line:

        let g:ledger_detailed_first = 1

* By default vim will fold ledger transactions, leaving surrounding blank lines
  unfolded. You can use `g:ledger_fold_blanks` to hide blank lines following a
  transaction.

        let g:ledger_fold_blanks = 0

  A value of 0 will disable folding of blank lines, 1 will allow folding of a
  single blank line between transactions; any larger value will enable folding
  undconditionally.

  Note that only lines containing no trailing spaces are considered for
  folding. You can take advantage of this to disable this feature on a
  case-by-case basis.

Completion
----------

Omni completion is currently implemented for account names only.

### Accounts

Account names are matched by the start of every sub-level. When you
insert an account name like this:

    Asse<C-X><C-O>

You will get a list of top-level accounts that start like this.

Go ahead and try something like:

    As:Ban:Che<C-X><C-O>

When you have an account like this, 'Assets:Bank:Checking' should show up.

When you want to complete on a virtual transaction, it's currently best
to keep the cursor in front of the closing bracket. Of course you can
insert the closing bracket after calling the completion, too.

License
-------

Copyright 2019 Caleb Maclennan  
Copyright 2009–2017 Johann Klähn  
Copyright 2009 Stefan Karrmann  
Copyright 2005 Wolfgang Oertl

This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 2 of the License, or (at your
option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.

You should have received a copy of the GNU General Public License along
with this program. If not, see <https://www.gnu.org/licenses/>.
