From f8c93e06f4ba44b9b15ef5c89021c182aceb4879 Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Sun, 25 Mar 2018 17:47:40 +0200 Subject: [PATCH] Add showcase for module layouting [ci skip] --- doc/showcases/Module.md | 89 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 doc/showcases/Module.md diff --git a/doc/showcases/Module.md b/doc/showcases/Module.md new file mode 100644 index 0000000..ebde6a9 --- /dev/null +++ b/doc/showcases/Module.md @@ -0,0 +1,89 @@ + +Last updated for brittany version `0.10.0.0`. + +# Example layouting of the module header (exports/imports) + +## On default settings + +~~~~.hs +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE BangPatterns #-} +{-# LANGUAGE LambdaCase #-} + +module Main + ( main + ) +where + +import qualified Paths_brittany +import Language.Haskell.Brittany + +import Network.Wai +import Network.HTTP.Types +import qualified Network.Wai.Handler.Warp as Warp + +import Data.String + +import qualified Data.ByteString as BS +import qualified Data.ByteString.Lazy as BSL + +import Control.Monad.Loops + +import qualified Data.Text.Encoding as Text +import qualified Data.Text as Text + +import Data.Version ( showVersion ) + +import qualified System.Mem +import qualified Control.Concurrent +import Control.Concurrent.Async ( async + , waitEitherCatch + , waitEitherCatchCancel + ) +import qualified Data.Aeson as Aeson +import Data.Time.Clock +import Data.Time.Format +import Text.Parsec hiding ( (<|>) ) +~~~~ + +For long module names, things will be moved one line below and aligned as +before. Long identifiers may overflow our 80 column limit: + +~~~~.hs +import qualified Example.Very.Long.Module.Name.Internal + as T +import Example.Very.Long.Module.Name.Internal + ( a + , b + , c + ) +import Example.Very.Long.Module.Name.Internal + ( someVeryLongAndDescriptiveFunctionName + ) +~~~~ + +## Alternative setting + +If you have many long module names or use large identifiers, you might +be interested in these alternative settings: + +~~~~ +conf_layout: + lconfig_importColumn: 21 + lconfig_importAsColumn: 70 +~~~~ + +Now, our previous examples becomes: + +~~~~.hs +import qualified Example.Very.Long.Module.Name.Strict.Internal as T +import Example.Very.Long.Module.Name.Strict.Internal + ( a + , b + , c + ) +import Example.Very.Long.Module.Name.Strict.Internal + ( someVeryLongAndDescriptiveFunctionName + ) +~~~~