ui: use t/l keys for tree/list, T for "today", drop vi keys?! retune help (#1286)
This commit is contained in:
		
							parent
							
								
									a3ae4d88f8
								
							
						
					
					
						commit
						847fc23236
					
				@ -208,8 +208,9 @@ asDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}
 | 
				
			|||||||
            quickhelp = borderKeysStr' [
 | 
					            quickhelp = borderKeysStr' [
 | 
				
			||||||
               ("?", str "help")
 | 
					               ("?", str "help")
 | 
				
			||||||
--              ,("RIGHT", str "register")
 | 
					--              ,("RIGHT", str "register")
 | 
				
			||||||
 | 
					              ,("t", str "tree")
 | 
				
			||||||
 | 
					              ,("l", str "list")
 | 
				
			||||||
              ,("-+", str "depth")
 | 
					              ,("-+", str "depth")
 | 
				
			||||||
              ,("T", renderToggle (tree_ ropts) "flat" "tree")
 | 
					 | 
				
			||||||
              ,("H", renderToggle (not ishistorical) "end-bals" "changes")
 | 
					              ,("H", renderToggle (not ishistorical) "end-bals" "changes")
 | 
				
			||||||
              ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast")
 | 
					              ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast")
 | 
				
			||||||
              --,("/", "filter")
 | 
					              --,("/", "filter")
 | 
				
			||||||
@ -322,11 +323,12 @@ asHandle ui0@UIState{
 | 
				
			|||||||
        VtyEvent (EvKey (KChar '-') []) -> continue $ regenerateScreens j d $ decDepth ui
 | 
					        VtyEvent (EvKey (KChar '-') []) -> continue $ regenerateScreens j d $ decDepth ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar '_') []) -> continue $ regenerateScreens j d $ decDepth ui
 | 
					        VtyEvent (EvKey (KChar '_') []) -> continue $ regenerateScreens j d $ decDepth ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar c)   []) | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui
 | 
					        VtyEvent (EvKey (KChar c)   []) | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 't') [])    -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui
 | 
					        VtyEvent (EvKey (KChar 'T') []) -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        -- display mode/query toggles
 | 
					        -- display mode/query toggles
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'H') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
 | 
					        VtyEvent (EvKey (KChar 'H') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'T') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleTree ui
 | 
					        VtyEvent (EvKey (KChar 't') []) -> asCenterAndContinue $ regenerateScreens j d $ setTree ui
 | 
				
			||||||
 | 
					        VtyEvent (EvKey (KChar 'l') []) -> asCenterAndContinue $ regenerateScreens j d $ setList ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'Z') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
 | 
					        VtyEvent (EvKey (KChar 'Z') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'R') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleReal ui
 | 
					        VtyEvent (EvKey (KChar 'R') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleReal ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'U') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
 | 
					        VtyEvent (EvKey (KChar 'U') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
 | 
				
			||||||
 | 
				
			|||||||
@ -235,7 +235,12 @@ rsDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}
 | 
				
			|||||||
               ("?", str "help")
 | 
					               ("?", str "help")
 | 
				
			||||||
              ,("LEFT", str "back")
 | 
					              ,("LEFT", str "back")
 | 
				
			||||||
--              ,("RIGHT", str "transaction")
 | 
					--              ,("RIGHT", str "transaction")
 | 
				
			||||||
              ,("T", renderToggle (tree_ ropts) "flat(-subs)" "tree(+subs)") -- rsForceInclusive may override, but use tree_ to ensure a visible toggle effect
 | 
					
 | 
				
			||||||
 | 
					              -- tree/list mode - rsForceInclusive may override, but use tree_ to ensure a visible toggle effect
 | 
				
			||||||
 | 
					              -- ,("T", renderToggle (tree_ ropts) "flat(-subs)" "tree(+subs)")
 | 
				
			||||||
 | 
					              ,("t", str "tree(+subs)")
 | 
				
			||||||
 | 
					              ,("l", str "list(-subs)")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              ,("H", renderToggle (not ishistorical) "historical" "period")
 | 
					              ,("H", renderToggle (not ishistorical) "historical" "period")
 | 
				
			||||||
              ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast")
 | 
					              ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast")
 | 
				
			||||||
--               ,("a", "add")
 | 
					--               ,("a", "add")
 | 
				
			||||||
@ -316,7 +321,7 @@ rsHandle ui@UIState{
 | 
				
			|||||||
        VtyEvent (EvKey (KChar 'I') []) -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)
 | 
					        VtyEvent (EvKey (KChar 'I') []) -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'a') []) -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui
 | 
					        VtyEvent (EvKey (KChar 'a') []) -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'A') []) -> suspendAndResume $ void (runIadd (journalFilePath j)) >> uiReloadJournalIfChanged copts d j ui
 | 
					        VtyEvent (EvKey (KChar 'A') []) -> suspendAndResume $ void (runIadd (journalFilePath j)) >> uiReloadJournalIfChanged copts d j ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 't') [])    -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui
 | 
					        VtyEvent (EvKey (KChar 'T') []) -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'E') []) -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui
 | 
					        VtyEvent (EvKey (KChar 'E') []) -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui
 | 
				
			||||||
          where
 | 
					          where
 | 
				
			||||||
            (pos,f) = case listSelectedElement rsList of
 | 
					            (pos,f) = case listSelectedElement rsList of
 | 
				
			||||||
@ -330,7 +335,8 @@ rsHandle ui@UIState{
 | 
				
			|||||||
        VtyEvent (EvKey (KChar 'B') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleCost ui
 | 
					        VtyEvent (EvKey (KChar 'B') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleCost ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'V') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleValue ui
 | 
					        VtyEvent (EvKey (KChar 'V') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleValue ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'H') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
 | 
					        VtyEvent (EvKey (KChar 'H') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'T') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleTree ui
 | 
					        VtyEvent (EvKey (KChar 't') []) -> rsCenterAndContinue $ regenerateScreens j d $ setTree ui
 | 
				
			||||||
 | 
					        VtyEvent (EvKey (KChar 'l') []) -> rsCenterAndContinue $ regenerateScreens j d $ setList ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'Z') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
 | 
					        VtyEvent (EvKey (KChar 'Z') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'R') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleReal ui
 | 
					        VtyEvent (EvKey (KChar 'R') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleReal ui
 | 
				
			||||||
        VtyEvent (EvKey (KChar 'U') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
 | 
					        VtyEvent (EvKey (KChar 'U') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
{-# LANGUAGE CPP #-}
 | 
					 | 
				
			||||||
{- | UIState operations. -}
 | 
					{- | UIState operations. -}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{-# LANGUAGE CPP               #-}
 | 
				
			||||||
 | 
					{-# LANGUAGE NamedFieldPuns    #-}
 | 
				
			||||||
{-# LANGUAGE OverloadedStrings #-}
 | 
					{-# LANGUAGE OverloadedStrings #-}
 | 
				
			||||||
{-# LANGUAGE RecordWildCards   #-}
 | 
					{-# LANGUAGE RecordWildCards   #-}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -135,6 +136,16 @@ valuationToggleValue :: Maybe ValuationType -> Maybe ValuationType
 | 
				
			|||||||
valuationToggleValue (Just (AtDefault _)) = Nothing
 | 
					valuationToggleValue (Just (AtDefault _)) = Nothing
 | 
				
			||||||
valuationToggleValue _                    = Just $ AtDefault Nothing
 | 
					valuationToggleValue _                    = Just $ AtDefault Nothing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- | Set hierarchic account tree mode.
 | 
				
			||||||
 | 
					setTree :: UIState -> UIState
 | 
				
			||||||
 | 
					setTree ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
 | 
				
			||||||
 | 
					  ui{aopts=uopts{cliopts_=copts{reportopts_=ropts{accountlistmode_=ALTree}}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- | Set flat account list mode.
 | 
				
			||||||
 | 
					setList :: UIState -> UIState
 | 
				
			||||||
 | 
					setList ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
 | 
				
			||||||
 | 
					  ui{aopts=uopts{cliopts_=copts{reportopts_=ropts{accountlistmode_=ALFlat}}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- | Toggle between flat and tree mode. If current mode is unspecified/default, assume it's flat.
 | 
					-- | Toggle between flat and tree mode. If current mode is unspecified/default, assume it's flat.
 | 
				
			||||||
toggleTree :: UIState -> UIState
 | 
					toggleTree :: UIState -> UIState
 | 
				
			||||||
toggleTree ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
 | 
					toggleTree ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
 | 
				
			||||||
 | 
				
			|||||||
@ -91,31 +91,31 @@ helpDialog _copts =
 | 
				
			|||||||
    render $
 | 
					    render $
 | 
				
			||||||
      withDefAttr "help" $
 | 
					      withDefAttr "help" $
 | 
				
			||||||
      renderDialog (dialog (Just "Help (?/LEFT/ESC to close)") Nothing (c^.availWidthL)) $ -- (Just (0,[("ok",())]))
 | 
					      renderDialog (dialog (Just "Help (?/LEFT/ESC to close)") Nothing (c^.availWidthL)) $ -- (Just (0,[("ok",())]))
 | 
				
			||||||
      padTop (Pad 1) $ padLeft (Pad 1) $ padRight (Pad 1) $
 | 
					      padTop (Pad 0) $ padLeft (Pad 1) $ padRight (Pad 1) $
 | 
				
			||||||
        vBox [
 | 
					        vBox [
 | 
				
			||||||
           hBox [
 | 
					           hBox [
 | 
				
			||||||
              padRight (Pad 1) $
 | 
					              padRight (Pad 1) $
 | 
				
			||||||
                vBox [
 | 
					                vBox [
 | 
				
			||||||
                   withAttr ("help" <> "heading") $ str "Navigation"
 | 
					                   withAttr ("help" <> "heading") $ str "Navigation"
 | 
				
			||||||
                  ,renderKey ("UP/DOWN/PUP/PDN/HOME/END/emacs/vi keys", "")
 | 
					                  ,renderKey ("UP/DOWN/PUP/PDN/HOME/END or C-p/n/f/b", "")
 | 
				
			||||||
                  ,str "      move selection"
 | 
					                  ,str "      move selection"
 | 
				
			||||||
                  ,renderKey ("RIGHT", "show account txns, txn detail")
 | 
					                  ,renderKey ("RIGHT", "show account txns, or txn detail")
 | 
				
			||||||
                  ,renderKey ("LEFT ", "go back")
 | 
					                  ,renderKey ("LEFT ", "go back")
 | 
				
			||||||
                  ,renderKey ("ESC  ", "cancel or reset")
 | 
					                  ,renderKey ("ESC  ", "cancel input, or reset")
 | 
				
			||||||
                  ,str " "
 | 
					                  ,str " "
 | 
				
			||||||
                  ,withAttr ("help" <> "heading") $ str "Report period"
 | 
					                  ,withAttr ("help" <> "heading") $ str "Report period"
 | 
				
			||||||
                  ,renderKey ("S-DOWN /S-UP  ", "shrink/grow period")
 | 
					                  ,renderKey ("S-DOWN /S-UP  ", "shrink/grow period")
 | 
				
			||||||
                  ,renderKey ("S-RIGHT/S-LEFT", "next/previous period")
 | 
					                  ,renderKey ("S-RIGHT/S-LEFT", "next/previous period")
 | 
				
			||||||
                  ,renderKey ("t             ", "set period to today")
 | 
					                  ,renderKey ("T             ", "set period to today")
 | 
				
			||||||
                  ,str " "
 | 
					                  ,str " "
 | 
				
			||||||
                  ,withAttr ("help" <> "heading") $ str "Accounts screen"
 | 
					                  ,withAttr ("help" <> "heading") $ str "Accounts screen"
 | 
				
			||||||
                  ,renderKey ("-+0123456789 ", "set depth limit")
 | 
					                  ,renderKey ("1234567890-+ ", "set/adjust depth limit")
 | 
				
			||||||
                  ,renderKey ("T ", "toggle tree/flat mode")
 | 
					                  ,renderKey ("t/l", "set tree/list mode")
 | 
				
			||||||
                  ,renderKey ("H ", "historical end balance/period change")
 | 
					                  ,renderKey ("H  ", "toggle historical balance/change")
 | 
				
			||||||
                  ,str " "
 | 
					                  ,str " "
 | 
				
			||||||
                  ,withAttr ("help" <> "heading") $ str "Register screen"
 | 
					                  ,withAttr ("help" <> "heading") $ str "Register screen"
 | 
				
			||||||
                  ,renderKey ("T ", "toggle subaccount txns\n(and accounts screen tree/flat mode)")
 | 
					                  ,renderKey ("t/l", "show/hide subaccount txns\n(and set accounts tree/list mode)")
 | 
				
			||||||
                  ,renderKey ("H ", "show historical total/period total")
 | 
					                  ,renderKey ("H  ", "toggle historical/period total")
 | 
				
			||||||
                  ,str " "
 | 
					                  ,str " "
 | 
				
			||||||
                ]
 | 
					                ]
 | 
				
			||||||
             ,padLeft (Pad 1) $ padRight (Pad 0) $
 | 
					             ,padLeft (Pad 1) $ padRight (Pad 0) $
 | 
				
			||||||
@ -130,8 +130,8 @@ helpDialog _copts =
 | 
				
			|||||||
                  ,str " "
 | 
					                  ,str " "
 | 
				
			||||||
                  ,withAttr ("help" <> "heading") $ str "Help"
 | 
					                  ,withAttr ("help" <> "heading") $ str "Help"
 | 
				
			||||||
                  ,renderKey ("?   ", "toggle this help")
 | 
					                  ,renderKey ("?   ", "toggle this help")
 | 
				
			||||||
                  ,renderKey ("p/m/i ", "(with this help open)\nshow manual in pager/man/info")
 | 
					                  ,renderKey ("p/m/i", "(with this help open)\nshow manual in pager/man/info")
 | 
				
			||||||
                  ,str " "
 | 
					                  -- ,str " "  -- need one more line in 80x25
 | 
				
			||||||
                  ,withAttr ("help" <> "heading") $ str "Other"
 | 
					                  ,withAttr ("help" <> "heading") $ str "Other"
 | 
				
			||||||
                  ,renderKey ("a   ", "add transaction (hledger add)")
 | 
					                  ,renderKey ("a   ", "add transaction (hledger add)")
 | 
				
			||||||
                  ,renderKey ("A   ", "add transaction (hledger-iadd)")
 | 
					                  ,renderKey ("A   ", "add transaction (hledger-iadd)")
 | 
				
			||||||
@ -341,10 +341,16 @@ scrollSelectionToMiddle list = do
 | 
				
			|||||||
    _ -> return ()
 | 
					    _ -> return ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--                 arrow keys       vi keys               emacs keys
 | 
					--                 arrow keys       vi keys               emacs keys
 | 
				
			||||||
moveUpEvents    = [EvKey KUp []   , EvKey (KChar 'k') [], EvKey (KChar 'p') [MCtrl]]
 | 
					-- moveUpEvents    = [EvKey KUp []   , EvKey (KChar 'k') [], EvKey (KChar 'p') [MCtrl]]
 | 
				
			||||||
moveDownEvents  = [EvKey KDown [] , EvKey (KChar 'j') [], EvKey (KChar 'n') [MCtrl]]
 | 
					-- moveDownEvents  = [EvKey KDown [] , EvKey (KChar 'j') [], EvKey (KChar 'n') [MCtrl]]
 | 
				
			||||||
moveLeftEvents  = [EvKey KLeft [] , EvKey (KChar 'h') [], EvKey (KChar 'b') [MCtrl]]
 | 
					-- moveLeftEvents  = [EvKey KLeft [] , EvKey (KChar 'h') [], EvKey (KChar 'b') [MCtrl]]
 | 
				
			||||||
moveRightEvents = [EvKey KRight [], EvKey (KChar 'l') [], EvKey (KChar 'f') [MCtrl]]
 | 
					-- moveRightEvents = [EvKey KRight [], EvKey (KChar 'l') [], EvKey (KChar 'f') [MCtrl]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--                 arrow keys       emacs keys
 | 
				
			||||||
 | 
					moveUpEvents    = [EvKey KUp []   , EvKey (KChar 'p') [MCtrl]]
 | 
				
			||||||
 | 
					moveDownEvents  = [EvKey KDown [] , EvKey (KChar 'n') [MCtrl]]
 | 
				
			||||||
 | 
					moveLeftEvents  = [EvKey KLeft [] , EvKey (KChar 'b') [MCtrl]]
 | 
				
			||||||
 | 
					moveRightEvents = [EvKey KRight [], EvKey (KChar 'f') [MCtrl]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
normaliseMovementKeys ev
 | 
					normaliseMovementKeys ev
 | 
				
			||||||
  | ev `elem` moveUpEvents    = EvKey KUp []
 | 
					  | ev `elem` moveUpEvents    = EvKey KUp []
 | 
				
			||||||
 | 
				
			|||||||
@ -69,10 +69,10 @@ Any QUERYARGS are interpreted as a hledger search query which filters the data.
 | 
				
			|||||||
`--change`
 | 
					`--change`
 | 
				
			||||||
: show period balances (changes) at startup instead of historical balances
 | 
					: show period balances (changes) at startup instead of historical balances
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`-F --flat`
 | 
					`-l --flat`
 | 
				
			||||||
: show accounts as a list (default)
 | 
					: show accounts as a flat list (default)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`-T --tree`
 | 
					`-t --tree`
 | 
				
			||||||
: show accounts as a tree
 | 
					: show accounts as a tree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 hledger input options:
 | 
					 hledger input options:
 | 
				
			||||||
@ -87,113 +87,112 @@ 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`) to close it.
 | 
					press `?` again (or `escape`, or `left`) 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.
 | 
				
			||||||
Vi-style (`h`/`j`/`k`/`l`) and Emacs-style (`CTRL-p`/`CTRL-n`/`CTRL-f`/`CTRL-b`) movement keys are also supported.
 | 
					Emacs-style (`ctrl-p`/`ctrl-n`/`ctrl-f`/`ctrl-b`) movement keys are also supported
 | 
				
			||||||
 | 
					(but not vi-style keys, since hledger-1.19, sorry!).
 | 
				
			||||||
A tip: movement speed is limited by your keyboard repeat rate,
 | 
					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. *(experimental)*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`ESCAPE` removes all filters and jumps back to the top screen.
 | 
					`escape` removes all filters and jumps back to the top screen.
 | 
				
			||||||
Or, it cancels a minibuffer edit or help dialog in progress.
 | 
					or, it cancels a minibuffer edit or help dialog in progress.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`q` quits the application.
 | 
					`b` toggles cost mode, showing amounts in their transaction price's
 | 
				
			||||||
 | 
					 | 
				
			||||||
Experimental:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
`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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Additional screen-specific keys are described below.
 | 
					`q` quits the application.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# SCREENS
 | 
					additional screen-specific keys are described below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Accounts screen
 | 
					# screens
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is normally the first screen displayed.
 | 
					## accounts screen
 | 
				
			||||||
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).
 | 
					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.
 | 
					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.
 | 
					Press `t` or `l` to show accounts as a tree or flat list (the default).
 | 
				
			||||||
In flat mode, account balances are exclusive of subaccounts, except where subaccounts are hidden by a depth limit (see below).
 | 
					In flat mode, account balances are exclusive of subaccounts, except where subaccounts are hidden by a depth limit (see below).
 | 
				
			||||||
In tree mode, all account balances are inclusive of subaccounts.
 | 
					In tree mode, all account balances are inclusive of subaccounts.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -249,7 +248,7 @@ Transactions affecting this account's subaccounts will be included in the regist
 | 
				
			|||||||
if the accounts screen is in tree mode,
 | 
					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.
 | 
					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 transactions contributing to the balance shown on the accounts screen.
 | 
					In other words, the register always shows the transactions contributing to the balance shown on the accounts screen.
 | 
				
			||||||
Tree mode/flat mode can be toggled with `T` here also.
 | 
					Tree mode or flat mode can be selected with `t`or `l` here also.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`U` toggles filtering by [unmarked status](journal.html#status), showing or hiding unmarked transactions.
 | 
					`U` toggles filtering by [unmarked status](journal.html#status), showing or hiding unmarked transactions.
 | 
				
			||||||
Similarly, `P` toggles pending transactions, and `C` toggles cleared transactions.
 | 
					Similarly, `P` toggles pending transactions, and `C` toggles cleared transactions.
 | 
				
			||||||
 | 
				
			|||||||
@ -209,7 +209,7 @@ flattreeflags showamounthelp = [
 | 
				
			|||||||
     ("show accounts as a flat list (default)"
 | 
					     ("show accounts as a flat list (default)"
 | 
				
			||||||
      ++ if showamounthelp then ". Amounts exclude subaccount amounts, except where the account is depth-clipped." else "")
 | 
					      ++ if showamounthelp then ". Amounts exclude subaccount amounts, except where the account is depth-clipped." else "")
 | 
				
			||||||
  ,flagNone ["tree","t"] (setboolopt "tree")
 | 
					  ,flagNone ["tree","t"] (setboolopt "tree")
 | 
				
			||||||
    ("show accounts as a hierarchic tree" ++ if showamounthelp then ". Amounts include subaccount amounts." else "")
 | 
					    ("show accounts as a tree" ++ if showamounthelp then ". Amounts include subaccount amounts." else "")
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- | Common flags that are accepted but not shown in --help,
 | 
					-- | Common flags that are accepted but not shown in --help,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user