@@ -161,26 +161,11 @@ options =
161161
162162 , Option "d" ["defaults"]
163163 (ReqArg
164− (\arg opt -> runIOorExplode $ do
165− setVerbosity $ optVerbosity opt
166− let fp = if null (takeExtension arg)
167− then addExtension arg "yaml"
168− else arg
169− dataDirs <- liftIO defaultUserDataDirs
170− let fps = case optDataDir opt of
171− Nothing -> (fp : map (</> ("defaults" </> fp))
172− dataDirs)
173− Just dd -> [fp, dd </> "defaults" </> fp]
174− fp' <- fromMaybe fp <$> findFile fps
175− inp <- readFileLazy fp'
176− case Y.decode1 inp of
177− Right (f :: Opt -> Opt) -> return $ f opt
178− Left (errpos, errmsg) -> throwError $
179− PandocParseError $
180− "Error parsing " ++ fp' ++ " line " ++
181− show (Y.posLine errpos) ++ " column " ++
182− show (Y.posColumn errpos) ++ ":\n" ++ errmsg
183−
164+ (\arg opt -> do
165+ let fp' = if null (takeExtension arg)
166+ then addExtension arg "yaml"
167+ else arg
168+ foldM applyDefaults opt [fp']
184169 )
185170 "FILE")
186171 ""
@@ -995,6 +980,25 @@ splitField s =
995980 (k,_:v) -> (k,v)
996981 (k,[]) -> (k,"true")
997982
983+-- | Apply defaults from --defaults file.
984+applyDefaults :: Opt -> FilePath -> IO Opt
985+applyDefaults opt fp = runIOorExplode $ do
986+ setVerbosity $ optVerbosity opt
987+ dataDirs <- liftIO defaultUserDataDirs
988+ let fps = case optDataDir opt of
989+ Nothing -> (fp : map (</> ("defaults" </> fp))
990+ dataDirs)
991+ Just dd -> [fp, dd </> "defaults" </> fp]
992+ fp' <- fromMaybe fp <$> findFile fps
993+ inp <- readFileLazy fp'
994+ case Y.decode1 inp of
995+ Right (f :: Opt -> Opt) -> return $ f opt
996+ Left (errpos, errmsg) -> throwError $
997+ PandocParseError $
998+ "Error parsing " ++ fp' ++ " line " ++
999+ show (Y.posLine errpos) ++ " column " ++
1000+ show (Y.posColumn errpos) ++ ":\n" ++ errmsg
1001+
9981002lookupHighlightStyle :: PandocMonad m => String -> m Style
9991003lookupHighlightStyle s
10001004 | takeExtension s == ".theme" = -- attempt to load KDE theme