diff options
Diffstat (limited to 'src/Much')
| -rw-r--r-- | src/Much/API.hs | 6 | ||||
| -rw-r--r-- | src/Much/Action.hs | 13 | ||||
| -rw-r--r-- | src/Much/Config.hs | 8 | ||||
| -rw-r--r-- | src/Much/Core.hs | 16 | ||||
| -rw-r--r-- | src/Much/MBox.hs | 44 | ||||
| -rw-r--r-- | src/Much/MappedSets.hs | 12 | ||||
| -rw-r--r-- | src/Much/ParseMail.hs | 28 | ||||
| -rw-r--r-- | src/Much/RenderTreeView.hs | 19 | ||||
| -rw-r--r-- | src/Much/Screen.hs | 1 | ||||
| -rw-r--r-- | src/Much/State.hs | 18 | ||||
| -rw-r--r-- | src/Much/TagUtils.hs | 8 | ||||
| -rw-r--r-- | src/Much/TreeView.hs | 9 | ||||
| -rw-r--r-- | src/Much/TreeView/Types.hs | 6 |
13 files changed, 88 insertions, 100 deletions
diff --git a/src/Much/API.hs b/src/Much/API.hs index a9999ef..5ddf2c6 100644 --- a/src/Much/API.hs +++ b/src/Much/API.hs @@ -1,8 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeOperators #-} module Much.API (module Much.API) where @@ -11,6 +7,7 @@ import Control.Exception (catch, finally, throwIO) import Control.Monad.IO.Class import Data.Function ((&)) import Data.Proxy (Proxy) +import Data.Tree.Zipper qualified as Z import Much.API.Config as Much.API import Much.Event import Much.State @@ -23,7 +20,6 @@ import Notmuch.Message import Servant import System.IO.Error (isDoesNotExistError) import System.Posix.Files (removeLink) -import qualified Data.Tree.Zipper as Z type API = diff --git a/src/Much/Action.hs b/src/Much/Action.hs index d76e503..e798357 100644 --- a/src/Much/Action.hs +++ b/src/Much/Action.hs @@ -1,21 +1,22 @@ -{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} + module Much.Action where import Blessings.String.WCWidth import Data.Maybe import Data.Tree.Extra (setSubForest) -import Scanner +import Data.Tree.Zipper qualified as Z import Much.State import Much.TagUtils import Much.TreeSearch import Much.TreeView import Much.TreeZipperUtils -import qualified Data.Tree.Zipper as Z -import qualified Notmuch -import qualified Notmuch.Message as Notmuch -import qualified Notmuch.SearchResult as Notmuch +import Notmuch qualified +import Notmuch.Message qualified as Notmuch +import Notmuch.SearchResult qualified as Notmuch +import Scanner + displayKey :: String -> State -> IO State displayKey s q = return q { flashMessage = Plain $ show s } diff --git a/src/Much/Config.hs b/src/Much/Config.hs index 36f06bf..1aa8f44 100644 --- a/src/Much/Config.hs +++ b/src/Much/Config.hs @@ -1,11 +1,11 @@ -{-# LANGUAGE DeriveGeneric #-} module Much.Config where -import GHC.Generics (Generic) import Data.Aeson (FromJSON) +import Data.Map qualified as M +import Data.Text qualified as T +import GHC.Generics (Generic) import Much.State (ColorConfig) -import qualified Data.Text as T -import qualified Data.Map as M + data Config = Config { colorConfig :: Maybe (ColorConfig Maybe) diff --git a/src/Much/Core.hs b/src/Much/Core.hs index 1c8daa7..996d31b 100644 --- a/src/Much/Core.hs +++ b/src/Much/Core.hs @@ -1,19 +1,22 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} + module Much.Core where +import Blessings.Internal qualified as Blessings import Blessings.String.WCWidth (Blessings(Plain,SGR),pp) import Control.Concurrent import Control.Monad import Data.Aeson import Data.Functor import Data.Functor.Identity +import Data.Map qualified as M import Data.Maybe import Data.Time +import Data.Tree.Zipper qualified as Z import Much.API import Much.Action +import Much.Config qualified as Config import Much.Event import Much.RenderTreeView (renderTreeView) import Much.Screen @@ -21,18 +24,15 @@ import Much.State import Much.TreeSearch import Much.TreeView import Much.Utils +import Notmuch qualified import Options.Applicative import Scanner (scan,Scan(..)) +import System.Console.Terminal.Size qualified as Term import System.Environment import System.Exit import System.IO import System.Posix.Signals -import qualified Blessings.Internal as Blessings -import qualified Data.Map as M -import qualified Data.Tree.Zipper as Z -import qualified Much.Config as Config -import qualified Notmuch -import qualified System.Console.Terminal.Size as Term + importConfig :: Config.Config -> State -> State importConfig config state = state diff --git a/src/Much/MBox.hs b/src/Much/MBox.hs index 9299eea..5c7c0a6 100644 --- a/src/Much/MBox.hs +++ b/src/Much/MBox.hs @@ -1,5 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} + module Much.MBox ( -- TODO don't re-export MBox but use our own Message type @@ -8,28 +9,27 @@ module Much.MBox , toForest ) where -import qualified Data.MBox as Export - -import Control.Applicative -import qualified Data.CaseInsensitive as CI -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe -import Data.MBox -import Data.Ord -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Text.Lazy (Text) -import Data.Time -import Data.Tree (Tree, Forest) -import qualified Data.Tree as Tree -import qualified MappedSets -import qualified Data.Text.Lazy as Text -import Safe -import System.Locale -import qualified Text.ParserCombinators.Parsec.Rfc2822 as P -import qualified Text.ParserCombinators.Parsec as P +import Control.Applicative +import Data.CaseInsensitive qualified as CI +import Data.List qualified as List +import Data.MBox +import Data.MBox qualified as Export +import Data.Map.Strict (Map) +import Data.Map.Strict qualified as Map +import Data.Maybe +import Data.Ord +import Data.Set (Set) +import Data.Set qualified as Set +import Data.Text.Lazy (Text) +import Data.Text.Lazy qualified as Text +import Data.Time +import Data.Tree (Tree, Forest) +import Data.Tree qualified as Tree +import MappedSets qualified +import Safe +import System.Locale +import Text.ParserCombinators.Parsec qualified as P +import Text.ParserCombinators.Parsec.Rfc2822 qualified as P type Ident = Text diff --git a/src/Much/MappedSets.hs b/src/Much/MappedSets.hs index ec0ae73..7db2279 100644 --- a/src/Much/MappedSets.hs +++ b/src/Much/MappedSets.hs @@ -1,11 +1,11 @@ module Much.MappedSets (invert, mk) where -import Control.Arrow -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe -import Data.Set (Set) -import qualified Data.Set as Set +import Control.Arrow +import Data.Map.Strict (Map) +import Data.Map.Strict qualified as Map +import Data.Maybe +import Data.Set (Set) +import Data.Set qualified as Set mk :: (Ord a, Ord b) => [(a, [b])] -> Map a (Set b) diff --git a/src/Much/ParseMail.hs b/src/Much/ParseMail.hs index d9bb733..6644db6 100644 --- a/src/Much/ParseMail.hs +++ b/src/Much/ParseMail.hs @@ -1,26 +1,24 @@ -{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} module Much.ParseMail (readMail) where -import qualified Data.Attoparsec.ByteString.Char8 as A8 -import qualified Data.ByteString as BS -import qualified Data.ByteString.Char8 as BS8 -import qualified Data.ByteString.Lazy as LBS -import qualified Data.CaseInsensitive as CI -import qualified Data.Text as T -import qualified Data.Text.Encoding as T -import qualified Data.Text.Lazy as LT -import qualified Data.Text.Lazy.Encoding as LT -import qualified Network.Email.Header.Parser as P -import qualified Network.Email.Header.Types as H -import qualified Network.Mail.Mime as M import Codec.MIME.Parse -import qualified Codec.MIME.QuotedPrintable as QP +import Codec.MIME.QuotedPrintable qualified as QP import Codec.MIME.Type import Control.Applicative +import Data.Attoparsec.ByteString.Char8 qualified as A8 +import Data.ByteString qualified as BS +import Data.ByteString.Char8 qualified as BS8 +import Data.ByteString.Lazy qualified as LBS +import Data.CaseInsensitive qualified as CI import Data.Char - +import Data.Text qualified as T +import Data.Text.Encoding qualified as T +import Data.Text.Lazy qualified as LT +import Data.Text.Lazy.Encoding qualified as LT +import Network.Email.Header.Parser qualified as P +import Network.Email.Header.Types qualified as H +import Network.Mail.Mime qualified as M -- TODO eventually we want our completely own Address, i.e. w/o M.Address diff --git a/src/Much/RenderTreeView.hs b/src/Much/RenderTreeView.hs index ea81fe2..21af597 100644 --- a/src/Much/RenderTreeView.hs +++ b/src/Much/RenderTreeView.hs @@ -1,30 +1,29 @@ -{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} module Much.RenderTreeView (renderTreeView) where -import qualified Notmuch.Message as Notmuch -import qualified Notmuch.SearchResult as Notmuch -import qualified Data.CaseInsensitive as CI -import qualified Data.List as L -import qualified Data.Map as M -import qualified Data.Text as T -import qualified Data.Tree.Zipper as Z -import qualified Much.TreeZipperUtils as Z import Blessings import Blessings.String.Extra (quoteSpecials) import Control.Arrow +import Data.CaseInsensitive qualified as CI import Data.Char -import Data.Function import Data.Functor.Identity +import Data.List qualified as L +import Data.Map qualified as M import Data.Maybe +import Data.Text qualified as T import Data.Time import Data.Time.Format.Human import Data.Tree +import Data.Tree.Zipper qualified as Z import Much.State import Much.TagUtils (Tag) import Much.TreeView +import Much.TreeZipperUtils qualified as Z +import Notmuch.Message qualified as Notmuch +import Notmuch.SearchResult qualified as Notmuch + color :: (ColorConfig Identity -> Identity Pm) -> ColorConfig Identity -> Blessings String -> Blessings String color key config = SGR $ runIdentity $ key config diff --git a/src/Much/Screen.hs b/src/Much/Screen.hs index 47bb90c..9d75728 100644 --- a/src/Much/Screen.hs +++ b/src/Much/Screen.hs @@ -1,4 +1,5 @@ {-# LANGUAGE RecordWildCards #-} + module Much.Screen (Screen(..), setScreen, withScreen) where import Control.Exception diff --git a/src/Much/State.hs b/src/Much/State.hs index a1de01f..c42460e 100644 --- a/src/Much/State.hs +++ b/src/Much/State.hs @@ -1,24 +1,24 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} + module Much.State where import Blessings import Data.Aeson +import Data.CaseInsensitive qualified as CI import Data.Default import Data.Functor.Identity +import Data.Map qualified as M +import Data.Text qualified as T import Data.Time +import Data.Tree qualified as Tree +import Data.Tree.Zipper qualified as Z import GHC.Generics +import Much.API.Config qualified import Much.TreeView (TreeView(TVSearch)) +import Notmuch.Message qualified as Notmuch import Scanner import System.Posix.Signals -import qualified Data.CaseInsensitive as CI -import qualified Data.Map as M -import qualified Data.Text as T -import qualified Data.Tree as Tree -import qualified Data.Tree.Zipper as Z -import qualified Much.API.Config -import qualified Notmuch.Message as Notmuch + data State = State { cursor :: Z.TreePos Z.Full TreeView diff --git a/src/Much/TagUtils.hs b/src/Much/TagUtils.hs index d4e4d30..d6130e4 100644 --- a/src/Much/TagUtils.hs +++ b/src/Much/TagUtils.hs @@ -1,15 +1,13 @@ -{-# LANGUAGE LambdaCase #-} - module Much.TagUtils where -import qualified Data.Set as Set -import qualified Data.Text as T import Data.Char import Data.List.Split (wordsBy) +import Data.Set qualified as Set +import Data.Text qualified as T import Data.Tree +import Much.TreeView.Types import Notmuch.Message import Notmuch.SearchResult -import Much.TreeView.Types type Tag = T.Text diff --git a/src/Much/TreeView.hs b/src/Much/TreeView.hs index 9b309bc..3e94c8a 100644 --- a/src/Much/TreeView.hs +++ b/src/Much/TreeView.hs @@ -1,8 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE LambdaCase #-} {-# LANGUAGE RecordWildCards #-} - module Much.TreeView ( module Export , getMessage @@ -17,14 +15,13 @@ module Much.TreeView , hasUnloadedSubForest ) where - -import qualified Data.ByteString.Lazy.Char8 as LBS8 -import qualified Data.Text as T +import Data.ByteString.Lazy.Char8 qualified as LBS8 +import Data.Text qualified as T import Data.Tree +import Much.TreeView.Types as Export import Notmuch import Notmuch.Message import Notmuch.SearchResult -import Much.TreeView.Types as Export import System.Exit (ExitCode(ExitSuccess)) import System.Process.ByteString.Lazy (readProcessWithExitCode) diff --git a/src/Much/TreeView/Types.hs b/src/Much/TreeView/Types.hs index f30b0bc..28ed302 100644 --- a/src/Much/TreeView/Types.hs +++ b/src/Much/TreeView/Types.hs @@ -1,9 +1,7 @@ -{-# LANGUAGE LambdaCase #-} - module Much.TreeView.Types where -import qualified Data.CaseInsensitive as CI -import qualified Data.Text as T +import Data.CaseInsensitive qualified as CI +import Data.Text qualified as T import Notmuch.Message import Notmuch.SearchResult |
