Cleanup ghc-mod help output

This commit is contained in:
Daniel Gröber 2014-09-13 00:09:57 +02:00
parent 35a9da34a0
commit a0289420f9
1 changed files with 45 additions and 43 deletions

View File

@ -29,23 +29,23 @@ ghcOptHelp = " [-g GHC_opt1 -g GHC_opt2 ...] "
usage :: String usage :: String
usage = progVersion usage = progVersion
++ "Usage:\n" ++ "Usage:\n"
++ "\t ghc-mod list" ++ ghcOptHelp ++ "[-l] [-d]\n" ++ "\t ghc-mod list " ++ ghcOptHelp ++ "[-l] [-d]\n"
++ "\t ghc-mod lang [-l]\n" ++ "\t ghc-mod lang [-l]\n"
++ "\t ghc-mod flag [-l]\n" ++ "\t ghc-mod flag [-l]\n"
++ "\t ghc-mod browse" ++ ghcOptHelp ++ "[-l] [-o] [-d] [-q] [<package>:]<module> [[<package>:]<module> ...]\n" ++ "\t ghc-mod browse " ++ ghcOptHelp ++ "[-l] [-o] [-d] [-q] [<package>:]<module> [[<package>:]<module> ...]\n"
++ "\t ghc-mod check" ++ ghcOptHelp ++ "<HaskellFiles...>\n" ++ "\t ghc-mod check " ++ ghcOptHelp ++ "<HaskellFiles...>\n"
++ "\t ghc-mod expand" ++ ghcOptHelp ++ "<HaskellFiles...>\n" ++ "\t ghc-mod expand " ++ ghcOptHelp ++ "<HaskellFiles...>\n"
++ "\t ghc-mod debug" ++ ghcOptHelp ++ "\n" ++ "\t ghc-mod debug " ++ ghcOptHelp ++ "\n"
++ "\t ghc-mod info" ++ ghcOptHelp ++ "<HaskellFile> <module> <expression>\n" ++ "\t ghc-mod info " ++ ghcOptHelp ++ "<HaskellFile> <module> <expression>\n"
++ "\t ghc-mod type" ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n" ++ "\t ghc-mod type " ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n"
++ "\t ghc-mod split" ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n" ++ "\t ghc-mod split " ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n"
++ "\t ghc-mod sig" ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n" ++ "\t ghc-mod sig " ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n"
++ "\t ghc-mod refine" ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no> <expression>\n" ++ "\t ghc-mod refine " ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no> <expression>\n"
++ "\t ghc-mod auto" ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n" ++ "\t ghc-mod auto " ++ ghcOptHelp ++ "<HaskellFile> <module> <line-no> <column-no>\n"
++ "\t ghc-mod find <symbol>\n" ++ "\t ghc-mod find <symbol>\n"
++ "\t ghc-mod lint [-h opt] <HaskellFile>\n" ++ "\t ghc-mod lint [-h opt] <HaskellFile>\n"
++ "\t ghc-mod root\n" ++ "\t ghc-mod root\n"
++ "\t ghc-mod doc <module>\n" ++ "\t ghc-mod doc <module>\n"
++ "\t ghc-mod boot\n" ++ "\t ghc-mod boot\n"
++ "\t ghc-mod version\n" ++ "\t ghc-mod version\n"
++ "\t ghc-mod help\n" ++ "\t ghc-mod help\n"
@ -56,31 +56,35 @@ usage = progVersion
---------------------------------------------------------------- ----------------------------------------------------------------
argspec :: [OptDescr (Options -> Options)] argspec :: [OptDescr (Options -> Options)]
argspec = [ Option "l" ["tolisp"] argspec =
(NoArg (\opts -> opts { outputStyle = LispStyle })) let option s l udsc dsc = Option s l dsc udsc
"print as a list of Lisp" reqArg udsc dsc = ReqArg dsc udsc
, Option "h" ["hlintOpt"] in
(ReqArg (\h opts -> opts { hlintOpts = h : hlintOpts opts }) "hlintOpt") [ option "l" ["tolisp"] "print as a list of Lisp" $
"hlint options" NoArg $ \o -> o { outputStyle = LispStyle }
, Option "g" ["ghcOpt"]
(ReqArg (\g opts -> opts { ghcUserOptions = g : ghcUserOptions opts }) "ghcOpt") , option "h" ["hlintOpt"] "hlint options" $
"GHC options" reqArg "hlintOpt" $ \h o -> o { hlintOpts = h : hlintOpts o }
, Option "v" ["verbose"]
(NoArg (\opts -> opts { ghcUserOptions = "-v" : ghcUserOptions opts })) , option "g" ["ghcOpt"] "GHC options" $
"verbose" reqArg "ghcOpt" $ \g o ->
, Option "o" ["operators"] o { ghcUserOptions = g : ghcUserOptions o }
(NoArg (\opts -> opts { operators = True }))
"print operators, too" , option "v" ["verbose"] "verbose" $
, Option "d" ["detailed"] NoArg $ \o -> o { ghcUserOptions = "-v" : ghcUserOptions o }
(NoArg (\opts -> opts { detailed = True }))
"print detailed info" , option "o" ["operators"] "print operators, too" $
, Option "q" ["qualified"] NoArg $ \o -> o { operators = True }
(NoArg (\opts -> opts { qualified = True }))
"show qualified names" , option "d" ["detailed"] "print detailed info" $
, Option "b" ["boundary"] NoArg $ \o -> o { detailed = True }
(ReqArg (\s opts -> opts { lineSeparator = LineSeparator s }) "sep")
"specify line separator (default is Nul string)" , option "q" ["qualified"] "show qualified names" $
] NoArg $ \o -> o { qualified = True }
, option "b" ["boundary"] "specify line separator (default is Nul string)"$
reqArg "sep" $ \s o -> o { lineSeparator = LineSeparator s }
]
parseArgs :: [OptDescr (Options -> Options)] -> [String] -> (Options, [String]) parseArgs :: [OptDescr (Options -> Options)] -> [String] -> (Options, [String])
parseArgs spec argv parseArgs spec argv
@ -102,9 +106,7 @@ instance Exception GHCModError
main :: IO () main :: IO ()
main = flip E.catches handlers $ do main = flip E.catches handlers $ do
-- #if __GLASGOW_HASKELL__ >= 611
hSetEncoding stdout utf8 hSetEncoding stdout utf8
-- #endif
args <- getArgs args <- getArgs
let (opt,cmdArg) = parseArgs argspec args let (opt,cmdArg) = parseArgs argspec args
let cmdArg0 = cmdArg !. 0 let cmdArg0 = cmdArg !. 0