@@ -50,7 +50,7 @@ import Text.Pandoc
5050import Text.Pandoc.App.Opt (Opt (..), LineEnding (..), IpynbOutput (..), addMeta)
5151import Text.Pandoc.Filter (Filter (..))
5252import Text.Pandoc.Highlighting (highlightingStyles)
53−import Text.Pandoc.Shared (ordNub, elemText, safeStrRead, defaultUserDataDirs)
53+import Text.Pandoc.Shared (ordNub, elemText, safeStrRead, defaultUserDataDirs, findM)
5454import Text.Printf
5555
5656#ifdef EMBED_DATA_FILES
@@ -118,14 +118,6 @@ engines = map ("html",) htmlEngines ++
118118pdfEngines :: [String]
119119pdfEngines = ordNub $ map snd engines
120120
121−findFile :: PandocMonad m => [FilePath] -> m (Maybe FilePath)
122−findFile [] = return Nothing
123−findFile (f:fs) = do
124− exists <- fileExists f
125− if exists
126− then return $ Just f
127− else findFile fs
128−
129121-- | A list of functions, each transforming the options data structure
130122-- in response to a command-line option.
131123options :: [OptDescr (Opt -> IO Opt)]
@@ -996,7 +988,7 @@ applyDefaults opt file = runIOorExplode $ do
996988 Nothing -> map (</> ("defaults" </> fp))
997989 dataDirs
998990 Just dd -> [dd </> "defaults" </> fp]
999− fp' <- fromMaybe fp <$> findFile fps
991+ fp' <- fromMaybe fp <$> findM fileExists fps
1000992 inp <- readFileLazy fp'
1001993 case Y.decode1 inp of
1002994 Right (f :: Opt -> Opt) -> return $ f opt