Safe Haskell | None |
---|---|
Language | Haskell2010 |
Storage.Notmuch
Description
module for integrating notmuch within purebred
- messageTagModify :: (Traversable t, MonadError Error m, MonadIO m) => FilePath -> [TagOp] -> t (a, NotmuchMail) -> m (t (a, NotmuchMail))
- applyTags :: (MonadError Error m, MonadIO m) => [TagOp] -> Database RW -> (a, NotmuchMail) -> m (a, NotmuchMail)
- tagItem :: ManageTags a => [TagOp] -> a -> a
- haveTagsChanged :: (a, NotmuchMail) -> (a, NotmuchMail) -> Bool
- applyTagOp :: ManageTags a => TagOp -> a -> a
- class ManageTags a where
- setTags :: ManageTags a => [Tag] -> a -> a
- addTags :: ManageTags a => [Tag] -> a -> a
- removeTags :: ManageTags a => [Tag] -> a -> a
- getTags :: ManageTags a => a -> [Tag]
- hasTag :: ManageTags a => Tag -> a -> Bool
- withDatabase :: (AsNotmuchError e, Mode a, MonadError e m, MonadIO m) => FilePath -> (Database a -> ExceptT e IO c) -> m c
- withDatabaseReadOnly :: (AsNotmuchError e, MonadError e m, MonadIO m) => FilePath -> (Database RO -> ExceptT e IO c) -> m c
- getMessages :: (MonadError Error m, MonadIO m) => Text -> NotmuchSettings FilePath -> m (Vector NotmuchMail)
- mailFilepath :: (MonadError Error m, MonadIO m) => NotmuchMail -> FilePath -> m FilePath
- tagsToMessage :: (MonadError Error m, MonadIO m) => [Tag] -> ByteString -> Database RW -> m ()
- getMessage :: (MonadError Error m, MonadIO m) => Database mode -> ByteString -> m (Message 0 mode)
- messageToMail :: Message n a -> IO NotmuchMail
- getDatabasePath :: IO FilePath
- getFromNotmuchConfig :: String -> IO String
- getThreads :: (MonadError Error m, MonadIO m) => Text -> NotmuchSettings FilePath -> m (Vector NotmuchThread)
- getThreadMessages :: (MonadError Error m, MonadIO m) => FilePath -> NotmuchThread -> m (Vector NotmuchMail)
- getThread :: (MonadError Error m, MonadIO m) => Database mode -> ByteString -> m (Thread mode)
- threadToThread :: Thread a -> IO NotmuchThread
- reloadThreadTags :: (MonadError Error m, MonadIO m) => FilePath -> NotmuchThread -> m NotmuchThread
- fixupWhitespace :: Text -> Text
Documentation
Arguments
:: (Traversable t, MonadError Error m, MonadIO m) | |
=> FilePath | database |
-> [TagOp] | |
-> t (a, NotmuchMail) | |
-> m (t (a, NotmuchMail)) |
apply tag operations on all given mails and write the resulting tags to the database
applyTags :: (MonadError Error m, MonadIO m) => [TagOp] -> Database RW -> (a, NotmuchMail) -> m (a, NotmuchMail) Source #
tagItem :: ManageTags a => [TagOp] -> a -> a Source #
haveTagsChanged :: (a, NotmuchMail) -> (a, NotmuchMail) -> Bool Source #
applyTagOp :: ManageTags a => TagOp -> a -> a Source #
setTags :: ManageTags a => [Tag] -> a -> a Source #
addTags :: ManageTags a => [Tag] -> a -> a Source #
removeTags :: ManageTags a => [Tag] -> a -> a Source #
getTags :: ManageTags a => a -> [Tag] Source #
withDatabase :: (AsNotmuchError e, Mode a, MonadError e m, MonadIO m) => FilePath -> (Database a -> ExceptT e IO c) -> m c Source #
A helper function for opening, performing work, and closing the database
withDatabaseReadOnly :: (AsNotmuchError e, MonadError e m, MonadIO m) => FilePath -> (Database RO -> ExceptT e IO c) -> m c Source #
Same as withDatabase
, but the database connection
is read-only
getMessages :: (MonadError Error m, MonadIO m) => Text -> NotmuchSettings FilePath -> m (Vector NotmuchMail) Source #
creates a vector of parsed mails from a not much search Note, that at this point in time only free form searches are supported. Also, we filter out the tag which we use to mark mails as new mails
mailFilepath :: (MonadError Error m, MonadIO m) => NotmuchMail -> FilePath -> m FilePath Source #
tagsToMessage :: (MonadError Error m, MonadIO m) => [Tag] -> ByteString -> Database RW -> m () Source #
getMessage :: (MonadError Error m, MonadIO m) => Database mode -> ByteString -> m (Message 0 mode) Source #
Get message by message ID, throwing MessageNotFound if not found
messageToMail :: Message n a -> IO NotmuchMail Source #
getThreads :: (MonadError Error m, MonadIO m) => Text -> NotmuchSettings FilePath -> m (Vector NotmuchThread) Source #
creates a vector of threads from a notmuch search
getThreadMessages :: (MonadError Error m, MonadIO m) => FilePath -> NotmuchThread -> m (Vector NotmuchMail) Source #
returns a vector of *all* messages belonging to the given thread
getThread :: (MonadError Error m, MonadIO m) => Database mode -> ByteString -> m (Thread mode) Source #
retrieve a given thread from the notmuch database by it's id Note: The notmuch API does not provide a designated endpoint for retrieving the thread by it's ID. We're cheating here by simply querying for the given thread id.
threadToThread :: Thread a -> IO NotmuchThread Source #
reloadThreadTags :: (MonadError Error m, MonadIO m) => FilePath -> NotmuchThread -> m NotmuchThread Source #
fixupWhitespace :: Text -> Text Source #