aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2022-10-31 16:51:51 -0700
committerJohn MacFarlane <[email protected]>2022-10-31 16:51:51 -0700
commitdf360197687ff3be734e59688e5468ebe1363563 (patch)
treef49365ee4207314bd05b092cc51feb9c854c550b
parent3e48d9701d955dc1df27f9cfd2eb5111b2cd9c1f (diff)
First stab at mtl 2.3 compliance.
This will no doubt produce a bunch of warnings and hence CI failures, which we'll need to work around with explicit imports.
-rw-r--r--.github/workflows/ci.yml5
-rw-r--r--pandoc.cabal6
-rw-r--r--src/Text/Pandoc/App/Opt.hs4
-rw-r--r--src/Text/Pandoc/Citeproc/BibTeX.hs3
-rw-r--r--src/Text/Pandoc/Citeproc/Name.hs3
-rw-r--r--src/Text/Pandoc/Class/PandocMonad.hs5
-rw-r--r--src/Text/Pandoc/Class/PandocPure.hs1
-rw-r--r--src/Text/Pandoc/Parsing/General.hs3
-rw-r--r--src/Text/Pandoc/Readers/CommonMark.hs1
-rw-r--r--src/Text/Pandoc/Readers/Creole.hs3
-rw-r--r--src/Text/Pandoc/Readers/DocBook.hs6
-rw-r--r--src/Text/Pandoc/Readers/Docx.hs1
-rw-r--r--src/Text/Pandoc/Readers/Docx/Parse.hs1
-rw-r--r--src/Text/Pandoc/Readers/JATS.hs3
-rw-r--r--src/Text/Pandoc/Writers/AnnotatedTable.hs1
-rw-r--r--src/Text/Pandoc/Writers/AsciiDoc.hs1
-rw-r--r--src/Text/Pandoc/Writers/ConTeXt.hs2
-rw-r--r--src/Text/Pandoc/Writers/Docx.hs1
-rw-r--r--src/Text/Pandoc/Writers/Docx/Table.hs3
-rw-r--r--src/Text/Pandoc/Writers/FB2.hs4
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs3
-rw-r--r--src/Text/Pandoc/Writers/Haddock.hs1
-rw-r--r--src/Text/Pandoc/Writers/ICML.hs1
-rw-r--r--src/Text/Pandoc/Writers/Ipynb.hs1
-rw-r--r--src/Text/Pandoc/Writers/JATS.hs1
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs9
-rw-r--r--src/Text/Pandoc/Writers/LaTeX/Table.hs1
-rw-r--r--src/Text/Pandoc/Writers/Man.hs4
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs1
-rw-r--r--src/Text/Pandoc/Writers/Markdown/Inline.hs1
-rw-r--r--src/Text/Pandoc/Writers/Ms.hs2
-rw-r--r--src/Text/Pandoc/Writers/Muse.hs1
-rw-r--r--src/Text/Pandoc/Writers/ODT.hs1
-rw-r--r--src/Text/Pandoc/Writers/OOXML.hs2
-rw-r--r--src/Text/Pandoc/Writers/OpenDocument.hs3
-rw-r--r--src/Text/Pandoc/Writers/Org.hs1
-rw-r--r--src/Text/Pandoc/Writers/Powerpoint/Output.hs1
-rw-r--r--src/Text/Pandoc/Writers/Powerpoint/Presentation.hs2
-rw-r--r--src/Text/Pandoc/Writers/RST.hs3
-rw-r--r--src/Text/Pandoc/Writers/Texinfo.hs1
-rw-r--r--src/Text/Pandoc/Writers/Textile.hs3
41 files changed, 78 insertions, 22 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6a6310193..31a33f7e5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -70,6 +70,11 @@ jobs:
cabal: '3.8'
cabalopts: ''
testopts: '--test-option=--hide-successes --test-option=--ansi-tricks=false'
+
+ - ghc: '9.4.2'
+ cabal: '3.8'
+ cabalopts: '--allow-newer --constrain "mtl >= 2.3.1"'
+ testopts: '--test-option=--hide-successes --test-option=--ansi-tricks=false'
steps:
- uses: actions/checkout@v3
diff --git a/pandoc.cabal b/pandoc.cabal
index b7cd7c0c3..8b56a77c3 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -496,7 +496,7 @@ library
ipynb >= 0.2 && < 0.3,
jira-wiki-markup >= 1.4 && < 1.5,
mime-types >= 0.1.1 && < 0.2,
- mtl >= 2.2 && < 2.3,
+ mtl >= 2.2 && < 2.4,
network >= 2.6,
network-uri >= 2.6 && < 2.8,
pandoc-types >= 1.22.2 && < 1.23,
@@ -750,7 +750,7 @@ test-suite test-pandoc
directory >= 1.2.3 && < 1.4,
doctemplates >= 0.10 && < 0.11,
filepath >= 1.1 && < 1.5,
- mtl >= 2.2 && < 2.3,
+ mtl >= 2.2 && < 2.4,
pandoc-types >= 1.22.2 && < 1.23,
process >= 1.2.3 && < 1.7,
tasty >= 0.11 && < 1.5,
@@ -824,7 +824,7 @@ benchmark benchmark-pandoc
hs-source-dirs: benchmark
build-depends: bytestring,
tasty-bench >= 0.2 && <= 0.4,
- mtl >= 2.2 && < 2.3,
+ mtl >= 2.2 && < 2.4,
text >= 1.1.1.0 && < 2.1,
deepseq
-- we increase heap size to avoid benchmarking garbage collection:
diff --git a/src/Text/Pandoc/App/Opt.hs b/src/Text/Pandoc/App/Opt.hs
index 2c0cef5cd..ed95498e8 100644
--- a/src/Text/Pandoc/App/Opt.hs
+++ b/src/Text/Pandoc/App/Opt.hs
@@ -25,7 +25,9 @@ module Text.Pandoc.App.Opt (
, applyDefaults
, fullDefaultsPath
) where
-import Control.Monad.Except (MonadIO, liftIO, throwError, (>=>), foldM)
+import Control.Monad.Except (throwError)
+import Control.Monad.Trans (MonadIO, liftIO)
+import Control.Monad ((>=>), foldM)
import Control.Monad.State.Strict (StateT, modify, gets)
import System.FilePath ( addExtension, (</>), takeExtension, takeDirectory )
import System.Directory ( canonicalizePath )
diff --git a/src/Text/Pandoc/Citeproc/BibTeX.hs b/src/Text/Pandoc/Citeproc/BibTeX.hs
index e1ad44cc7..3c787595d 100644
--- a/src/Text/Pandoc/Citeproc/BibTeX.hs
+++ b/src/Text/Pandoc/Citeproc/BibTeX.hs
@@ -46,7 +46,8 @@ import qualified Data.Map as Map
import Data.Maybe
import Text.Pandoc.Parsing hiding ((<|>), many)
import Control.Applicative
-import Control.Monad.RWS hiding ((<>))
+import Control.Monad ( guard, MonadPlus(..), void )
+import Control.Monad.RWS ( asks, RWST, gets, modify, evalRWST )
import qualified Data.Sequence as Seq
import Data.Char (isAlphaNum, isDigit, isLetter,
isUpper, toLower, toUpper,
diff --git a/src/Text/Pandoc/Citeproc/Name.hs b/src/Text/Pandoc/Citeproc/Name.hs
index 2f9e4558d..d62a9e4a1 100644
--- a/src/Text/Pandoc/Citeproc/Name.hs
+++ b/src/Text/Pandoc/Citeproc/Name.hs
@@ -29,7 +29,6 @@ import Citeproc.Pandoc ()
import Text.Pandoc.Citeproc.Util (splitStrWhen)
import qualified Data.Text as T
import Data.List.Split (splitWhen, wordsBy)
-import Control.Monad.RWS hiding ((<>))
import Data.Char (isUpper, isDigit)
import Data.List (foldl')
@@ -59,7 +58,7 @@ data NameOpts =
-- | Parse a list of 'Inline's into a citeproc 'Name', identifying
-- first and last name, particles, suffixes.
-toName :: MonadPlus m => NameOpts -> [Inline] -> m Name
+toName :: Monad m => NameOpts -> [Inline] -> m Name
toName _ [Str "others"] =
return emptyName{ nameLiteral = Just "others" }
toName _ [Span ("",[],[]) ils] = -- corporate author
diff --git a/src/Text/Pandoc/Class/PandocMonad.hs b/src/Text/Pandoc/Class/PandocMonad.hs
index 57a65abc8..534ce74a9 100644
--- a/src/Text/Pandoc/Class/PandocMonad.hs
+++ b/src/Text/Pandoc/Class/PandocMonad.hs
@@ -54,8 +54,9 @@ module Text.Pandoc.Class.PandocMonad
, checkUserDataDir
) where
-import Control.Monad.Except (MonadError (catchError, throwError),
- MonadTrans, lift, when)
+import Control.Monad.Except (MonadError (catchError, throwError))
+import Control.Monad.Trans (MonadTrans, lift)
+import Control.Monad (when)
import Data.Time (UTCTime)
import Data.Time.Clock.POSIX (POSIXTime, utcTimeToPOSIXSeconds,
posixSecondsToUTCTime)
diff --git a/src/Text/Pandoc/Class/PandocPure.hs b/src/Text/Pandoc/Class/PandocPure.hs
index 290a6d97c..515052b0b 100644
--- a/src/Text/Pandoc/Class/PandocPure.hs
+++ b/src/Text/Pandoc/Class/PandocPure.hs
@@ -31,6 +31,7 @@ module Text.Pandoc.Class.PandocPure
import Codec.Archive.Zip
import Control.Monad.Except
import Control.Monad.State.Strict
+import Control.Monad (foldM)
import Data.Default
import Data.Text (Text)
import Data.Time (UTCTime)
diff --git a/src/Text/Pandoc/Parsing/General.hs b/src/Text/Pandoc/Parsing/General.hs
index de099c33b..9decaef7d 100644
--- a/src/Text/Pandoc/Parsing/General.hs
+++ b/src/Text/Pandoc/Parsing/General.hs
@@ -67,9 +67,10 @@ import Control.Monad
, unless
, void
, when
+ , MonadPlus(mzero)
)
import Control.Monad.Except ( MonadError(throwError) )
-import Control.Monad.Identity ( Identity(..), MonadPlus(mzero) )
+import Control.Monad.Identity ( Identity(..) )
import Data.Char
( chr
, isAlphaNum
diff --git a/src/Text/Pandoc/Readers/CommonMark.hs b/src/Text/Pandoc/Readers/CommonMark.hs
index 71cf6f37e..0739dcf8e 100644
--- a/src/Text/Pandoc/Readers/CommonMark.hs
+++ b/src/Text/Pandoc/Readers/CommonMark.hs
@@ -26,6 +26,7 @@ import Text.Pandoc.Definition
import Text.Pandoc.Builder as B
import Text.Pandoc.Options
import Text.Pandoc.Readers.Metadata (yamlMetaBlock)
+import Control.Monad (MonadPlus(mzero))
import Control.Monad.Except
import Data.Functor.Identity (runIdentity)
import Data.Typeable
diff --git a/src/Text/Pandoc/Readers/Creole.hs b/src/Text/Pandoc/Readers/Creole.hs
index 316e416d3..63a5b52d0 100644
--- a/src/Text/Pandoc/Readers/Creole.hs
+++ b/src/Text/Pandoc/Readers/Creole.hs
@@ -13,7 +13,8 @@ Conversion of creole text to 'Pandoc' document.
module Text.Pandoc.Readers.Creole ( readCreole
) where
-import Control.Monad.Except (guard, liftM2, throwError)
+import Control.Monad
+import Control.Monad.Except (throwError)
import qualified Data.Foldable as F
import Data.Maybe (fromMaybe)
import Data.Text (Text)
diff --git a/src/Text/Pandoc/Readers/DocBook.hs b/src/Text/Pandoc/Readers/DocBook.hs
index 6804a1c86..2e594bf73 100644
--- a/src/Text/Pandoc/Readers/DocBook.hs
+++ b/src/Text/Pandoc/Readers/DocBook.hs
@@ -13,7 +13,13 @@
Conversion of DocBook XML to 'Pandoc' document.
-}
module Text.Pandoc.Readers.DocBook ( readDocBook ) where
+import Control.Monad (MonadPlus(mplus))
import Control.Monad.State.Strict
+ ( MonadTrans(lift),
+ StateT(runStateT),
+ MonadState(get),
+ gets,
+ modify )
import Data.ByteString (ByteString)
import Data.FileEmbed
import Data.Char (isSpace, isLetter, chr)
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index fa563f81e..d81ad8039 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -59,6 +59,7 @@ module Text.Pandoc.Readers.Docx
) where
import Codec.Archive.Zip
+import Control.Monad ( liftM, unless )
import Control.Monad.Reader
import Control.Monad.State.Strict
import Data.Bifunctor (bimap, first)
diff --git a/src/Text/Pandoc/Readers/Docx/Parse.hs b/src/Text/Pandoc/Readers/Docx/Parse.hs
index 2cd57d6fa..ad67d6170 100644
--- a/src/Text/Pandoc/Readers/Docx/Parse.hs
+++ b/src/Text/Pandoc/Readers/Docx/Parse.hs
@@ -60,6 +60,7 @@ module Text.Pandoc.Readers.Docx.Parse ( Docx(..)
import Text.Pandoc.Readers.Docx.Parse.Styles
import Codec.Archive.Zip
import Control.Applicative ((<|>))
+import Control.Monad
import Control.Monad.Except
import Control.Monad.Reader
import Control.Monad.State.Strict
diff --git a/src/Text/Pandoc/Readers/JATS.hs b/src/Text/Pandoc/Readers/JATS.hs
index 04b725c6a..643c92242 100644
--- a/src/Text/Pandoc/Readers/JATS.hs
+++ b/src/Text/Pandoc/Readers/JATS.hs
@@ -14,7 +14,8 @@ Conversion of JATS XML to 'Pandoc' document.
-}
module Text.Pandoc.Readers.JATS ( readJATS ) where
-import Control.Monad.State.Strict
+import Control.Monad.State.Strict ( StateT(runStateT), gets, modify )
+import Control.Monad (forM_, when, unless, MonadPlus(mplus))
import Control.Monad.Except (throwError)
import Text.Pandoc.Error (PandocError(..))
import Data.Char (isDigit, isSpace)
diff --git a/src/Text/Pandoc/Writers/AnnotatedTable.hs b/src/Text/Pandoc/Writers/AnnotatedTable.hs
index 3f69496a9..d67ac9230 100644
--- a/src/Text/Pandoc/Writers/AnnotatedTable.hs
+++ b/src/Text/Pandoc/Writers/AnnotatedTable.hs
@@ -42,7 +42,6 @@ module Text.Pandoc.Writers.AnnotatedTable
where
import Control.Monad.RWS.Strict
- hiding ( (<>) )
import Data.Generics ( Data
, Typeable
)
diff --git a/src/Text/Pandoc/Writers/AsciiDoc.hs b/src/Text/Pandoc/Writers/AsciiDoc.hs
index 50a7a278f..a9e20980f 100644
--- a/src/Text/Pandoc/Writers/AsciiDoc.hs
+++ b/src/Text/Pandoc/Writers/AsciiDoc.hs
@@ -19,6 +19,7 @@ that it has omitted the construct.
AsciiDoc: <http://www.methods.co.nz/asciidoc/>
-}
module Text.Pandoc.Writers.AsciiDoc (writeAsciiDoc, writeAsciiDoctor) where
+import Control.Monad (foldM)
import Control.Monad.State.Strict
import Data.Char (isPunctuation, isSpace)
import Data.List (delete, intercalate, intersperse)
diff --git a/src/Text/Pandoc/Writers/ConTeXt.hs b/src/Text/Pandoc/Writers/ConTeXt.hs
index 1c61dd2d0..fc8ff12c9 100644
--- a/src/Text/Pandoc/Writers/ConTeXt.hs
+++ b/src/Text/Pandoc/Writers/ConTeXt.hs
@@ -14,7 +14,9 @@
Conversion of 'Pandoc' format into ConTeXt.
-}
module Text.Pandoc.Writers.ConTeXt ( writeConTeXt ) where
+import Control.Monad (liftM)
import Control.Monad.State.Strict
+ ( StateT, MonadState(put, get), gets, modify, evalStateT )
import Data.Char (ord, isDigit)
import Data.List (intersperse)
import Data.List.NonEmpty (NonEmpty ((:|)))
diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs
index 955f85f85..ffd413de5 100644
--- a/src/Text/Pandoc/Writers/Docx.hs
+++ b/src/Text/Pandoc/Writers/Docx.hs
@@ -19,6 +19,7 @@ Conversion of 'Pandoc' documents to docx.
module Text.Pandoc.Writers.Docx ( writeDocx ) where
import Codec.Archive.Zip
import Control.Applicative ((<|>))
+import Control.Monad (MonadPlus(mplus), unless, when)
import Control.Monad.Except (catchError, throwError)
import Control.Monad.Reader
import Control.Monad.State.Strict
diff --git a/src/Text/Pandoc/Writers/Docx/Table.hs b/src/Text/Pandoc/Writers/Docx/Table.hs
index 0c154d443..f5907edf1 100644
--- a/src/Text/Pandoc/Writers/Docx/Table.hs
+++ b/src/Text/Pandoc/Writers/Docx/Table.hs
@@ -13,7 +13,8 @@ module Text.Pandoc.Writers.Docx.Table
( tableToOpenXML
) where
-import Control.Monad.State.Strict ( modify, gets, unless )
+import Control.Monad.State.Strict ( modify, gets )
+import Control.Monad ( unless )
import Data.Array ( elems, (!), assocs, indices )
import Data.Text (Text)
import Text.Pandoc.Definition
diff --git a/src/Text/Pandoc/Writers/FB2.hs b/src/Text/Pandoc/Writers/FB2.hs
index f6237d072..8d969d171 100644
--- a/src/Text/Pandoc/Writers/FB2.hs
+++ b/src/Text/Pandoc/Writers/FB2.hs
@@ -18,9 +18,9 @@ FictionBook is an XML-based e-book format. For more information see:
-}
module Text.Pandoc.Writers.FB2 (writeFB2) where
-import Control.Monad (zipWithM)
+import Control.Monad (zipWithM, liftM)
import Control.Monad.Except (catchError, throwError)
-import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, liftM, modify)
+import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, modify)
import Data.ByteString.Base64 (encodeBase64)
import Data.Char (isAscii, isControl, isSpace)
import Data.Either (lefts, rights)
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index aafc52248..3356e39fa 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -30,6 +30,9 @@ module Text.Pandoc.Writers.HTML (
tagWithAttributes
) where
import Control.Monad.State.Strict
+ ( StateT, MonadState(get), gets, modify, evalStateT )
+import Control.Monad ( liftM, when, foldM, unless )
+import Control.Monad.Trans ( MonadTrans(lift) )
import Data.Char (ord)
import Data.List (intercalate, intersperse, partition, delete, (\\), foldl')
import Data.List.NonEmpty (NonEmpty((:|)))
diff --git a/src/Text/Pandoc/Writers/Haddock.hs b/src/Text/Pandoc/Writers/Haddock.hs
index 16376d528..8ce0150dd 100644
--- a/src/Text/Pandoc/Writers/Haddock.hs
+++ b/src/Text/Pandoc/Writers/Haddock.hs
@@ -14,6 +14,7 @@ Conversion of 'Pandoc' documents to haddock markup.
Haddock: <http://www.haskell.org/haddock/doc/html/>
-}
module Text.Pandoc.Writers.Haddock (writeHaddock) where
+import Control.Monad (zipWithM)
import Control.Monad.State.Strict
import Data.Char (isAlphaNum)
import Data.Default
diff --git a/src/Text/Pandoc/Writers/ICML.hs b/src/Text/Pandoc/Writers/ICML.hs
index 0d229a040..1b25a13fa 100644
--- a/src/Text/Pandoc/Writers/ICML.hs
+++ b/src/Text/Pandoc/Writers/ICML.hs
@@ -17,6 +17,7 @@ into InDesign with File -> Place.
-}
module Text.Pandoc.Writers.ICML (writeICML) where
import Control.Monad.Except (catchError)
+import Control.Monad (liftM2)
import Control.Monad.State.Strict
import Data.List (intersperse)
import Data.Maybe (fromMaybe, maybeToList)
diff --git a/src/Text/Pandoc/Writers/Ipynb.hs b/src/Text/Pandoc/Writers/Ipynb.hs
index 667c413e9..fb2baecb8 100644
--- a/src/Text/Pandoc/Writers/Ipynb.hs
+++ b/src/Text/Pandoc/Writers/Ipynb.hs
@@ -14,6 +14,7 @@ Ipynb (Jupyter notebook JSON format) writer for pandoc.
-}
module Text.Pandoc.Writers.Ipynb ( writeIpynb )
where
+import Control.Monad (foldM)
import Control.Monad.State
import qualified Data.Map as M
import Data.Maybe (catMaybes, fromMaybe)
diff --git a/src/Text/Pandoc/Writers/JATS.hs b/src/Text/Pandoc/Writers/JATS.hs
index 3db7300e7..ddeadee21 100644
--- a/src/Text/Pandoc/Writers/JATS.hs
+++ b/src/Text/Pandoc/Writers/JATS.hs
@@ -22,6 +22,7 @@ module Text.Pandoc.Writers.JATS
, writeJatsArticleAuthoring
) where
import Control.Applicative ((<|>))
+import Control.Monad
import Control.Monad.Reader
import Control.Monad.State
import Data.Generics (everywhere, mkT)
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index 3c5fe9c47..ed5b1973d 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -20,6 +20,15 @@ module Text.Pandoc.Writers.LaTeX (
, writeBeamer
) where
import Control.Monad.State.Strict
+ ( MonadState(get, put),
+ gets,
+ modify,
+ evalStateT )
+import Control.Monad
+ ( MonadPlus(mplus),
+ liftM,
+ when,
+ unless )
import Data.Containers.ListUtils (nubOrd)
import Data.Char (isDigit)
import Data.List (intersperse, (\\))
diff --git a/src/Text/Pandoc/Writers/LaTeX/Table.hs b/src/Text/Pandoc/Writers/LaTeX/Table.hs
index 4e750974b..5a159ce32 100644
--- a/src/Text/Pandoc/Writers/LaTeX/Table.hs
+++ b/src/Text/Pandoc/Writers/LaTeX/Table.hs
@@ -15,6 +15,7 @@ module Text.Pandoc.Writers.LaTeX.Table
( tableToLaTeX
) where
import Control.Monad.State.Strict
+import Control.Monad (when)
import Data.List (intersperse)
import qualified Data.List.NonEmpty as NonEmpty
import Data.List.NonEmpty (NonEmpty ((:|)))
diff --git a/src/Text/Pandoc/Writers/Man.hs b/src/Text/Pandoc/Writers/Man.hs
index ba40cf7c5..4e1651e53 100644
--- a/src/Text/Pandoc/Writers/Man.hs
+++ b/src/Text/Pandoc/Writers/Man.hs
@@ -14,7 +14,9 @@ Conversion of 'Pandoc' documents to roff man page format.
-}
module Text.Pandoc.Writers.Man ( writeMan ) where
-import Control.Monad.State.Strict
+import Control.Monad ( liftM, zipWithM, forM )
+import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
+import Control.Monad.Trans (MonadTrans(lift))
import Data.List (intersperse)
import Data.List.NonEmpty (nonEmpty)
import Data.Maybe (fromMaybe)
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index 9b61a565a..17ca05205 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -21,6 +21,7 @@ module Text.Pandoc.Writers.Markdown (
writeCommonMark,
writeMarkua,
writePlain) where
+import Control.Monad (foldM, zipWithM, MonadPlus(..), when)
import Control.Monad.Reader
import Control.Monad.State.Strict
import Data.Default
diff --git a/src/Text/Pandoc/Writers/Markdown/Inline.hs b/src/Text/Pandoc/Writers/Markdown/Inline.hs
index 30509e637..363dfecf0 100644
--- a/src/Text/Pandoc/Writers/Markdown/Inline.hs
+++ b/src/Text/Pandoc/Writers/Markdown/Inline.hs
@@ -16,6 +16,7 @@ module Text.Pandoc.Writers.Markdown.Inline (
attrsToMarkdown,
attrsToMarkua
) where
+import Control.Monad (when, liftM2)
import Control.Monad.Reader
import Control.Monad.State.Strict
import Data.Char (isAlphaNum, isDigit)
diff --git a/src/Text/Pandoc/Writers/Ms.hs b/src/Text/Pandoc/Writers/Ms.hs
index 023524601..77f22fc9e 100644
--- a/src/Text/Pandoc/Writers/Ms.hs
+++ b/src/Text/Pandoc/Writers/Ms.hs
@@ -21,6 +21,8 @@ TODO:
module Text.Pandoc.Writers.Ms ( writeMs ) where
import Control.Monad.State.Strict
+ ( gets, modify, evalStateT )
+import Control.Monad ( MonadPlus(mplus), liftM, unless, forM )
import Data.Containers.ListUtils (nubOrd)
import Data.Char (isAscii, isLower, isUpper, ord)
import Data.List (intercalate, intersperse)
diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs
index 80fbf088d..048abcc67 100644
--- a/src/Text/Pandoc/Writers/Muse.hs
+++ b/src/Text/Pandoc/Writers/Muse.hs
@@ -25,6 +25,7 @@ However, @\<literal style="html">@ tag is used for HTML raw blocks
even though it is supported only in Emacs Muse.
-}
module Text.Pandoc.Writers.Muse (writeMuse) where
+import Control.Monad (zipWithM)
import Control.Monad.Except (throwError)
import Control.Monad.Reader
import Control.Monad.State.Strict
diff --git a/src/Text/Pandoc/Writers/ODT.hs b/src/Text/Pandoc/Writers/ODT.hs
index 17312387d..4025b4ab2 100644
--- a/src/Text/Pandoc/Writers/ODT.hs
+++ b/src/Text/Pandoc/Writers/ODT.hs
@@ -13,6 +13,7 @@ Conversion of 'Pandoc' documents to ODT.
-}
module Text.Pandoc.Writers.ODT ( writeODT ) where
import Codec.Archive.Zip
+import Control.Monad
import Control.Monad.Except (catchError, throwError)
import Control.Monad.State.Strict
import qualified Data.ByteString.Lazy as B
diff --git a/src/Text/Pandoc/Writers/OOXML.hs b/src/Text/Pandoc/Writers/OOXML.hs
index 0c6cdab83..98bde20df 100644
--- a/src/Text/Pandoc/Writers/OOXML.hs
+++ b/src/Text/Pandoc/Writers/OOXML.hs
@@ -24,7 +24,7 @@ module Text.Pandoc.Writers.OOXML ( mknode
) where
import Codec.Archive.Zip
-import Control.Monad.Reader
+import Control.Monad (mplus)
import Control.Monad.Except (throwError)
import Text.Pandoc.Error
import qualified Data.ByteString as B
diff --git a/src/Text/Pandoc/Writers/OpenDocument.hs b/src/Text/Pandoc/Writers/OpenDocument.hs
index 7cf8b4bd6..cd682555b 100644
--- a/src/Text/Pandoc/Writers/OpenDocument.hs
+++ b/src/Text/Pandoc/Writers/OpenDocument.hs
@@ -15,7 +15,8 @@ Conversion of 'Pandoc' documents to OpenDocument XML.
-}
module Text.Pandoc.Writers.OpenDocument ( writeOpenDocument ) where
import Control.Arrow ((***), (>>>))
-import Control.Monad.State.Strict hiding (when)
+import Control.Monad hiding (when)
+import Control.Monad.State.Strict
import Data.Char (chr)
import Data.Foldable (find)
import Data.List (sortOn, sortBy, foldl')
diff --git a/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs
index 24632109b..1ef96235a 100644
--- a/src/Text/Pandoc/Writers/Org.hs
+++ b/src/Text/Pandoc/Writers/Org.hs
@@ -16,6 +16,7 @@ Conversion of 'Pandoc' documents to Emacs Org-Mode.
Org-Mode: <http://orgmode.org>
-}
module Text.Pandoc.Writers.Org (writeOrg) where
+import Control.Monad (zipWithM)
import Control.Monad.State.Strict
import Data.Char (isAlphaNum, isDigit)
import Data.List (intersperse, partition, transpose)
diff --git a/src/Text/Pandoc/Writers/Powerpoint/Output.hs b/src/Text/Pandoc/Writers/Powerpoint/Output.hs
index 3b87d8c1d..1d2b41385 100644
--- a/src/Text/Pandoc/Writers/Powerpoint/Output.hs
+++ b/src/Text/Pandoc/Writers/Powerpoint/Output.hs
@@ -21,6 +21,7 @@ Text.Pandoc.Writers.Powerpoint.Presentation) to a zip archive.
module Text.Pandoc.Writers.Powerpoint.Output ( presentationToArchive
) where
+import Control.Monad ( MonadPlus(mplus), foldM, unless )
import Control.Monad.Except (throwError, catchError)
import Control.Monad.Reader
import Control.Monad.State
diff --git a/src/Text/Pandoc/Writers/Powerpoint/Presentation.hs b/src/Text/Pandoc/Writers/Powerpoint/Presentation.hs
index fd6b83120..49f4f656f 100644
--- a/src/Text/Pandoc/Writers/Powerpoint/Presentation.hs
+++ b/src/Text/Pandoc/Writers/Powerpoint/Presentation.hs
@@ -43,7 +43,7 @@ module Text.Pandoc.Writers.Powerpoint.Presentation ( documentToPresentation
, LinkTarget(..)
) where
-
+import Control.Monad
import Control.Monad.Reader
import Control.Monad.State
import Data.List (intercalate)
diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs
index 023f1b4f1..6c166f279 100644
--- a/src/Text/Pandoc/Writers/RST.hs
+++ b/src/Text/Pandoc/Writers/RST.hs
@@ -14,7 +14,8 @@ Conversion of 'Pandoc' documents to reStructuredText.
reStructuredText: <http://docutils.sourceforge.net/rst.html>
-}
module Text.Pandoc.Writers.RST ( writeRST, flatten ) where
-import Control.Monad.State.Strict
+import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
+import Control.Monad (zipWithM, liftM)
import Data.Char (isSpace, generalCategory, isAscii, isAlphaNum,
GeneralCategory(
ClosePunctuation, OpenPunctuation, InitialQuote,
diff --git a/src/Text/Pandoc/Writers/Texinfo.hs b/src/Text/Pandoc/Writers/Texinfo.hs
index d5f074a14..fed936708 100644
--- a/src/Text/Pandoc/Writers/Texinfo.hs
+++ b/src/Text/Pandoc/Writers/Texinfo.hs
@@ -12,6 +12,7 @@
Conversion of 'Pandoc' format into Texinfo.
-}
module Text.Pandoc.Writers.Texinfo ( writeTexinfo ) where
+import Control.Monad (zipWithM)
import Control.Monad.Except (throwError)
import Control.Monad.State.Strict
import Data.Char (chr, ord, isAlphaNum)
diff --git a/src/Text/Pandoc/Writers/Textile.hs b/src/Text/Pandoc/Writers/Textile.hs
index ee31ab378..44c5df289 100644
--- a/src/Text/Pandoc/Writers/Textile.hs
+++ b/src/Text/Pandoc/Writers/Textile.hs
@@ -13,7 +13,8 @@ Conversion of 'Pandoc' documents to Textile markup.
Textile: <http://thresholdstate.com/articles/4312/the-textile-reference-manual>
-}
module Text.Pandoc.Writers.Textile ( writeTextile ) where
-import Control.Monad.State.Strict
+import Control.Monad (zipWithM, liftM)
+import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
import Data.Char (isSpace)
import Data.Text (Text)
import qualified Data.Text as T