packages feed

hledger-ui 1.12.1 → 1.13

raw patch · 12 files changed

+655/−621 lines, 12 filesdep +unixdep ~hledgerdep ~hledger-lib

Dependencies added: unix

Dependency ranges changed: hledger, hledger-lib

Files

− CHANGES
@@ -1,391 +0,0 @@-User-visible changes in hledger-ui.-See also the hledger changelog.---# 1.12.1 (2018/12/10)--* avoid build issue with brick 0.44+ (#935)  ---# 1.12 (2018/12/02)--* fix "Any" build error with GHC < 8.4--* error screen: always show error position properly (#904) (Mykola Orliuk)--* accounts screen: show correct balances when there's only periodic transactions--* drop the --status-toggles flag--* periodic transactions and transaction modifiers are always enabled.-  Rule-based transactions and postings are always generated-  (--forecast and --auto are always on).-  Experimental.--* escape key resets to flat mode.-  Flat mode is the default at startup. Probably it should reset to tree-  mode if --tree was used at startup.--* tree mode tweaks: add --tree/-T/-F flags, make flat mode the default,  -  toggle tree mode with T, ensure a visible effect on register screen--* hide future txns by default, add --future flag, toggle with F.-  You may have transactions dated later than today, perhaps piped from-  print --forecast or recorded in the journal, which you don't want to-  see except when forecasting.--  By default, we now hide future transactions, showing "today's balance".-  This can be toggled with the F key, which is easier than setting a-  date query. --present and --future flags have been added to set the-  initial mode.--  (Experimental. Interactions with date queries have not been explored.)--* quick help tweaks; try to show most useful info first--* reorganise help dialog, fit content into 80x25 again--* styling tweaks; cyan/blue -> white/yellow--* less noisy styling in horizontal borders (#838)--* register screen: positive amounts: green -> black-  The green/red scheme helped distinguish the changes column from the-  black/red balance column, but the default green is hard to read on-  the pale background in some terminals. Also the changes column is-  non-bold now.--* use hledger 1.12---# 1.11.1 (2018/10/06)--* use hledger 1.11.1---# 1.11 (2018/9/30)--* use hledger 1.11---# 1.10.1 (2018/7/3)--* restore support for fsnotify 0.2.1.2, as well as 0.3.x (#833)--* fix a vty version bound & possibly build failures with old vty (#494)---# 1.10 (2018/6/30)--* the effect of --value, --forecast, and --anon flags is now preserved on reload (#753)--* edit-at-transaction-position is now also supported when $EDITOR is neovim--* support/require fsnotify 0.3.0.1+--* use hledger-lib 1.10---# 1.9.1 (2018/4/30)--* use hledger-lib 1.9.1---# 1.9 (2018/3/31)--* support ghc 8.4, latest deps--* when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix-  found when reading files--* -E/--empty toggles zeroes at startup (with opposite default to cli)--# 1.5 (2017/12/31)--* fix help -> view manual (on posix platforms) #623--* support -V/--value, --forecast, --auto--* remove upper bounds on all but hledger* and base (experimental)---# 1.4 (2017/9/30)--* a @FILE argument reads flags & args from FILE, one per line--* enable --pivot and --anon options, like hledger CLI (#474) (Jakub Zárybnický)--* accept -NUM as a shortcut for --depth NUM--* deps: allow ansi-terminal 0.7--* deps: drop oldtime flag, require time 1.5+---# 1.3.1 (2017/8/25)--* allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel)--* allow megaparsec-6.1 (Hans-Peter Deifel)--* allow vty 5.17 (Felix Yan)--* allow brick 0.24--* restore upper bounds on hledger packages---# 1.3 (2017/6/30)--The register screen now shows transaction status marks.--The "uncleared" status, and associated UI flags and keys, have been-renamed to "unmarked" to remove ambiguity and confusion.  This means-that we have dropped the `--uncleared` flag, and our `-U` flag now-matches only unmarked things and not pending ones. See the issue and-linked mail list discussion for more background. (#564)--The P key toggles pending mode, consistent with U (unmarked) and C-(cleared). There is also a temporary --status-toggles flag for testing-other toggle styles; see `hledger-ui -h`. (#564)--There is now less "warping" of selection when lists change:--- When the selected account disappears, eg when toggling zero-  accounts, the selection moves to the alphabetically preceding item,-  instead of the first one.--- When the selected transaction disappears, eg when toggling status-  filters, the selection moves to the nearest transaction by date (and-  if several have the same date, by journal order), instead of the-  last one.--In the accounts and register screens, you can now scroll down further-so that the last item need not always be shown at the bottom of the-screen.  And we now try to show the selected item centered in the-following situations:---   after moving to the end with Page down/End--   after toggling filters (status, real, historical..)--   on pressing the control-l key (should force a screen redraw, also)--   on entering the register screen from the accounts screen (there's a-    known problem with this: it doesn't work the first time).--(Items near the top can't be centered, as we don't scroll higher than-the top of the list.)--Emacs movement keys are now supported, as well as VI keys.-hjkl and CTRL-bfnp should work wherever unmodified arrow keys work.--In the transaction screen, amounts are now better aligned, eg when-there are posting status marks or virtual postings.--Deps: allow brick 0.19 (#575, Felix Yan, Simon Michael)---# 1.2 (2017/3/31)--Fix a pattern match failure when pressing E on the transaction screen (fixes #508)--Accounts with ? in name had empty registers (fixes #498) (Bryan Richter)--Allow brick 0.16 (Joshua Chia) and brick 0.17/vty 0.15 (Peter Simons)--Allow megaparsec 5.2 (fixes #503)--Allow text-zipper 0.10---# 1.1.1 (2017/1/20)---   allow brick 0.16 (Joshua Chia)---   drop obsolete --no-elide flag---# 1.1 (2016/12/31)---   with --watch, the display updates automatically to show file or date changes--    hledger-ui --watch will reload data when the journal file (or any included file) changes.-    Also, when viewing a current standard period (ie this day/week/month/quarter/year),-    the period will move as needed to track the current system date.---   the --change flag shows period changes at startup instead of historical ending balances---   the A key runs the hledger-iadd tool, if installed---   always reload when g is pressed--    Previously it would check the modification time and reload only if-    it looked newer than the last reload.---   mark hledger-ui as "stable"---   allow brick 0.15, vty 5.14, text-zipper 0.9---# 1.0.4 (2016/11/2)--- allow brick 0.13---# 1.0.3 (2016/10/31)--- use brick 0.12---# 1.0.2 (2016/10/27)--- use latest brick 0.11---# 1.0.1 (2016/10/27)--- allow megaparsec 5.0 or 5.1---# 1.0 (2016/10/26)--## accounts screen---   at depth 0, show accounts on one "All" line and show all transactions in the register---   0 now sets depth limit to 0 instead of clearing it---   always use --no-elide for a more regular accounts tree--## register screen---   registers can now include/exclude subaccount transactions.--    The register screen now includes subaccounts' transactions if the-    accounts screen was in tree mode, or when showing an account-    which was at the depth limit. Ie, it always shows the-    transactions contributing to the balance displayed on the-    accounts screen. As on the accounts screen, F toggles between-    tree mode/subaccount txns included by default and flat-    mode/subaccount txns excluded by default. (At least, it does when-    it would make a difference.)---   register transactions are filtered by realness and status (#354).--    Two fixes for the account transactions report when --real/--cleared/real:/status: -    are in effect, affecting hledger-ui and hledger-web:-    -    1.  exclude transactions which affect the current account via an excluded posting type.-        Eg when --real is in effect, a transaction posting to the current account with only-        virtual postings will not appear in the report.-    -    2.  when showing historical balances, don't count excluded posting types in the-        starting balance. Eg with --real, the starting balance will be the sum of only the-        non-virtual prior postings.-        -        This is complicated and there might be some ways to confuse it still, causing-        wrongly included/excluded transactions or wrong historical balances/running totals-        (transactions with both real and virtual postings to the current account, perhaps ?)---   show more accurate dates when postings have their own dates.--    If postings to the register account matched by the register's-    filter query have their own dates, we show the earliest of these-    as the transaction date.--## misc---   H toggles between showing "historical" or "period" balances (#392).--    By default hledger-ui now shows historical balances, which-    include transactions before the report start date (like hledger-    balance --historical). Use the H key to toggle to "period" mode,-    where balances start from 0 on the report start date.---   shift arrow keys allow quick period browsing--    -   shift-down narrows to the next smaller standard period-        (year/quarter/month/week/day), shift-up does the reverse-    -   when narrowed to a standard period, shift-right/left moves to-        the next/previous period-    -   \`t\` sets the period to today.---   a runs the add command---   E runs $HLEDGER_UI_EDITOR or $EDITOR or a default editor (vi) on the journal file.--    When using emacs or vi, if a transaction is selected the cursor will be positioned at its journal entry.---   / key sets the filter query; BACKSPACE/DELETE clears it---   Z toggles display of zero items (like --empty), and they are shown by default.--    -E/--empty is now the default for hledger-ui, so accounts with 0 balance-    and transactions posting 0 change are shown by default.  The Z key-    toggles this, entering "nonzero" mode which hides zero items.---   R toggles inclusion of only real (non-virtual) postings---   U toggles inclusion of only uncleared transactions/postings---   I toggles balance assertions checking, useful for troubleshooting---   vi-style movement keys are now supported (for help, you must now use ? not h) (#357)---   ESC cancels minibuffer/help or clears the filter query and jumps to top screen---   ENTER has been reserved for later use---   reloading now preserves any options and modes in effect---   reloading on the error screen now updates the message rather than entering a new error screen---   the help dialog is more detailed, includes the hledger-ui manual, and uses the full terminal width if needed---   the header/footer content is more efficient; historical/period and tree/flat modes are now indicated in the footer---   date: query args on the command line now affect the report period.--    A date2: arg or --date2 flag might also affect it (untested).---   hledger-ui now uses the quicker-building microlens-----0.27.3 (2016/1/12)--- allow brick 0.4--0.27.2 (2016/1/11)--- allow brick 0.3.x--0.27.1 (2015/12/3)--- allow lens 4.13-- make reloading work on the transaction screen---0.27 (2015/10/30)--- hledger-ui is a new curses-style UI, intended to be a standard part-  of the hledger toolset for all users (except on native MS Windows,-  where the vty lib is not yet supported).--    The UI is quite simple, allowing just browsing of accounts and-  transactions, but it has a number of improvements over the old-  hledger-vty, which it replaces:--    - adapts to screen size-    - handles wide characters-    - shows multi-commodity amounts on one line-    - manages cursor and scroll position better-    - allows depth adjustment-    - allows --flat toggle-    - allows --cleared toggle-    - allows journal reloading-    - shows a more useful transaction register, like hledger-web-    - offers multiple color themes-    - includes some built-in help--    hledger-ui is built with brick, a new higher-level UI library based-  on vty, making it relatively easy to grow and maintain.
+ CHANGES.md view
@@ -0,0 +1,378 @@+User-visible changes in hledger-ui.+See also the hledger changelog.++# 1.13 (2019/02/01)++- on posix systems, control-z suspends the program++- control-l now works everywhere and redraws more reliably++- the top status info is clearer++- use hledger 1.13++# 1.12.1 (2018/12/10)++-   avoid build issue with brick 0.44+ (#935)++# 1.12 (2018/12/02)++-   fix "Any" build error with GHC < 8.4++-   error screen: always show error position properly (#904) (Mykola Orliuk)++-   accounts screen: show correct balances when there's only periodic transactions++-   drop the --status-toggles flag++-   periodic transactions and transaction modifiers are always enabled.+    Rule-based transactions and postings are always generated+    (--forecast and --auto are always on).+    Experimental.++-   escape key resets to flat mode.+    Flat mode is the default at startup. Probably it should reset to tree+    mode if --tree was used at startup.++-   tree mode tweaks: add --tree/-T/-F flags, make flat mode the default,\+    toggle tree mode with T, ensure a visible effect on register screen++-   hide future txns by default, add --future flag, toggle with F.+    You may have transactions dated later than today, perhaps piped from+    print --forecast or recorded in the journal, which you don't want to+    see except when forecasting.++    By default, we now hide future transactions, showing "today's balance".+    This can be toggled with the F key, which is easier than setting a+    date query. --present and --future flags have been added to set the+    initial mode.++    (Experimental. Interactions with date queries have not been explored.)++-   quick help tweaks; try to show most useful info first++-   reorganise help dialog, fit content into 80x25 again++-   styling tweaks; cyan/blue -> white/yellow++-   less noisy styling in horizontal borders (#838)++-   register screen: positive amounts: green -> black+    The green/red scheme helped distinguish the changes column from the+    black/red balance column, but the default green is hard to read on+    the pale background in some terminals. Also the changes column is+    non-bold now.++-   use hledger 1.12++# 1.11.1 (2018/10/06)++-   use hledger 1.11.1++# 1.11 (2018/9/30)++-   use hledger 1.11++# 1.10.1 (2018/7/3)++-   restore support for fsnotify 0.2.1.2, as well as 0.3.x (#833)++-   fix a vty version bound & possibly build failures with old vty (#494)++# 1.10 (2018/6/30)++-   the effect of --value, --forecast, and --anon flags is now preserved on reload (#753)++-   edit-at-transaction-position is now also supported when $EDITOR is neovim++-   support/require fsnotify 0.3.0.1+++-   use hledger-lib 1.10++# 1.9.1 (2018/4/30)++-   use hledger-lib 1.9.1++# 1.9 (2018/3/31)++-   support ghc 8.4, latest deps++-   when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix+    found when reading files++-   -E/--empty toggles zeroes at startup (with opposite default to cli)++# 1.5 (2017/12/31)++-   fix help -> view manual (on posix platforms) #623++-   support -V/--value, --forecast, --auto++-   remove upper bounds on all but hledger* and base (experimental)++# 1.4 (2017/9/30)++-   a @FILE argument reads flags & args from FILE, one per line++-   enable --pivot and --anon options, like hledger CLI (#474) (Jakub Zárybnický)++-   accept -NUM as a shortcut for --depth NUM++-   deps: allow ansi-terminal 0.7++-   deps: drop oldtime flag, require time 1.5+++# 1.3.1 (2017/8/25)++-   allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel)++-   allow megaparsec-6.1 (Hans-Peter Deifel)++-   allow vty 5.17 (Felix Yan)++-   allow brick 0.24++-   restore upper bounds on hledger packages++# 1.3 (2017/6/30)++The register screen now shows transaction status marks.++The "uncleared" status, and associated UI flags and keys, have been+renamed to "unmarked" to remove ambiguity and confusion. This means+that we have dropped the `--uncleared` flag, and our `-U` flag now+matches only unmarked things and not pending ones. See the issue and+linked mail list discussion for more background. (#564)++The P key toggles pending mode, consistent with U (unmarked) and C+(cleared). There is also a temporary --status-toggles flag for testing+other toggle styles; see `hledger-ui -h`. (#564)++There is now less "warping" of selection when lists change:++-   When the selected account disappears, eg when toggling zero+    accounts, the selection moves to the alphabetically preceding item,+    instead of the first one.++-   When the selected transaction disappears, eg when toggling status+    filters, the selection moves to the nearest transaction by date (and+    if several have the same date, by journal order), instead of the+    last one.++In the accounts and register screens, you can now scroll down further+so that the last item need not always be shown at the bottom of the+screen. And we now try to show the selected item centered in the+following situations:++-   after moving to the end with Page down/End+-   after toggling filters (status, real, historical..)+-   on pressing the control-l key (should force a screen redraw, also)+-   on entering the register screen from the accounts screen (there's a+    known problem with this: it doesn't work the first time).++(Items near the top can't be centered, as we don't scroll higher than+the top of the list.)++Emacs movement keys are now supported, as well as VI keys.+hjkl and CTRL-bfnp should work wherever unmodified arrow keys work.++In the transaction screen, amounts are now better aligned, eg when+there are posting status marks or virtual postings.++Deps: allow brick 0.19 (#575, Felix Yan, Simon Michael)++# 1.2 (2017/3/31)++Fix a pattern match failure when pressing E on the transaction screen (fixes #508)++Accounts with ? in name had empty registers (fixes #498) (Bryan Richter)++Allow brick 0.16 (Joshua Chia) and brick 0.17/vty 0.15 (Peter Simons)++Allow megaparsec 5.2 (fixes #503)++Allow text-zipper 0.10++# 1.1.1 (2017/1/20)++-   allow brick 0.16 (Joshua Chia)++-   drop obsolete --no-elide flag++# 1.1 (2016/12/31)++-   with --watch, the display updates automatically to show file or date changes++    hledger-ui --watch will reload data when the journal file (or any included file) changes.+    Also, when viewing a current standard period (ie this day/week/month/quarter/year),+    the period will move as needed to track the current system date.++-   the --change flag shows period changes at startup instead of historical ending balances++-   the A key runs the hledger-iadd tool, if installed++-   always reload when g is pressed++    Previously it would check the modification time and reload only if+    it looked newer than the last reload.++-   mark hledger-ui as "stable"++-   allow brick 0.15, vty 5.14, text-zipper 0.9++# 1.0.4 (2016/11/2)++-   allow brick 0.13++# 1.0.3 (2016/10/31)++-   use brick 0.12++# 1.0.2 (2016/10/27)++-   use latest brick 0.11++# 1.0.1 (2016/10/27)++-   allow megaparsec 5.0 or 5.1++# 1.0 (2016/10/26)++## accounts screen++-   at depth 0, show accounts on one "All" line and show all transactions in the register++-   0 now sets depth limit to 0 instead of clearing it++-   always use --no-elide for a more regular accounts tree++## register screen++-   registers can now include/exclude subaccount transactions.++    The register screen now includes subaccounts' transactions if the+    accounts screen was in tree mode, or when showing an account+    which was at the depth limit. Ie, it always shows the+    transactions contributing to the balance displayed on the+    accounts screen. As on the accounts screen, F toggles between+    tree mode/subaccount txns included by default and flat+    mode/subaccount txns excluded by default. (At least, it does when+    it would make a difference.)++-   register transactions are filtered by realness and status (#354).++    Two fixes for the account transactions report when --real/--cleared/real:/status:+    are in effect, affecting hledger-ui and hledger-web:++    1.  exclude transactions which affect the current account via an excluded posting type.+        Eg when --real is in effect, a transaction posting to the current account with only+        virtual postings will not appear in the report.++    2.  when showing historical balances, don't count excluded posting types in the+        starting balance. Eg with --real, the starting balance will be the sum of only the+        non-virtual prior postings.++        This is complicated and there might be some ways to confuse it still, causing+        wrongly included/excluded transactions or wrong historical balances/running totals+        (transactions with both real and virtual postings to the current account, perhaps ?)++-   show more accurate dates when postings have their own dates.++    If postings to the register account matched by the register's+    filter query have their own dates, we show the earliest of these+    as the transaction date.++## misc++-   H toggles between showing "historical" or "period" balances (#392).++    By default hledger-ui now shows historical balances, which+    include transactions before the report start date (like hledger+    balance --historical). Use the H key to toggle to "period" mode,+    where balances start from 0 on the report start date.++-   shift arrow keys allow quick period browsing++    -   shift-down narrows to the next smaller standard period+        (year/quarter/month/week/day), shift-up does the reverse+    -   when narrowed to a standard period, shift-right/left moves to+        the next/previous period+    -   \`t\` sets the period to today.++-   a runs the add command++-   E runs $HLEDGER_UI_EDITOR or $EDITOR or a default editor (vi) on the journal file.++    When using emacs or vi, if a transaction is selected the cursor will be positioned at its journal entry.++-   / key sets the filter query; BACKSPACE/DELETE clears it++-   Z toggles display of zero items (like --empty), and they are shown by default.++    -E/--empty is now the default for hledger-ui, so accounts with 0 balance+    and transactions posting 0 change are shown by default. The Z key+    toggles this, entering "nonzero" mode which hides zero items.++-   R toggles inclusion of only real (non-virtual) postings++-   U toggles inclusion of only uncleared transactions/postings++-   I toggles balance assertions checking, useful for troubleshooting++-   vi-style movement keys are now supported (for help, you must now use ? not h) (#357)++-   ESC cancels minibuffer/help or clears the filter query and jumps to top screen++-   ENTER has been reserved for later use++-   reloading now preserves any options and modes in effect++-   reloading on the error screen now updates the message rather than entering a new error screen++-   the help dialog is more detailed, includes the hledger-ui manual, and uses the full terminal width if needed++-   the header/footer content is more efficient; historical/period and tree/flat modes are now indicated in the footer++-   date: query args on the command line now affect the report period.++    A date2: arg or --date2 flag might also affect it (untested).++-   hledger-ui now uses the quicker-building microlens++0.27.3 (2016/1/12)++-   allow brick 0.4++0.27.2 (2016/1/11)++-   allow brick 0.3.x++0.27.1 (2015/12/3)++-   allow lens 4.13+-   make reloading work on the transaction screen++0.27 (2015/10/30)++-   hledger-ui is a new curses-style UI, intended to be a standard part+    of the hledger toolset for all users (except on native MS Windows,+    where the vty lib is not yet supported).++    The UI is quite simple, allowing just browsing of accounts and+    transactions, but it has a number of improvements over the old+    hledger-vty, which it replaces:++    -   adapts to screen size+    -   handles wide characters+    -   shows multi-commodity amounts on one line+    -   manages cursor and scroll position better+    -   allows depth adjustment+    -   allows --flat toggle+    -   allows --cleared toggle+    -   allows journal reloading+    -   shows a more useful transaction register, like hledger-web+    -   offers multiple color themes+    -   includes some built-in help++    hledger-ui is built with brick, a new higher-level UI library based+    on vty, making it relatively easy to grow and maintain.
Hledger/UI/AccountsScreen.hs view
@@ -40,6 +40,7 @@ import Hledger.UI.RegisterScreen import Hledger.UI.ErrorScreen + accountsScreen :: Screen accountsScreen = AccountsScreen{    sInit   = asInit@@ -122,10 +123,10 @@  asDraw :: UIState -> [Widget Name] asDraw UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}-                           ,ajournal=j-                           ,aScreen=s@AccountsScreen{}-                           ,aMode=mode-                           } =+              ,ajournal=j+              ,aScreen=s@AccountsScreen{}+              ,aMode=mode+              } =   case mode of     Help       -> [helpDialog copts, maincontent]     -- Minibuffer e -> [minibuffer e, maincontent]@@ -173,19 +174,12 @@          toplabel =               withAttr ("border" <> "filename") files-          -- <+> withAttr ("border" <> "query") (str (if flat_ ropts then " flat" else ""))-          <+> nonzero-          <+> str (if ishistorical then " accounts" else " account changes")-          -- <+> str (if ishistorical then " balances" else " changes")+          <+> toggles+          <+> str (" account " ++ if ishistorical then "balances" else "changes")           <+> borderPeriodStr (if ishistorical then "at end of" else "in") (period_ ropts)           <+> borderQueryStr querystr-          <+> togglefilters           <+> borderDepthStr mdepth-          <+> str " ("-          <+> cur-          <+> str "/"-          <+> total-          <+> str ")"+          <+> str (" ("++curidx++"/"++totidx++")")           <+> (if ignore_assertions_ $ inputopts_ copts                then withAttr ("border" <> "query") (str " ignoring balance assertions")                else str "")@@ -195,22 +189,20 @@                            f:_ -> str $ takeFileName f                            -- [f,_:[]] -> (withAttr ("border" <> "bold") $ str $ takeFileName f) <+> str " (& 1 included file)"                            -- f:fs  -> (withAttr ("border" <> "bold") $ str $ takeFileName f) <+> str (" (& " ++ show (length fs) ++ " included files)")+            toggles = withAttr ("border" <> "query") $ str $ unwords $ concat [+               [""]+              ,if empty_ ropts then [] else ["nonzero"]+              ,uiShowStatus copts $ statuses_ ropts+              ,if real_ ropts then ["real"] else []+              ]             querystr = query_ ropts             mdepth = depth_ ropts-            togglefilters =-              case concat [-                   uiShowStatus copts $ statuses_ ropts-                  ,if real_ ropts then ["real"] else []-                  ] of-                [] -> str ""-                fs -> str " from " <+> withAttr ("border" <> "query") (str $ intercalate ", " fs) <+> str " txns"-            nonzero | empty_ ropts = str ""-                    | otherwise    = withAttr ("border" <> "query") (str " nonzero")-            cur = str (case _asList s ^. listSelectedL of-                        Nothing -> "-"-                        Just i -> show (i + 1))-            total = str $ show $ V.length nonblanks -            nonblanks = V.takeWhile (not . T.null . asItemAccountName) $ s ^. asList . listElementsL+            curidx = case _asList s ^. listSelectedL of+                       Nothing -> "-"+                       Just i -> show (i + 1)+            totidx = show $ V.length nonblanks +              where+                nonblanks = V.takeWhile (not . T.null . asItemAccountName) $ s ^. asList . listElementsL          bottomlabel = case mode of                         Minibuffer ed -> minibuffer ed@@ -285,6 +277,8 @@         VtyEvent (EvKey KEsc   []) -> continue $ closeMinibuffer ui         VtyEvent (EvKey KEnter []) -> continue $ regenerateScreens j d $ setFilter s $ closeMinibuffer ui                             where s = chomp $ unlines $ map strip $ getEditContents ed+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         VtyEvent ev        -> do ed' <- handleEditorEvent ev ed                                  continue $ ui{aMode=Minibuffer ed'}         AppEvent _        -> continue ui@@ -294,6 +288,8 @@     Help ->       case ev of         VtyEvent (EvKey (KChar 'q') []) -> halt ui+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         _                    -> helpHandle ui ev      Normal ->@@ -346,7 +342,8 @@         VtyEvent (EvKey (KChar '/') []) -> continue $ regenerateScreens j d $ showMinibuffer ui         VtyEvent (EvKey k           []) | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)         VtyEvent e | e `elem` moveLeftEvents -> continue $ popScreen ui-        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle _asList >> invalidateCache >> continue ui+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle _asList >> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui          -- enter register screen for selected account (if there is one),          -- centering its selected transaction if possible
Hledger/UI/ErrorScreen.hs view
@@ -20,7 +20,7 @@ #endif import Data.Time.Calendar (Day) import Data.Void (Void)-import Graphics.Vty (Event(..),Key(..))+import Graphics.Vty (Event(..),Key(..),Modifier(..)) import Text.Megaparsec import Text.Megaparsec.Char @@ -46,7 +46,8 @@ esDraw :: UIState -> [Widget Name] esDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{}}               ,aScreen=ErrorScreen{..}-              ,aMode=mode} =+              ,aMode=mode+              } =   case mode of     Help       -> [helpDialog copts, maincontent]     -- Minibuffer e -> [minibuffer e, maincontent]@@ -74,16 +75,18 @@ esDraw _ = error "draw function called with wrong screen type, should not happen"  esHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState)-esHandle ui@UIState{-   aScreen=ErrorScreen{..}-  ,aopts=UIOpts{cliopts_=copts}-  ,ajournal=j-  ,aMode=mode-  } ev =+esHandle ui@UIState{aScreen=ErrorScreen{..}+                   ,aopts=UIOpts{cliopts_=copts}+                   ,ajournal=j+                   ,aMode=mode+                   }+         ev =   case mode of     Help ->       case ev of         VtyEvent (EvKey (KChar 'q') []) -> halt ui+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         _                    -> helpHandle ui ev      _ -> do@@ -104,6 +107,8 @@ --             Left err -> continue ui{aScreen=s{esError=err}} -- show latest parse error --             Right j' -> continue $ regenerateScreens j' d $ popScreen ui  -- return to previous screen, and reload it         VtyEvent (EvKey (KChar 'I') []) -> continue $ uiCheckBalanceAssertions d (popScreen $ toggleIgnoreBalanceAssertions ui)+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         _ -> continue ui  esHandle _ _ = error "event handler called with wrong screen type, should not happen"
Hledger/UI/Main.hs view
@@ -71,7 +71,7 @@         | otherwise                                                = withJournalDoUICommand opts runBrickUi  -- TODO fix nasty duplication of withJournalDo--- | hledger-ui's version of withJournalDo. Enables --auto and --forecast.+-- | hledger-ui's version of withJournalDo, which turns on --auto and --forecast. withJournalDoUICommand :: UIOpts -> (UIOpts -> Journal -> IO ()) -> IO () withJournalDoUICommand uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=iopts,reportopts_=ropts}} cmd = do   let copts' = copts{inputopts_=iopts{auto_=True}, reportopts_=ropts{forecast_=True}}
Hledger/UI/RegisterScreen.hs view
@@ -133,9 +133,9 @@  rsDraw :: UIState -> [Widget Name] rsDraw UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}-                            ,aScreen=RegisterScreen{..}-                            ,aMode=mode-                            } =+              ,aScreen=RegisterScreen{..}+              ,aMode=mode+              } =   case mode of     Help       -> [helpDialog copts, maincontent]     -- Minibuffer e -> [minibuffer e, maincontent]@@ -281,6 +281,8 @@         VtyEvent (EvKey KEsc   []) -> continue $ closeMinibuffer ui         VtyEvent (EvKey KEnter []) -> continue $ regenerateScreens j d $ setFilter s $ closeMinibuffer ui                             where s = chomp $ unlines $ map strip $ getEditContents ed+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         VtyEvent ev              -> do ed' <- handleEditorEvent ev ed                                        continue $ ui{aMode=Minibuffer ed'}         AppEvent _        -> continue ui@@ -290,6 +292,8 @@     Help ->       case ev of         VtyEvent (EvKey (KChar 'q') []) -> halt ui+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         _                    -> helpHandle ui ev      Normal ->@@ -333,7 +337,8 @@         VtyEvent (EvKey (KLeft)     [MShift]) -> continue $ regenerateScreens j d $ previousReportPeriod journalspan ui         VtyEvent (EvKey k           []) | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)         VtyEvent e | e `elem` moveLeftEvents  -> continue $ popScreen ui-        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle rsList >> invalidateCache >> continue ui+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle rsList >> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui          -- enter transaction screen for selected transaction         VtyEvent e | e `elem` moveRightEvents -> do
Hledger/UI/TransactionScreen.hs view
@@ -17,7 +17,7 @@ #endif import qualified Data.Text as T import Data.Time.Calendar (Day)-import Graphics.Vty (Event(..),Key(..))+import Graphics.Vty (Event(..),Key(..),Modifier(..)) import Brick import Brick.Widgets.List (listMoveTo) @@ -49,11 +49,12 @@  tsDraw :: UIState -> [Widget Name] tsDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}-                              ,aScreen=TransactionScreen{-                                   tsTransaction=(i,t)-                                  ,tsTransactions=nts-                                  ,tsAccount=acct}-                              ,aMode=mode} =+              ,aScreen=TransactionScreen{tsTransaction=(i,t)+                                        ,tsTransactions=nts+                                        ,tsAccount=acct+                                        }+              ,aMode=mode+              } =   case mode of     Help       -> [helpDialog copts, maincontent]     -- Minibuffer e -> [minibuffer e, maincontent]@@ -106,17 +107,20 @@  tsHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState) tsHandle ui@UIState{aScreen=s@TransactionScreen{tsTransaction=(i,t)-                                                ,tsTransactions=nts-                                                ,tsAccount=acct}-                    ,aopts=UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}-                    ,ajournal=j-                    ,aMode=mode-                    }+                                               ,tsTransactions=nts+                                               ,tsAccount=acct+                                               }+                   ,aopts=UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}+                   ,ajournal=j+                   ,aMode=mode+                   }          ev =   case mode of     Help ->       case ev of         VtyEvent (EvKey (KChar 'q') []) -> halt ui+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         _                    -> helpHandle ui ev      _ -> do@@ -176,6 +180,8 @@           where             ui'@UIState{aScreen=scr} = popScreen ui             ui'' = ui'{aScreen=rsSelect (fromIntegral i) scr}+        VtyEvent (EvKey (KChar 'l') [MCtrl]) -> redraw ui+        VtyEvent (EvKey (KChar 'z') [MCtrl]) -> suspend ui         _ -> continue ui  tsHandle _ _ = error "event handler called with wrong screen type, should not happen"
Hledger/UI/UIUtils.hs view
@@ -21,6 +21,8 @@   ,renderToggle   ,replaceHiddenAccountsNameWith   ,scrollSelectionToMiddle+  ,suspend+  ,redraw ) where @@ -36,7 +38,10 @@ #if !(MIN_VERSION_base(4,11,0)) import Data.Monoid #endif-import Graphics.Vty (Event(..),Key(..),Modifier(..),Color,Attr,currentAttr)+import Graphics.Vty+  (Event(..),Key(..),Modifier(..),Vty(..),Color,Attr,currentAttr,refresh+  -- ,Output(displayBounds,mkDisplayContext),DisplayContext(..)+  ) import Lens.Micro.Platform import System.Environment @@ -46,7 +51,28 @@ import Hledger.UI.UITypes import Hledger.UI.UIState +-- | On posix platforms, send the system STOP signal to suspend the+-- current program. On windows, does nothing.+#ifdef mingw32_HOST_OS+suspendSignal :: IO ()+suspendSignal = return ()+#else+import System.Posix.Signals+suspendSignal :: IO ()+suspendSignal = raiseSignal sigSTOP +#endif +-- | On posix platforms, suspend the program using the STOP signal,+-- like control-z in bash, returning to the original shell prompt,+-- and when resumed, continue where we left off.+-- On windows, does nothing.+suspend :: s -> EventM a (Next s)+suspend st = suspendAndResume $ suspendSignal >> return st++-- | Tell vty to redraw the whole screen, and continue.+redraw :: s -> EventM a (Next s)+redraw st = getVtyHandle >>= liftIO . refresh >> continue st+ -- ui  -- | Wrap a widget in the default hledger-ui screen layout.@@ -66,7 +92,7 @@     render $       withDefAttr "help" $       renderDialog (dialog (Just "Help (?/LEFT/ESC to close)") Nothing (c^.availWidthL)) $ -- (Just (0,[("ok",())]))-      padAll 1 $+      padTop (Pad 1) $ padLeft (Pad 1) $ padRight (Pad 1) $         vBox [            hBox [               padRight (Pad 1) $@@ -112,8 +138,9 @@                   ,renderKey ("A   ", "add transaction (hledger-iadd)")                   ,renderKey ("E   ", "open editor")                   ,renderKey ("I   ", "toggle balance assertions")-                  ,renderKey ("C-l ", "redraw & recenter")                   ,renderKey ("g   ", "reload data")+                  ,renderKey ("C-l ", "redraw & recenter")+                  ,renderKey ("C-z ", "suspend")                   ,renderKey ("q   ", "quit")                 ]              ]@@ -165,7 +192,7 @@  borderDepthStr :: Maybe Int -> Widget Name borderDepthStr Nothing  = str ""-borderDepthStr (Just d) = str " to " <+> withAttr ("border" <> "query") (str $ "depth "++show d)+borderDepthStr (Just d) = str " to depth " <+> withAttr ("border" <> "query") (str $ show d)  borderPeriodStr :: String -> Period -> Widget Name borderPeriodStr _           PeriodAll = str ""
hledger-ui.1 view
@@ -1,5 +1,5 @@ -.TH "hledger\-ui" "1" "December 2018" "hledger\-ui 1.12" "hledger User Manuals"+.TH "hledger\-ui" "1" "February 2019" "hledger\-ui 1.13" "hledger User Manuals"   @@ -20,18 +20,19 @@ file format. hledger is inspired by and largely compatible with ledger(1). .PP-hledger\-ui is hledger's curses\-style interface, providing an efficient-full\-window text UI for viewing accounts and transactions, and some-limited data entry capability.-It is easier than hledger's command\-line interface, and sometimes+hledger\-ui is hledger\[aq]s curses\-style interface, providing an+efficient full\-window text UI for viewing accounts and transactions,+and some limited data entry capability.+It is easier than hledger\[aq]s command\-line interface, and sometimes quicker and more convenient than the web interface. .PP-Note hledger\-ui has some different defaults: \- it generates-rule\-based transactions and postings by default (\[en]forecast and-\[en]auto are always on).-\- it hides transactions dated in the future by default (change this-with \[en]future or the F key).-Experimental.+Note hledger\-ui has some different defaults (experimental):+.IP \[bu] 2+it generates rule\-based transactions and postings by default+(\-\-forecast and \-\-auto are always on).+.IP \[bu] 2+it hides transactions dated in the future by default (change this with+\-\-future or the F key). .PP Like hledger, it reads data from one or more files in hledger journal, timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or@@ -57,7 +58,7 @@ .RE .TP .B \f[C]\-\-register=ACCTREGEX\f[]-start in the (first) matched account's register screen+start in the (first) matched account\[aq]s register screen .RS .RE .TP@@ -96,7 +97,7 @@ .RE .TP .B \f[C]\-\-separator=CHAR\f[]-Field separator to expect when reading CSV (default: `,')+Field separator to expect when reading CSV (default: \[aq],\[aq]) .RS .RE .TP@@ -264,7 +265,7 @@ movement keys are also supported. A tip: movement speed is limited by your keyboard repeat rate, 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\[aq]re on a mac, the Karabiner app is one way to do that.) .PP With shift pressed, the cursor keys adjust the report period, limiting the transactions to be shown (by default, all are shown).@@ -272,9 +273,9 @@ report period durations: year, quarter, month, week, day. Then, \f[C]shift\-left/right\f[] moves to the previous/next period. \f[C]t\f[] sets the report period to today.-With the \f[C]\-\-watch\f[] option, when viewing a \[lq]current\[rq]-period (the current day, week, month, quarter, or year), the period will-move automatically to track the current date.+With the \f[C]\-\-watch\f[] option, when viewing a "current" period (the+current day, week, month, quarter, or year), the period will move+automatically to track the current date. To set a non\-standard period, you can use \f[C]/\f[] and a \f[C]date:\f[] query. .PP@@ -299,8 +300,8 @@ Or, it cancels a minibuffer edit or help dialog in progress. .PP \f[C]CTRL\-l\f[] 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).+possible (selections near the top won\[aq]t be centered, since we+don\[aq]t scroll above the top). .PP \f[C]g\f[] reloads from the data file(s) and updates the current screen and any previous screens.@@ -310,7 +311,7 @@ Disabling balance assertions temporarily can be useful for troubleshooting. .PP-\f[C]a\f[] runs command\-line hledger's add command, and reloads the+\f[C]a\f[] runs command\-line hledger\[aq]s add command, and reloads the updated file. This allows some basic data entry. .PP@@ -333,7 +334,8 @@ .SS Accounts screen .PP 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\[aq]s balance+command. 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@@ -380,8 +382,8 @@ balances are shown (hledger\-ui shows zero items by default, unlike command\-line hledger). .PP-Press \f[C]right\f[] or \f[C]enter\f[] to view an account's transactions-register.+Press \f[C]right\f[] or \f[C]enter\f[] to view an account\[aq]s+transactions register. .SS Register screen .PP This screen shows the transactions affecting a particular account, like@@ -392,7 +394,7 @@ (If there are both real and virtual postings, it shows only the accounts affected by real postings.) .IP \[bu] 2-the overall change to the current account's balance; positive for an+the overall change to the current account\[aq]s balance; positive for an inflow to this account, negative for an outflow. .IP \[bu] 2 the running historical total or period total for the current account,@@ -405,10 +407,10 @@ the running historical balance you would see on a bank register for the current account. .PP-Transactions affecting this account's subaccounts will be included in-the register if the accounts screen is in tree mode, or if it's in flat-mode but this account has subaccounts which are not shown due to a depth-limit.+Transactions affecting this account\[aq]s subaccounts will be included+in the register if the accounts screen is in tree mode, or if it\[aq]s+in flat mode but this account has subaccounts which are not shown due to+a depth limit. In other words, the register always shows the transactions contributing to the balance shown on the accounts screen. .PD 0@@ -422,7 +424,7 @@ toggles cleared transactions. (By default, transactions with all statuses are shown; if you activate one or two status filters, only those transactions are shown; and if you-activate all three, the filter is removed.)q+activate all three, the filter is removed.) .PP \f[C]R\f[] toggles real mode, in which virtual postings are ignored. .PP@@ -435,10 +437,10 @@ .SS Transaction screen .PP This screen shows a single transaction, as a general journal entry,-similar to hledger's print command and journal format+similar to hledger\[aq]s print command and journal format (hledger_journal(5)). .PP-The transaction's date(s) and any cleared flag, transaction code,+The transaction\[aq]s date(s) and any cleared flag, transaction code, description, comments, along with all of its account postings are shown. Simple transactions have two postings, but there can be more (or in certain cases, fewer).@@ -449,9 +451,9 @@ that account register. They will vary depending on which account register you came from (remember most transactions appear in multiple account registers).-The #N number preceding them is the transaction's position within the-complete unfiltered journal, which is a more stable id (at least until-the next reload).+The #N number preceding them is the transaction\[aq]s position within+the complete unfiltered journal, which is a more stable id (at least+until the next reload). .SS Error screen .PP This screen will appear if there is a problem, such as a parse error,@@ -479,7 +481,7 @@ The need to precede options with \f[C]\-\-\f[] when invoked from hledger is awkward. .PP-\f[C]\-f\-\f[] doesn't work (hledger\-ui can't read from stdin).+\f[C]\-f\-\f[] doesn\[aq]t work (hledger\-ui can\[aq]t read from stdin). .PP \f[C]\-V\f[] affects only the accounts screen. .PP
hledger-ui.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.0.+-- This file has been generated from package.yaml by hpack version 0.31.1. -- -- see: https://github.com/sol/hpack ----- hash: 6eaadbd685786699b84803bd6d20d97c53ff8bd9c34b7d5457ba01e07c47f5f3+-- hash: d833450b55016a44ba8764317be0644717747ee8c20a2b191f3700a3cb67e81c  name:           hledger-ui-version:        1.12.1+version:        1.13 synopsis:       Curses-style user interface for the hledger accounting tool description:    This is hledger's curses-style interface.                 It is simpler and more convenient for browsing data than the command-line interface,@@ -30,7 +30,7 @@ tested-with:    GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3 build-type:     Simple extra-source-files:-    CHANGES+    CHANGES.md     README     hledger-ui.1     hledger-ui.txt@@ -64,7 +64,7 @@   hs-source-dirs:       ./.   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans-  cpp-options: -DVERSION="1.12.1"+  cpp-options: -DVERSION="1.13"   build-depends:       ansi-terminal >=0.6.2.3     , async@@ -76,8 +76,8 @@     , directory     , filepath     , fsnotify >=0.2.1.2 && <0.4-    , hledger >=1.12 && <1.13-    , hledger-lib >=1.12 && <1.13+    , hledger >=1.13 && <1.14+    , hledger-lib >=1.13 && <1.14     , megaparsec >=7.0.0 && <8     , microlens >=0.4     , microlens-platform >=0.2.3.1@@ -95,6 +95,7 @@   else     build-depends:         brick >=0.12+      , unix       , vty >=5.5   if flag(threaded)     ghc-options: -threaded
hledger-ui.info view
@@ -3,7 +3,7 @@  File: hledger-ui.info,  Node: Top,  Next: OPTIONS,  Up: (dir) -hledger-ui(1) hledger-ui 1.12+hledger-ui(1) hledger-ui 1.13 *****************************  hledger-ui is hledger's curses-style interface, providing an efficient@@ -12,11 +12,13 @@ interface, and sometimes quicker and more convenient than the web interface. -   Note hledger-ui has some different defaults: - it generates-rule-based transactions and postings by default (-forecast and -auto are-always on).  - it hides transactions dated in the future by default-(change this with -future or the F key).  Experimental.+   Note hledger-ui has some different defaults (experimental): +   * it generates rule-based transactions and postings by default+     (-forecast and -auto are always on).+   * it hides transactions dated in the future by default (change this+     with -future or the F key).+    Like hledger, it reads data from one or more files in hledger journal, timeclock, timedot, or CSV format specified with '-f', or '$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps@@ -347,7 +349,7 @@ toggles cleared transactions.  (By default, transactions with all statuses are shown; if you activate one or two status filters, only those transactions are shown; and if you activate all three, the filter-is removed.)q+is removed.)     'R' toggles real mode, in which virtual postings are ignored. @@ -396,19 +398,19 @@  Tag Table: Node: Top71-Node: OPTIONS1084-Ref: #options1181-Node: KEYS4600-Ref: #keys4695-Node: SCREENS7951-Ref: #screens8036-Node: Accounts screen8126-Ref: #accounts-screen8254-Node: Register screen10470-Ref: #register-screen10625-Node: Transaction screen12622-Ref: #transaction-screen12780-Node: Error screen13650-Ref: #error-screen13772+Node: OPTIONS1100+Ref: #options1197+Node: KEYS4616+Ref: #keys4711+Node: SCREENS7967+Ref: #screens8052+Node: Accounts screen8142+Ref: #accounts-screen8270+Node: Register screen10486+Ref: #register-screen10641+Node: Transaction screen12637+Ref: #transaction-screen12795+Node: Error screen13665+Ref: #error-screen13787  End Tag Table
hledger-ui.txt view
@@ -22,22 +22,25 @@        mand-line interface, and sometimes quicker and more convenient than the        web interface. -       Note hledger-ui has some different defaults: - it generates  rule-based-       transactions  and  postings  by default (-forecast and -auto are always-       on).  - it hides transactions dated in the future  by  default  (change-       this with -future or the F key).  Experimental.+       Note hledger-ui has some different defaults (experimental): -       Like  hledger, it reads data from one or more files in hledger journal,-       timeclock, timedot, or CSV format specified with -f,  or  $LEDGER_FILE,-       or        $HOME/.hledger.journal       (on       windows,       perhaps-       C:/Users/USER/.hledger.journal).  For more about this  see  hledger(1),+       o it generates rule-based transactions and postings by default (--fore-+         cast and --auto are always on).++       o it  hides  transactions  dated  in the future by default (change this+         with --future or the F key).++       Like hledger, it reads data from one or more files in hledger  journal,+       timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,+       or       $HOME/.hledger.journal       (on       windows,        perhaps+       C:/Users/USER/.hledger.journal).   For  more about this see hledger(1),        hledger_journal(5) etc.  OPTIONS-       Note:  if  invoking hledger-ui as a hledger subcommand, write -- before+       Note: if invoking hledger-ui as a hledger subcommand, write  --  before        options as shown above. -       Any QUERYARGS are interpreted as a hledger search query  which  filters+       Any  QUERYARGS  are interpreted as a hledger search query which filters        the data.         --watch@@ -50,7 +53,7 @@               start in the (first) matched account's register screen         --change-              show  period balances (changes) at startup instead of historical+              show period balances (changes) at startup instead of  historical               balances         -F --flat@@ -69,11 +72,11 @@               $LEDGER_FILE or $HOME/.hledger.journal)         --rules-file=RULESFILE-              Conversion   rules  file  to  use  when  reading  CSV  (default:+              Conversion  rules  file  to  use  when  reading  CSV   (default:               FILE.rules)         --separator=CHAR-              Field separator to expect when reading CSV (default: `,')+              Field separator to expect when reading CSV (default: ',')         --alias=OLD=NEW               rename accounts named OLD to NEW@@ -110,11 +113,11 @@               multiperiod/multicolumn report by year         -p --period=PERIODEXP-              set start date, end date, and/or reporting interval all at  once+              set  start date, end date, and/or reporting interval all at once               using period expressions syntax (overrides the flags above)         --date2-              match  the  secondary  date  instead (see command help for other+              match the secondary date instead (see  command  help  for  other               effects)         -U --unmarked@@ -133,21 +136,21 @@               hide/aggregate accounts or postings more than NUM levels deep         -E --empty-              show items with zero amount, normally hidden (and vice-versa  in+              show  items with zero amount, normally hidden (and vice-versa in               hledger-ui/hledger-web)         -B --cost-              convert  amounts  to  their  cost at transaction time (using the+              convert amounts to their cost at  transaction  time  (using  the               transaction price, if any)         -V --value-              convert amounts to their market value on  the  report  end  date+              convert  amounts  to  their  market value on the report end date               (using the most recent applicable market price, if any)         --auto apply automated posting rules to modify transactions.         --forecast-              apply  periodic  transaction  rules  to generate future transac-+              apply periodic transaction rules  to  generate  future  transac-               tions, to 6 months from now or report end date.         When a reporting option appears more than once in the command line, the@@ -167,70 +170,70 @@               show debug output (levels 1-9, default: 1)         A @FILE argument will be expanded to the contents of FILE, which should-       contain one command line option/argument per line.  (To  prevent  this,+       contain  one  command line option/argument per line.  (To prevent this,        insert a -- argument before.)  KEYS-       ?  shows a help dialog listing all keys.  (Some of these also appear in+       ? shows a help dialog listing all keys.  (Some of these also appear  in        the quick help at the bottom of each screen.) Press ? again (or ESCAPE,        or LEFT) to close it.  The following keys work on most screens:         The cursor keys navigate: right (or enter) goes deeper, left returns to-       the previous screen,  up/down/page up/page down/home/end  move  up  and-       down    through    lists.     Vi-style    (h/j/k/l)   and   Emacs-style+       the  previous  screen,  up/down/page up/page down/home/end  move up and+       down   through   lists.     Vi-style    (h/j/k/l)    and    Emacs-style        (CTRL-p/CTRL-n/CTRL-f/CTRL-b) movement keys are also supported.  A tip:-       movement  speed is limited by your keyboard repeat rate, to move faster-       you may want to adjust it.  (If you're on a mac, the Karabiner  app  is+       movement speed is limited by your keyboard repeat rate, to move  faster+       you  may  want to adjust it.  (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, limiting-       the  transactions  to  be  shown   (by   default,   all   are   shown).-       shift-down/up  steps  downward and upward through these standard report+       With shift pressed, the cursor keys adjust the report period,  limiting+       the   transactions   to   be   shown   (by  default,  all  are  shown).+       shift-down/up steps downward and upward through these  standard  report        period   durations:   year,   quarter,   month,   week,   day.    Then,-       shift-left/right  moves to the previous/next period.  t sets the report-       period to today.  With the --watch option,  when  viewing  a  "current"-       period  (the  current  day,  week, month, quarter, or year), the period-       will move automatically to track the current date.  To set a  non-stan-+       shift-left/right moves to the previous/next period.  t sets the  report+       period  to  today.   With  the --watch option, when viewing a "current"+       period (the current day, week, month, quarter,  or  year),  the  period+       will  move automatically to track the current date.  To set a non-stan-        dard period, you can use / and a date: query. -       /  lets  you  set a general filter query limiting the data shown, using-       the same query terms as in hledger and hledger-web.  While editing  the-       query,  you  can  use CTRL-a/e/d/k, BS, cursor keys; press ENTER to set+       / lets you set a general filter query limiting the  data  shown,  using+       the  same query terms as in hledger and hledger-web.  While editing the+       query, you can use CTRL-a/e/d/k, BS, cursor keys; press  ENTER  to  set        it, or ESCAPEto cancel.  There are also keys for quickly adjusting some-       common  filters  like account depth and transaction status (see below).+       common filters like account depth and transaction status  (see  below).        BACKSPACE or DELETE removes all filters, showing all transactions. -       As mentioned above, hledger-ui shows auto-generated  periodic  transac-+       As  mentioned  above, hledger-ui shows auto-generated periodic transac-        tions,  and  hides  future  transactions  (auto-generated  or  not)  by        default.  F toggles showing and hiding these future transactions.  This-       is  similar  to using a query like date:-tomorrow, but more convenient.+       is similar to using a query like date:-tomorrow, but  more  convenient.        (experimental) -       ESCAPE removes all filters and jumps back to the top  screen.   Or,  it+       ESCAPE  removes  all  filters and jumps back to the top screen.  Or, it        cancels a minibuffer edit or help dialog in progress.         CTRL-l redraws the screen and centers the selection if possible (selec--       tions near the top won't be centered, since we don't scroll  above  the+       tions  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-       previous screens.  (With large files, this  could  cause  a  noticeable+       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.) -       I  toggles  balance  assertion  checking.  Disabling balance assertions+       I toggles balance assertion  checking.   Disabling  balance  assertions        temporarily can be useful for troubleshooting. -       a runs command-line hledger's add  command,  and  reloads  the  updated+       a  runs  command-line  hledger's  add  command, and reloads the updated        file.  This allows some basic data entry. -       A  is  like  a,  but  runs  the  hledger-iadd  tool,  which  provides a-       curses-style interface.  This key will be available if hledger-iadd  is+       A is  like  a,  but  runs  the  hledger-iadd  tool,  which  provides  a+       curses-style  interface.  This key will be available if hledger-iadd is        installed in $PATH. -       E   runs   $HLEDGER_UI_EDITOR,   or   $EDITOR,   or  a  default  (emac-+       E  runs  $HLEDGER_UI_EDITOR,  or   $EDITOR,   or   a   default   (emac-        sclient -a "" -nw) on the journal file.  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+       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 error screen.         q quits the application.@@ -239,44 +242,44 @@  SCREENS    Accounts screen-       This  is  normally  the  first screen displayed.  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).  if you specify a query on the command line, it  shows+       This is normally the first screen displayed.   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).  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.  In flat mode, account  balances  are  exclusive  of  subac--       counts,  except  where  subaccounts  are  hidden  by a depth limit (see-       below).  In tree mode, all account balances  are  inclusive  of  subac-+       Account names are shown as a flat list by default.  Press T  to  toggle+       tree  mode.   In  flat  mode,  account balances are exclusive of subac-+       counts, except where subaccounts are  hidden  by  a  depth  limit  (see+       below).   In  tree  mode,  all account balances are inclusive of subac-        counts. -       To  see  less detail, press a number key, 1 to 9, to set a depth limit.+       To see less detail, press a number key, 1 to 9, to set a  depth  limit.        Or use - to decrease and +/= to increase the depth limit.  0 shows even-       less  detail, collapsing all accounts to a single total.  To remove the-       depth limit, set it higher than the maximum  account  depth,  or  press+       less detail, collapsing all accounts to a single total.  To remove  the+       depth  limit,  set  it  higher than the maximum account depth, or press        ESCAPE.         H toggles between showing historical balances or period balances.  His--       torical balances (the default) are ending balances at the  end  of  the-       report  period,  taking  into account all transactions before that date-       (filtered by the filter query if any),  including  transactions  before-       the  start  of  the report period.  In other words, historical balances-       are what you would see on a bank statement  for  that  account  (unless-       disturbed  by  a  filter  query).   Period balances ignore transactions+       torical  balances  (the  default) are ending balances at the end of the+       report period, taking into account all transactions  before  that  date+       (filtered  by  the  filter query if any), including transactions before+       the start of the report period.  In other  words,  historical  balances+       are  what  you  would  see on a bank statement for that account (unless+       disturbed by a filter  query).   Period  balances  ignore  transactions        before the report start date, so they show the change in balance during        the report period.  They are more useful eg when viewing a time log.         U toggles filtering by unmarked status, including or excluding unmarked        postings in the balances.  Similarly, P toggles pending postings, and C-       toggles  cleared postings.  (By default, balances include all postings;-       if you activate one or two status  filters,  only  those  postings  are+       toggles cleared postings.  (By default, balances include all  postings;+       if  you  activate  one  or  two status filters, only those postings are        included; and if you activate all three, the filter is removed.)         R toggles real mode, in which virtual postings are ignored. -       Z  toggles  nonzero  mode, in which only accounts with nonzero balances-       are shown (hledger-ui shows zero items by default, unlike  command-line+       Z toggles nonzero mode, in which only accounts  with  nonzero  balances+       are  shown (hledger-ui shows zero items by default, unlike command-line        hledger).         Press right or enter to view an account's transactions register.@@ -285,64 +288,63 @@        This screen shows the transactions affecting a particular account, like        a check register.  Each line represents one transaction and shows: -       o the other account(s) involved, in abbreviated form.   (If  there  are-         both  real  and virtual postings, it shows only the accounts affected+       o the  other  account(s)  involved, in abbreviated form.  (If there are+         both real and virtual postings, it shows only the  accounts  affected          by real postings.) -       o the overall change to the current account's balance; positive for  an+       o the  overall change to the current account's balance; positive for an          inflow to this account, negative for an outflow.         o the running historical total or period total for the current account,-         after the transaction.  This can be toggled with H.  Similar  to  the-         accounts  screen,  the  historical  total is affected by transactions-         (filtered by the filter query) before the report  start  date,  while+         after  the  transaction.  This can be toggled with H.  Similar to the+         accounts screen, the historical total  is  affected  by  transactions+         (filtered  by  the  filter query) before the report start date, while          the period total is not.  If the historical total is not disturbed by-         a filter query, it will be the running historical balance  you  would+         a  filter  query, it will be the running historical balance you would          see on a bank register for the current account. -       Transactions  affecting  this account's subaccounts will be included in+       Transactions affecting this account's subaccounts will be  included  in        the register if the accounts screen is in tree mode, or if it's in flat-       mode  but  this  account  has  subaccounts which are not shown due to a-       depth limit.  In other words, the register always  shows  the  transac-+       mode but this account has subaccounts which are  not  shown  due  to  a+       depth  limit.   In  other words, the register always shows the transac-        tions contributing to the balance shown on the accounts screen.        Tree mode/flat mode can be toggled with T here also. -       U  toggles  filtering  by  unmarked  status, showing or hiding unmarked+       U toggles filtering by unmarked  status,  showing  or  hiding  unmarked        transactions.  Similarly, P toggles pending transactions, and C toggles-       cleared  transactions.  (By default, transactions with all statuses are-       shown; if you activate one or two status filters, only  those  transac--       tions  are  shown;  and  if  you  activate  all  three,  the  filter is-       removed.)q+       cleared transactions.  (By default, transactions with all statuses  are+       shown;  if  you activate one or two status filters, only those transac-+       tions are shown; and if you activate all three, the filter is removed.)         R toggles real mode, in which virtual postings are ignored. -       Z toggles nonzero mode, in which only transactions  posting  a  nonzero-       change  are  shown (hledger-ui shows zero items by default, unlike com-+       Z  toggles  nonzero  mode, in which only transactions posting a nonzero+       change are shown (hledger-ui shows zero items by default,  unlike  com-        mand-line hledger).         Press right (or enter) to view the selected transaction in detail.     Transaction screen-       This screen shows a single transaction, as  a  general  journal  entry,-       similar  to  hledger's  print command and journal format (hledger_jour-+       This  screen  shows  a  single transaction, as a general journal entry,+       similar to hledger's print command and  journal  format  (hledger_jour-        nal(5)). -       The transaction's date(s)  and  any  cleared  flag,  transaction  code,-       description,  comments,  along  with  all  of  its account postings are-       shown.  Simple transactions have two postings, but there  can  be  more+       The  transaction's  date(s)  and  any  cleared  flag, transaction code,+       description, comments, along with  all  of  its  account  postings  are+       shown.   Simple  transactions  have two postings, but there can be more        (or in certain cases, fewer). -       up  and  down will step through all transactions listed in the previous-       account register screen.  In the title bar, the numbers in  parentheses-       show  your  position  within  that  account  register.   They will vary+       up and down will step through all transactions listed in  the  previous+       account  register screen.  In the title bar, the numbers in parentheses+       show your position  within  that  account  register.   They  will  vary        depending on which account register you came from (remember most trans-        actions appear in multiple account registers).  The #N number preceding        them is the transaction's position within the complete unfiltered jour-        nal, which is a more stable id (at least until the next reload).     Error screen-       This  screen  will appear if there is a problem, such as a parse error,-       when you press g to reload.  Once you have fixed the problem,  press  g+       This screen will appear if there is a problem, such as a  parse  error,+       when  you  press g to reload.  Once you have fixed the problem, press g        again to reload and resume normal operation.  (Or, you can press escape        to cancel the reload attempt.) @@ -350,17 +352,17 @@        COLUMNS The screen width to use.  Default: the full terminal width.         LEDGER_FILE The journal file path when not specified with -f.  Default:-       ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour-+       ~/.hledger.journal (on  windows,  perhaps  C:/Users/USER/.hledger.jour-        nal).  FILES-       Reads data from one or more files in hledger journal, timeclock,  time--       dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or-       $HOME/.hledger.journal          (on          windows,           perhaps+       Reads  data from one or more files in hledger journal, timeclock, time-+       dot,  or  CSV  format  specified   with   -f,   or   $LEDGER_FILE,   or+       $HOME/.hledger.journal           (on          windows,          perhaps        C:/Users/USER/.hledger.journal).  BUGS-       The  need  to precede options with -- when invoked from hledger is awk-+       The need to precede options with -- when invoked from hledger  is  awk-        ward.         -f- doesn't work (hledger-ui can't read from stdin).@@ -368,13 +370,13 @@        -V affects only the accounts screen.         When you press g, the current and all previous screens are regenerated,-       which  may cause a noticeable pause with large files.  Also there is no+       which may cause a noticeable pause with large files.  Also there is  no        visual indication that this is in progress. -       --watch is not yet fully robust.  It works well for normal  usage,  but-       many  file  changes  in  a  short time (eg saving the file thousands of-       times with an editor macro) can cause problems at least on OSX.   Symp--       toms  include:  unresponsive UI, periodic resetting of the cursor posi-+       --watch  is  not yet fully robust.  It works well for normal usage, but+       many file changes in a short time (eg  saving  the  file  thousands  of+       times  with an editor macro) can cause problems at least on OSX.  Symp-+       toms include: unresponsive UI, periodic resetting of the  cursor  posi-        tion, momentary display of parse errors, high CPU usage eventually sub-        siding, and possibly a small but persistent build-up of CPU usage until        the program is restarted.@@ -382,7 +384,7 @@   REPORTING BUGS-       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel+       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel        or hledger mail list)  @@ -396,7 +398,7 @@   SEE ALSO-       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),+       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-        dot(5), ledger(1) @@ -404,4 +406,4 @@   -hledger-ui 1.12                  December 2018                   hledger-ui(1)+hledger-ui 1.13                  February 2019                   hledger-ui(1)