]> git.wincent.com - docvim.git/commitdiff
Cut back on explicit imports as per the GHC style guide
authorGreg Hurrell <greg@hurrell.net>
Fri, 10 Jun 2016 01:00:39 +0000 (18:00 -0700)
committerGreg Hurrell <greg@hurrell.net>
Fri, 10 Jun 2016 01:00:39 +0000 (18:00 -0700)
Quoting:

> Do not use explicit import lists, except to resolve name clashes. There are several reasons for this:
>
> - They slow down development: almost every change is accompanied by an import
>   list change.
> - They cause spurious conflicts between developers.
> - They lead to useless warnings about unused imports, and time wasted trying
>   to keep the import declarations "minimal".
> - GHC's warnings are useful for detecting unnecessary imports: see
>   `-fwarn-unused-imports`.
> - TAGS is a good way to find out where an identifier is defined (use `make tags`
>   in `ghc/compiler`, and hit `M-.` in emacs).

https://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle

Fair enough then!

26 files changed:
lib/Text/Docvim/AST.hs
lib/Text/Docvim/CLI.hs
lib/Text/Docvim/Compile.hs
lib/Text/Docvim/Options.hs
lib/Text/Docvim/Parse.hs
lib/Text/Docvim/Printer/Markdown.hs
lib/Text/Docvim/Printer/Vim.hs
lib/Text/Docvim/ReadDir.hs
lib/Text/Docvim/Util.hs
lib/Text/Docvim/Visitor.hs
lib/Text/Docvim/Visitor/Command.hs
lib/Text/Docvim/Visitor/Commands.hs
lib/Text/Docvim/Visitor/Footer.hs
lib/Text/Docvim/Visitor/Function.hs
lib/Text/Docvim/Visitor/Functions.hs
lib/Text/Docvim/Visitor/Heading.hs
lib/Text/Docvim/Visitor/Mapping.hs
lib/Text/Docvim/Visitor/Mappings.hs
lib/Text/Docvim/Visitor/Option.hs
lib/Text/Docvim/Visitor/Options.hs
lib/Text/Docvim/Visitor/Plugin.hs
lib/Text/Docvim/Visitor/Section.hs
lib/Text/Docvim/Visitor/Symbol.hs
src/Main.hs
tests/HLint.hs
tests/tasty.hs

index 7b340c60a7a84661146c1f53f53112e4fb7aeb61..dc91f2aa65835249a4d56e1208237830d638f10e 100644 (file)
@@ -2,14 +2,14 @@
 
 module Text.Docvim.AST where
 
-import Control.Lens.Fold (foldlOf)
-import Control.Lens.Getter (to)
-import Control.Lens.Plated (Plated, cosmosOf)
-import Data.Char (toLower)
+import Control.Lens.Fold
+import Control.Lens.Getter
+import Control.Lens.Plated
+import Data.Char
 import Data.Data
-import Data.Data.Lens (uniplate)
-import Data.List (intercalate)
-import Data.Monoid ((<>))
+import Data.Data.Lens
+import Data.List
+import Data.Monoid
 
 data Node
           -- Roots
index ebc9fa2abbd8a87eb23aedd7ed908988accc37a8..1eba756f71359223b7095587fa12af7030bd18f3 100644 (file)
@@ -3,16 +3,16 @@
 -- | The runnable part of the docvim executable.
 module Text.Docvim.CLI (run) where
 
-import Control.Monad (when)
-import Data.Maybe (fromMaybe)
-import Text.Docvim.Options (Options(..), options)
-import Text.Docvim.Compile (compile)
-import Text.Docvim.Parse (parse)
-import Text.Docvim.Printer.Markdown (markdown)
-import Text.Docvim.Printer.Vim (vimHelp)
-import Text.Docvim.ReadDir (readDir)
-import System.FilePath (takeExtension)
-import System.IO (hPutStrLn, stderr)
+import Control.Monad
+import Data.Maybe
+import System.FilePath hiding (hasExtension)
+import System.IO
+import Text.Docvim.Compile
+import Text.Docvim.Options
+import Text.Docvim.Parse
+import Text.Docvim.Printer.Markdown
+import Text.Docvim.Printer.Vim
+import Text.Docvim.ReadDir
 
 hasExtension :: String -> FilePath -> Bool
 hasExtension ext fp = takeExtension fp == ext
index 93dab92ad1820d03dbf2db67a636dfdfb3c612b1..efed5848831db9971cd76109a5a421a31a772b10 100644 (file)
@@ -1,23 +1,19 @@
 module Text.Docvim.Compile (compile) where
 
-import Text.Docvim.AST (Node(Project))
-import Text.Docvim.Visitor.Command (extractCommand)
-import Text.Docvim.Visitor.Commands (extractCommands)
-import Text.Docvim.Visitor.Footer (extractFooter)
-import Text.Docvim.Visitor.Function (extractFunction)
-import Text.Docvim.Visitor.Functions (extractFunctions)
-import Text.Docvim.Visitor.Heading (injectTOC)
-import Text.Docvim.Visitor.Mapping (extractMapping)
-import Text.Docvim.Visitor.Mappings (extractMappings)
-import Text.Docvim.Visitor.Option (extractOption)
-import Text.Docvim.Visitor.Options (extractOptions)
-import Text.Docvim.Visitor.Plugin (extractPlugin)
-import Text.Docvim.Visitor.Section ( injectCommands
-                                   , injectFunctions
-                                   , injectMappings
-                                   , injectOptions
-                                   )
-import Text.Docvim.Visitor (extract)
+import Text.Docvim.AST
+import Text.Docvim.Visitor
+import Text.Docvim.Visitor.Command
+import Text.Docvim.Visitor.Commands
+import Text.Docvim.Visitor.Footer
+import Text.Docvim.Visitor.Function
+import Text.Docvim.Visitor.Functions
+import Text.Docvim.Visitor.Heading
+import Text.Docvim.Visitor.Mapping
+import Text.Docvim.Visitor.Mappings
+import Text.Docvim.Visitor.Option
+import Text.Docvim.Visitor.Options
+import Text.Docvim.Visitor.Plugin
+import Text.Docvim.Visitor.Section
 
 -- | "Compile" a set of translation units into a project.
 compile :: [Node] -> Node
index 136ed4d332671564efd551f6368602ad602bc102..5b0f7de69240b42d2914b0c2a32c287d681d60b8 100644 (file)
@@ -2,8 +2,8 @@
 module Text.Docvim.Options (Options(..), options) where
 
 import Options.Applicative
-import Data.Version (showVersion)
-import qualified Paths_docvim (version)
+import Data.Version
+import qualified Paths_docvim
 
 -- TODO: figure out where (and if!) to expand ~ and such in path options
 data Options = Options
index 8cb3f1b1c5604a72927770fe01edb50d547fbf55..3aaa58a5530707d28b13cfd699b20a7fe3b672a8 100644 (file)
@@ -6,54 +6,16 @@ module Text.Docvim.Parse ( parse
                          , unit
                          ) where
 
-import Control.Applicative ( (*>)
-                           , (<$)
-                           , (<$>)
-                           , (<*)
-                           , (<*>)
-                           , liftA
-                           , liftA2
-                           )
-import Data.Char (toUpper)
-import Data.List (groupBy, intercalate)
+import Control.Applicative hiding ((<|>), many, optional)
+import Data.Char
+import Data.List
+import System.Exit
+import System.IO
 import Text.Docvim.AST
-import System.Exit (exitFailure)
-import System.IO (hPutStrLn, stderr)
--- TODO: custom error messages with <?>
-import Text.Parsec ( (<|>)
-                   , (<?>)
-                   , ParseError
-                   , choice
-                   , digit
-                   , lookAhead
-                   , many
-                   , many1
-                   , manyTill
-                   , notFollowedBy
-                   , option
-                   , optionMaybe
-                   , optional
-                   , parseTest
-                   , satisfy
-                   , sepBy
-                   , sepBy1
-                   , sepEndBy
-                   , sepEndBy1
-                   , skipMany
-                   , skipMany1
-                   , try
-                   , unexpected
-                   )
-import Text.Parsec.String (Parser, parseFromFile)
-import Text.Parsec.Combinator (eof)
-import Text.ParserCombinators.Parsec.Char ( alphaNum
-                                          , anyChar
-                                          , char
-                                          , noneOf
-                                          , oneOf
-                                          , string
-                                          , upper
-                                          )
+import Text.Parsec hiding (newline, parse)
+import Text.Parsec.Combinator hiding (optional)
+import Text.Parsec.String
+import Text.ParserCombinators.Parsec.Char hiding (newline)
 
 -- | Given a `description` like "fu[nction]", returns a parser that matches
 -- "fu", "fun", "func", "funct", "functi", "functio" and "function".
index ef332886708f00b976338a735270bac05fec473d..626343959d146f77c0d20dc44577241f17baca65 100644 (file)
@@ -1,12 +1,12 @@
 module Text.Docvim.Printer.Markdown (markdown) where
 
 import Control.Monad.Reader
-import Data.List (intercalate, sort)
-import Data.Maybe (fromMaybe)
+import Data.List
+import Data.Maybe
 import Text.Docvim.AST
-import Text.Docvim.Parse (rstrip)
-import Text.Docvim.Visitor.Plugin (getPluginName)
-import Text.Docvim.Visitor.Symbol (getSymbols)
+import Text.Docvim.Parse
+import Text.Docvim.Visitor.Plugin
+import Text.Docvim.Visitor.Symbol
 
 data Metadata = Metadata { symbols :: [String]
                          , pluginName :: Maybe String
index 9eb9a38fc964b584ea3d347f00a67c114e8938a5..85a48b568ecd05b639e487fccd8232597e2b6c4e 100644 (file)
@@ -1,18 +1,18 @@
 module Text.Docvim.Printer.Vim (vimHelp) where
 
-import Control.Arrow ((***))
-import Control.Monad (join)
+import Control.Arrow
+import Control.Monad
 import Control.Monad.Reader
 import Control.Monad.State
-import Data.Char (isSpace, toLower, toUpper)
-import Data.List (intercalate, isSuffixOf, span, sort)
-import Data.List.Split (splitOn)
-import Data.Maybe (fromJust, fromMaybe)
-import Data.Tuple (swap)
+import Data.Char
+import Data.List
+import Data.List.Split
+import Data.Maybe
+import Data.Tuple
 import Text.Docvim.AST
-import Text.Docvim.Parse (rstrip)
-import Text.Docvim.Visitor.Plugin (getPluginName)
-import Text.Docvim.Visitor.Symbol (getSymbols)
+import Text.Docvim.Parse
+import Text.Docvim.Visitor.Plugin
+import Text.Docvim.Visitor.Symbol
 
 -- TODO: add indentation here (using local, or just stick it in Context)
 
index 8000e5f4a4e7c2c62863cc0a91f0b2f77854071f..418a3e43a4fc67caf6810f2092aec1dc8d90d598 100644 (file)
@@ -3,9 +3,9 @@
 -- Based on `RecursiveContents` example in chapter 9 of "Real World Haskell".
 module Text.Docvim.ReadDir (readDir) where
 
-import Control.Monad (forM)
-import System.Directory (doesDirectoryExist, getDirectoryContents)
-import System.FilePath ((</>))
+import Control.Monad
+import System.Directory
+import System.FilePath
 
 readDir :: FilePath -> IO [FilePath]
 readDir dir = do
index 981aa26105422feb5bb6db525041684078728438..b7092e9e031b52a7f86e9ff7a641ac63e011e34e 100644 (file)
@@ -8,13 +8,13 @@ module Text.Docvim.Util ( compileUnit
                         , pv
                         ) where
 
-import Text.Docvim.AST (Node)
-import Text.Docvim.Compile (compile)
-import Text.Docvim.Parse (unit)
-import Text.Docvim.Printer.Markdown (markdown)
-import Text.Docvim.Printer.Vim (vimHelp)
-import Text.Parsec (ParseError, runParser)
-import Text.Show.Pretty (ppShow)
+import Text.Docvim.AST
+import Text.Docvim.Compile
+import Text.Docvim.Parse
+import Text.Docvim.Printer.Markdown
+import Text.Docvim.Printer.Vim
+import Text.Parsec
+import Text.Show.Pretty
 
 -- | Parse and compile a string containing a translation unit.
 compileUnit :: String -> Either ParseError Node
index ea34721052807044f5552c07fc7e7319f8bac986..2ec37b464e8cadd678ce55507c2948369f61ce32 100644 (file)
@@ -3,9 +3,9 @@
 
 module Text.Docvim.Visitor (endSection, extract, extractBlocks) where
 
-import Control.Applicative (Alternative, (<|>), empty)
-import Control.Monad ((>=>))
-import Control.Monad.Writer (runWriter, tell)
+import Control.Applicative
+import Control.Monad
+import Control.Monad.Writer
 import Data.Data.Lens
 import Text.Docvim.AST
 import qualified Data.DList as DList
index 0103cc3a939867d2fd8009c70ea84fbf384a6d19..f694b0923979a7c759a0ebaeb64b5ec4c35e97af 100644 (file)
@@ -2,9 +2,9 @@
 
 module Text.Docvim.Visitor.Command (extractCommand) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(CommandAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) identified by the `@command`
 -- annotation of the source code.
index 94c055b40b48c2c4fb186c32eb229ee5be808c7b..e36d3b6142a0a4259b0c7aa8803e2211ed937ab1 100644 (file)
@@ -1,8 +1,8 @@
 module Text.Docvim.Visitor.Commands (extractCommands) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(CommandsAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) from the `@commands` section(s) of
 -- the source code.
index 6e9173920bbec434045fad1668bdf74aee95a5f2..b04ca3c68c70395c03b213d1a332e4531301c13f 100644 (file)
@@ -1,8 +1,8 @@
 module Text.Docvim.Visitor.Footer (extractFooter) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(FooterAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) from the `@footer` section(s) of
 -- the source code.
index 945f7e3a1afaafc8da2cb50fd10a453024ba0053..ca9a81dd26c30d8410c436d5819b8711dbd6b41f 100644 (file)
@@ -2,9 +2,9 @@
 
 module Text.Docvim.Visitor.Function (extractFunction) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(FunctionAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) identified by the `@function`
 -- annotation of the source code.
index d34ba309705ee217b98dd26e2dcfa9172a3cb9a8..9fb649b911117a7eecd240355f163be3b868d8ea 100644 (file)
@@ -1,8 +1,8 @@
 module Text.Docvim.Visitor.Functions (extractFunctions) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(FunctionsAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) from the `@functions` section(s) of
 -- the source code.
index 87defefc60b527664f2674ab2697934466a44025..e2bcb7f1af032b6b0e4e91234ab41dd45307f38d 100644 (file)
@@ -3,8 +3,8 @@ module Text.Docvim.Visitor.Heading ( getHeadings
                                    ) where
 
 import Control.Lens
-import Control.Lens.Plated (transform)
-import Data.Data.Lens (uniplate)
+import Control.Lens.Plated
+import Data.Data.Lens
 import Text.Docvim.AST
 
 -- | Returns a list of all headings, in the order in which they appear in the
index ee5b7c3055492844f4d2217d0d0c820b93efe3c8..2ead2a0ed8c67de889afe20e44a08199f49845ce 100644 (file)
@@ -2,9 +2,9 @@
 
 module Text.Docvim.Visitor.Mapping (extractMapping) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(MappingAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) identified by the `@mapping`
 -- annotation of the source code.
index 4c56167ffd339d8bc4fa0b390e7284110bef2175..7c4b0ea6e8853c1b207d8692b6c6653ce78f78cb 100644 (file)
@@ -1,8 +1,8 @@
 module Text.Docvim.Visitor.Mappings (extractMappings) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(MappingsAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) from the `@mappings` section(s) of
 -- the source code.
index 6dd4b51d1447cfe0039ad66af5ed3eeff5b02194..6b24397c3aea4c4328980aed39986346b3332a45 100644 (file)
@@ -2,9 +2,9 @@
 
 module Text.Docvim.Visitor.Option (extractOption) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(OptionAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) identified by the `@option`
 -- annotation of the source code.
index 507cf9a2ba3df3cc6d376cda89c9cd8690464b07..b4279ed71be3e4ac59798a2576a132d514f55394 100644 (file)
@@ -1,8 +1,8 @@
 module Text.Docvim.Visitor.Options (extractOptions) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(OptionsAnnotation))
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Extracts a list of nodes (if any exist) from the `@options` section(s) of
 -- the source code.
index 051dcfe0bc74570665d87f8528c09807d0c96abf..0972cc5a6fa15670c2467779a8546e0df45425b9 100644 (file)
@@ -4,9 +4,9 @@ module Text.Docvim.Visitor.Plugin ( getPluginName
                                   , extractPlugin
                                   ) where
 
-import Control.Applicative (Alternative)
-import Text.Docvim.AST (Node(PluginAnnotation), walk)
-import Text.Docvim.Visitor (endSection, extractBlocks)
+import Control.Applicative
+import Text.Docvim.AST
+import Text.Docvim.Visitor
 
 -- | Returns the name of the plug-in or Nothing if none is found.
 --
index cef891e5be1c4b6487c7ded6349650dccb323394..6fbd341ee0a524d0af570359f4dd4a8f8625f69c 100644 (file)
@@ -10,7 +10,7 @@ module Text.Docvim.Visitor.Section ( injectCommands
 
 import Control.Lens
 import Control.Monad.State
-import Data.Data.Lens (uniplate)
+import Data.Data.Lens
 import Text.Docvim.AST
 
 data SectionInfo = SectionInfo { _hasCommand :: Bool
index 274baa8aa4caa7efc301a553a58d4ca7c8a74798..cc2087befe0c4dfef5726b5f3b630808c8ea0a38 100644 (file)
@@ -1,10 +1,10 @@
 module Text.Docvim.Visitor.Symbol (getSymbols) where
 
-import Data.Char (toLower)
-import Data.List (nub, sort)
-import qualified Data.Set as Set
+import Data.Char
+import Data.List
 import Text.Docvim.AST
-import Text.Docvim.Visitor.Plugin (getPluginName)
+import Text.Docvim.Visitor.Plugin
+import qualified Data.Set as Set
 
 -- TODO: return Set instead of [String]
 -- TODO: use Either instead of dying unceremoniously with `error`
index 4925bbf7547e408f0d6ab13846e570491936aa4e..c36aaf57fd2d28c229198733cf46470e9510ede2 100644 (file)
@@ -1,7 +1,7 @@
 -- | The docvim executable.
 module Main (main) where
 
-import Text.Docvim.CLI (run)
+import Text.Docvim.CLI
 
 -- | Run the executable using the supplied options.
 main :: IO ()
index 15c2018672004ba6def2fc3d9b6864f2d0242452..0c73f76a2f2465694409e270e29cbc7739c69cbb 100644 (file)
@@ -1,7 +1,7 @@
 module Main (main) where
 
-import Language.Haskell.HLint (hlint)
-import System.Exit (exitFailure, exitSuccess)
+import Language.Haskell.HLint
+import System.Exit
 
 main :: IO ()
 main = do
index 5e5bf7c4216a6bfd296dd23b81b90f963b041607..d1c9246ebcbbee176fdcde44c538ca05c350c947 100644 (file)
@@ -1,30 +1,25 @@
 module Main (main) where
 
-import qualified Data.ByteString as ByteString
-import qualified Data.ByteString.Lazy as LazyByteString
-import Control.DeepSeq (rnf)
-import Control.Exception (evaluate)
+import Control.DeepSeq
+import Control.Exception hiding (assert)
 import Data.ByteString.Lazy.Char8 (pack, unpack)
-import Data.Char (chr)
-import Data.List (isPrefixOf, sort)
-import Data.Monoid (Sum(..))
-import Text.Docvim.AST
-import Text.Docvim.Util (compileUnit, p, pm, pv)
-import Text.Docvim.Visitor.Symbol (getSymbols)
-import System.Exit (ExitCode(ExitSuccess))
-import System.FilePath ((<.>), replaceExtension, takeBaseName, takeFileName)
-import System.IO (hFlush, readFile)
-import System.IO.Temp (withSystemTempFile)
-import System.Process ( StdStream(CreatePipe)
-                      , createProcess
-                      , proc
-                      , std_out
-                      , waitForProcess
-                      )
-import Test.Tasty (testGroup, TestName, TestTree, defaultMain)
-import Test.Tasty.Golden (findByExtension)
-import Test.Tasty.Golden.Advanced (goldenTest)
+import Data.Char
+import Data.List --(isPrefixOf, sort)
+import Data.Monoid
+import System.Exit
+import System.FilePath
+import System.IO
+import System.IO.Temp
+import System.Process
+import Test.Tasty
+import Test.Tasty.Golden
+import Test.Tasty.Golden.Advanced
 import Test.Tasty.HUnit
+import Text.Docvim.AST
+import Text.Docvim.Util
+import Text.Docvim.Visitor.Symbol
+import qualified Data.ByteString as ByteString
+import qualified Data.ByteString.Lazy as LazyByteString
 
 -- | Crude check to see if parse worked.
 parseSuccess :: Either a b -> Bool