summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKierán Meinhardt <kieran.meinhardt@gmail.com>2020-09-23 08:37:56 +0200
committerKierán Meinhardt <kieran.meinhardt@gmail.com>2020-09-23 08:38:15 +0200
commit984ad66260097f22164d7a174d1292dc2022fc4c (patch)
treebe2c804306b24c390d6c1fff80311f78e243be6b
parent248bfcbf43aa755ac30a8d9d4a41eeec3934c010 (diff)
config: personalize kmein
-rw-r--r--config/kmein.hs68
1 files changed, 51 insertions, 17 deletions
diff --git a/config/kmein.hs b/config/kmein.hs
index f5d9849..37b5474 100644
--- a/config/kmein.hs
+++ b/config/kmein.hs
@@ -1,15 +1,17 @@
-{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Main (main) where
import Action
-import Blessings.String
import Core
+import State
+
+import Blessings.String
+import Control.Monad
import Data.Maybe
import Scanner
-import State
+import System.Posix.Signals
import Text.Hyphenation
import Text.LineBreak
import TreeView
@@ -17,33 +19,66 @@ import qualified Data.Tree as Tree
import qualified Data.Tree.Zipper as Z
import qualified Notmuch.Message as Notmuch
+{- notmuch's special tags are:
+
+ synchonised to maildir: draft flagged passed replied unread
+ automatic: attachment signed encrypted
+ cli default tags: unread inbox deleted spam
+
+ref: https://notmuchmail.org/special-tags/
+-}
+
main :: IO ()
main =
mainWithState emptyState
{ keymap = myKeymap
, mousemap = myMousemap
+ , colorConfig = (colorConfig emptyState)
+ { tagMap =
+ [ ("deleted", SGR [38,5,088])
+ , ("flagged", SGR [38,5,226])
+ , ("draft", SGR [38,5,63])
+ , ("spam", SGR [38,5,202])
+ ]
+ }
+ , tagSymbols =
+ [ ("flagged", "*")
+ , ("attachment", "📎")
+ ]
}
myKeymap :: String -> State -> IO State
-myKeymap "a" = toggleTagAtCursor "inbox"
-myKeymap "s" = toggleTagAtCursor "unread"
-myKeymap "&" = toggleTagAtCursor "killed"
-myKeymap "*" = toggleTagAtCursor "star"
+myKeymap "h" = closeFold
+myKeymap "l" = openFold
+myKeymap "\n" = toggleFold
+
+myKeymap "g" = moveCursorUp 150
+myKeymap "G" = moveCursorDown 150
myKeymap "k" = moveCursorUp 1
myKeymap "j" = moveCursorDown 1
+myKeymap "\ESC[A" = moveCursorDown 1
+myKeymap "\ESC[B" = moveCursorUp 1
+myKeymap "\ESC[C" = moveTreeLeft 10 -- left
+myKeymap "\ESC[D" = moveTreeRight 10 -- right
+
+myKeymap "q" = \q -> q <$ raiseSignal sigINT
+
+myKeymap "*" = toggleTagAtCursor "flagged"
+myKeymap "a" = toggleTagAtCursor "inbox" -- mnemonic: Archive
+myKeymap "s" = toggleTagAtCursor "unread" -- mnemonic: Seen
+myKeymap "d" = toggleTagAtCursor "deleted"
+myKeymap "!" = toggleTagAtCursor "spam"
+
+myKeymap "N" = moveCursorUpToPrevUnread
+myKeymap "n" = moveCursorDownToNextUnread
+
myKeymap "K" = moveTreeDown 1
myKeymap "J" = moveTreeUp 1
-myKeymap "\ESC[A" = moveCursorUp 1
-myKeymap "\ESC[B" = moveCursorDown 1
myKeymap "\ESC[a" = moveTreeDown 1
myKeymap "\ESC[b" = moveTreeUp 1
-myKeymap "\ESC[c" = moveTreeLeft 1 -- S-Right
-myKeymap "\ESC[d" = moveTreeRight 1 -- S-Left
myKeymap "\ESC[5~" = \q -> moveTreeDown (screenHeight q `div` 2) q -- PgUp
myKeymap "\ESC[6~" = \q -> moveTreeUp (screenHeight q `div` 2) q -- PgDn
-myKeymap "\n" = toggleFold
myKeymap "\ESC[Z" = moveCursorUpToPrevUnread -- S-Tab
-myKeymap "\t" = moveCursorDownToNextUnread
myKeymap "\DEL" = moveToParent -- backspace
myKeymap "=" = \q@State{..} ->
let cursor' = case Z.label cursor of
@@ -69,8 +104,7 @@ myKeymap "=" = \q@State{..} ->
insert a =
Z.prevSpace . Z.insert (Tree.Node a [])
- hy s =
- breakStringLn bf s
+ hy = breakStringLn bf
where
shy = '\173'
hyp = Just german_1996
@@ -85,7 +119,7 @@ myKeymap "\ESC[12~" = \q@State{..} ->
return q { flashMessage =
Plain $
show $
- maybe Nothing (Just . Notmuch.messageFilename) $
+ fmap Notmuch.messageFilename $
getMessage $
Z.label cursor
}
@@ -99,7 +133,7 @@ myKeymap s = displayKey s
myMousemap :: Scan -> State -> IO State
myMousemap ScanMouse{mouseButton=1,mouseY=y} = defaultMouse1Click y
-myMousemap ScanMouse{mouseButton=3,mouseY=y} = \q -> defaultMouse1Click y q >>= toggleFold
+myMousemap ScanMouse{mouseButton=3,mouseY=y} = defaultMouse1Click y >=> toggleFold
myMousemap ScanMouse{mouseButton=4} = moveTreeDown 3
myMousemap ScanMouse{mouseButton=5} = moveTreeUp 3
myMousemap ScanMouse{mouseButton=0} = return