-l for check.

This commit is contained in:
Kazu Yamamoto 2014-04-18 17:28:12 +09:00
parent 9a6c84410d
commit 4389dea800
4 changed files with 13 additions and 5 deletions

View File

@ -18,7 +18,7 @@ checkSyntax :: Options
-> [FilePath] -- ^ The target files. -> [FilePath] -- ^ The target files.
-> IO String -> IO String
checkSyntax _ _ [] = error "ghc-mod: checkSyntax: No files given" checkSyntax _ _ [] = error "ghc-mod: checkSyntax: No files given"
checkSyntax opt cradle files = unlines <$> withGHC sessionName (check opt cradle files) checkSyntax opt cradle files = convert opt <$> withGHC sessionName (check opt cradle files)
where where
sessionName = case files of sessionName = case files of
[file] -> file [file] -> file

View File

@ -31,6 +31,8 @@ module Language.Haskell.GhcMod.Internal (
, runAnyOne , runAnyOne
-- * 'GhcMonad' Choice -- * 'GhcMonad' Choice
, (|||>) , (|||>)
-- * Misc
, convert
) where ) where
import Language.Haskell.GhcMod.Browse import Language.Haskell.GhcMod.Browse

View File

@ -75,7 +75,11 @@ tupToString ((a,b,c,d),s) = show a ++ " "
++ quote s ++ quote s
quote :: String -> String quote :: String -> String
quote x = "\"" ++ x ++ "\"" quote x = "\"" ++ escape x ++ "\""
where
escape [] = []
escape ('"':ys) = '\\':'\"':escape ys
escape (y:ys) = y:escape ys
addNewLine :: String -> String addNewLine :: String -> String
addNewLine = (++ "\n") addNewLine = (++ "\n")

View File

@ -61,6 +61,9 @@ argspec :: [OptDescr (Options -> Options)]
argspec = [ Option "b" ["boundary"] argspec = [ Option "b" ["boundary"]
(ReqArg (\s opts -> opts { lineSeparator = LineSeparator s }) "sep") (ReqArg (\s opts -> opts { lineSeparator = LineSeparator s }) "sep")
"specify line separator (default is Nul string)" "specify line separator (default is Nul string)"
, Option "l" ["tolisp"]
(NoArg (\opts -> opts { outputStyle = LispStyle }))
"print as a list of Lisp"
, Option "g" [] , Option "g" []
(ReqArg (\s opts -> opts { ghcOpts = s : ghcOpts opts }) "flag") "specify a ghc flag" (ReqArg (\s opts -> opts { ghcOpts = s : ghcOpts opts }) "flag") "specify a ghc flag"
] ]
@ -68,8 +71,7 @@ argspec = [ Option "b" ["boundary"]
usage :: String usage :: String
usage = "ghc-modi version " ++ showVersion version ++ "\n" usage = "ghc-modi version " ++ showVersion version ++ "\n"
++ "Usage:\n" ++ "Usage:\n"
++ "\t ghc-modi [-b sep]\n" ++ "\t ghc-modi [-l] [-b sep] [-g flag]\n"
++ "\t ghc-modi [-g flag]\n"
++ "\t ghc-modi help\n" ++ "\t ghc-modi help\n"
parseArgs :: [OptDescr (Options -> Options)] -> [String] -> (Options, [String]) parseArgs :: [OptDescr (Options -> Options)] -> [String] -> (Options, [String])
@ -155,7 +157,7 @@ loop opt set ls mvar readLog = do
"info" -> showInfo set ls readLog arg "info" -> showInfo set ls readLog arg
"type" -> showType opt set ls readLog arg "type" -> showType opt set ls readLog arg
_ -> return ([], False, set) _ -> return ([], False, set)
mapM_ (liftIO . putStrLn) msgs liftIO $ putStrLn $ convert opt msgs
liftIO $ putStrLn $ if ok then "OK" else "NG" liftIO $ putStrLn $ if ok then "OK" else "NG"
liftIO $ hFlush stdout liftIO $ hFlush stdout
when ok $ loop opt set' ls mvar readLog when ok $ loop opt set' ls mvar readLog