haskell-tools-prettyprint-0.4.1.2: Language/Haskell/Tools/IndentationUtils.hs
-- | Utilities to modify the indentation of AST fragments
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)
-- | Set the minimal indentation recursively for a part of the AST
setMinimalIndent :: SourceInfoTraversal elem
=> Int -> elem dom SrcTemplateStage -> elem dom SrcTemplateStage
setMinimalIndent ind = runIdentity .
sourceInfoTraverse (SourceInfoTrf (Identity . (sourceTemplateMinimalIndent .= ind))
(Identity . (srcTmpListMinimalIndent .= ind))
(Identity . (srcTmpOptMinimalIndent .= ind)))