From ae830a1acecac12b40c7c7f0cf6954396d3f6977 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Sat, 18 Jul 2020 08:39:23 -0700 Subject: [PATCH] ui: restore vi keys by popular demand; t toggles tree mode (#1286) --- hledger-ui/Hledger/UI/AccountsScreen.hs | 8 +++--- hledger-ui/Hledger/UI/RegisterScreen.hs | 9 +++---- hledger-ui/Hledger/UI/UIUtils.hs | 33 +++++++++++-------------- hledger-ui/hledger-ui.m4.md | 8 +++--- 4 files changed, 26 insertions(+), 32 deletions(-) diff --git a/hledger-ui/Hledger/UI/AccountsScreen.hs b/hledger-ui/Hledger/UI/AccountsScreen.hs index 25d340044..8ca13b59d 100644 --- a/hledger-ui/Hledger/UI/AccountsScreen.hs +++ b/hledger-ui/Hledger/UI/AccountsScreen.hs @@ -208,8 +208,9 @@ asDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}} quickhelp = borderKeysStr' [ ("?", str "help") -- ,("RIGHT", str "register") - ,("t", str "tree") - ,("l", str "list") + ,("t", renderToggle (tree_ ropts) "list" "tree") + -- ,("t", str "tree") + -- ,("l", str "list") ,("-+", str "depth") ,("H", renderToggle (not ishistorical) "end-bals" "changes") ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast") @@ -327,8 +328,7 @@ asHandle ui0@UIState{ -- display mode/query toggles VtyEvent (EvKey (KChar 'H') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui - VtyEvent (EvKey (KChar 't') []) -> asCenterAndContinue $ regenerateScreens j d $ setTree ui - VtyEvent (EvKey (KChar 'l') []) -> asCenterAndContinue $ regenerateScreens j d $ setList ui + VtyEvent (EvKey (KChar 't') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleTree ui VtyEvent (EvKey (KChar 'Z') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui VtyEvent (EvKey (KChar 'R') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleReal ui VtyEvent (EvKey (KChar 'U') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui diff --git a/hledger-ui/Hledger/UI/RegisterScreen.hs b/hledger-ui/Hledger/UI/RegisterScreen.hs index b464920c9..d93b0a476 100644 --- a/hledger-ui/Hledger/UI/RegisterScreen.hs +++ b/hledger-ui/Hledger/UI/RegisterScreen.hs @@ -237,9 +237,9 @@ rsDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}} -- ,("RIGHT", str "transaction") -- 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)") + ,("t", renderToggle (tree_ ropts) "list(-subs)" "tree(+subs)") + -- ,("t", str "tree(+subs)") + -- ,("l", str "list(-subs)") ,("H", renderToggle (not ishistorical) "historical" "period") ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast") @@ -335,8 +335,7 @@ rsHandle ui@UIState{ VtyEvent (EvKey (KChar 'B') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleCost ui VtyEvent (EvKey (KChar 'V') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleValue ui VtyEvent (EvKey (KChar 'H') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui - VtyEvent (EvKey (KChar 't') []) -> rsCenterAndContinue $ regenerateScreens j d $ setTree ui - VtyEvent (EvKey (KChar 'l') []) -> rsCenterAndContinue $ regenerateScreens j d $ setList ui + VtyEvent (EvKey (KChar 't') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleTree ui VtyEvent (EvKey (KChar 'Z') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui VtyEvent (EvKey (KChar 'R') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleReal ui VtyEvent (EvKey (KChar 'U') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui diff --git a/hledger-ui/Hledger/UI/UIUtils.hs b/hledger-ui/Hledger/UI/UIUtils.hs index e875d7e52..576435a89 100644 --- a/hledger-ui/Hledger/UI/UIUtils.hs +++ b/hledger-ui/Hledger/UI/UIUtils.hs @@ -97,11 +97,12 @@ helpDialog _copts = padRight (Pad 1) $ vBox [ withAttr ("help" <> "heading") $ str "Navigation" - ,renderKey ("UP/DOWN/PUP/PDN/HOME/END or C-p/n/f/b", "") - ,str " move selection" - ,renderKey ("RIGHT", "show account txns, or txn detail") - ,renderKey ("LEFT ", "go back") - ,renderKey ("ESC ", "cancel input, or reset everything") + ,renderKey ("UP/DOWN/PUP/PDN/HOME/END/k/j/C-p/C-n", "") + ,str " move selection up/down" + ,renderKey ("RIGHT/l/C-f", "") + ,str " show account txns, or txn detail" + ,renderKey ("LEFT/h/C-b ", "go back") + ,renderKey ("ESC ", "cancel input, or reset UI") ,str " " ,withAttr ("help" <> "heading") $ str "Report period" ,renderKey ("S-DOWN /S-UP ", "shrink/grow period") @@ -110,12 +111,12 @@ helpDialog _copts = ,str " " ,withAttr ("help" <> "heading") $ str "Accounts screen" ,renderKey ("1234567890-+ ", "set/adjust depth limit") - ,renderKey ("t/l", "set tree/list mode") - ,renderKey ("H ", "toggle historical balance/change") + ,renderKey ("t ", "toggle accounts tree/list mode") + ,renderKey ("H ", "toggle historical balance/change") ,str " " ,withAttr ("help" <> "heading") $ str "Register screen" - ,renderKey ("t/l", "show/hide subaccount txns\n(and set accounts tree/list mode)") - ,renderKey ("H ", "toggle historical/period total") + ,renderKey ("t ", "toggle subaccount txns\n(and accounts tree/list mode)") + ,renderKey ("H ", "toggle historical/period total") ,str " " ] ,padLeft (Pad 1) $ padRight (Pad 0) $ @@ -341,16 +342,10 @@ scrollSelectionToMiddle list = do _ -> return () -- arrow keys vi keys emacs keys --- moveUpEvents = [EvKey KUp [] , EvKey (KChar 'k') [], EvKey (KChar 'p') [MCtrl]] --- moveDownEvents = [EvKey KDown [] , EvKey (KChar 'j') [], EvKey (KChar 'n') [MCtrl]] --- moveLeftEvents = [EvKey KLeft [] , EvKey (KChar 'h') [], EvKey (KChar 'b') [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]] +moveUpEvents = [EvKey KUp [] , EvKey (KChar 'k') [], EvKey (KChar 'p') [MCtrl]] +moveDownEvents = [EvKey KDown [] , EvKey (KChar 'j') [], EvKey (KChar 'n') [MCtrl]] +moveLeftEvents = [EvKey KLeft [] , EvKey (KChar 'h') [], EvKey (KChar 'b') [MCtrl]] +moveRightEvents = [EvKey KRight [], EvKey (KChar 'l') [], EvKey (KChar 'f') [MCtrl]] normaliseMovementKeys ev | ev `elem` moveUpEvents = EvKey KUp [] diff --git a/hledger-ui/hledger-ui.m4.md b/hledger-ui/hledger-ui.m4.md index 81e5f8b76..b67fa921e 100644 --- a/hledger-ui/hledger-ui.m4.md +++ b/hledger-ui/hledger-ui.m4.md @@ -192,8 +192,8 @@ 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. -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). +Account names are shown as a flat list by default; press `t` to toggle tree mode. +In list mode, account balances are exclusive of subaccounts, except where subaccounts are hidden by a depth limit (see below). In tree mode, all account balances are inclusive of subaccounts. To see less detail, press a number key, `1` to `9`, to set a depth limit. @@ -246,9 +246,9 @@ running historical balance you would see on a bank register for the current acco 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. +or if it's in list 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. -Tree mode or flat mode can be selected with `t`or `l` here also. +Tree mode/list mode can be toggled with `t` here also. `U` toggles filtering by [unmarked status](journal.html#status), showing or hiding unmarked transactions. Similarly, `P` toggles pending transactions, and `C` toggles cleared transactions.