module Language.Haskell.Tools.IndentationUtils where
import Control.Monad.Identity (Identity(..))
import Control.Reference ((.=))
import Language.Haskell.Tools.AST (SrcTemplateStage, SourceInfoTrf(..), SourceInfoTraversal(..))
import Language.Haskell.Tools.Transform.SourceTemplate (sourceTemplateMinimalIndent, srcTmpListMinimalIndent, srcTmpOptMinimalIndent)
setMinimalIndent :: SourceInfoTraversal elem
=> Int -> elem dom SrcTemplateStage -> elem dom SrcTemplateStage
setMinimalIndent ind = runIdentity .
sourceInfoTraverse (SourceInfoTrf (Identity . (sourceTemplateMinimalIndent .= ind))
(Identity . (srcTmpListMinimalIndent .= ind))
(Identity . (srcTmpOptMinimalIndent .= ind)))