diff options
| -rw-r--r-- | src/Main.hs | 92 | 
1 files changed, 46 insertions, 46 deletions
diff --git a/src/Main.hs b/src/Main.hs index c97a5b0a..810c227e 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -5,7 +5,7 @@  -- Haddock - A Haskell Documentation Tool  --  -- (c) Simon Marlow 2003 ---  +--  -- Ported to use the GHC API by David Waern during "Summer of Code" 2006  -- @@ -67,14 +67,14 @@ import Util hiding (handle)  handleTopExceptions :: IO a -> IO a -handleTopExceptions =  +handleTopExceptions =    handleNormalExceptions . handleHaddockExceptions . handleGhcExceptions  handleNormalExceptions :: IO a -> IO a  handleNormalExceptions inner =    handle (\exception -> do -    hFlush stdout     +    hFlush stdout      case exception of        AsyncException StackOverflow -> do          putStrLn "stack overflow: use -g +RTS -K<size> to increase it" @@ -87,7 +87,7 @@ handleNormalExceptions inner =  handleHaddockExceptions :: IO a -> IO a -handleHaddockExceptions inner =  +handleHaddockExceptions inner =  #if __GLASGOW_HASKELL__ >= 609    NewException.catches inner [NewException.Handler handler]  #else @@ -100,7 +100,7 @@ handleHaddockExceptions inner =  handleGhcExceptions :: IO a -> IO a -handleGhcExceptions inner =  +handleGhcExceptions inner =    -- compilation errors: messages with locations attached  #if __GLASGOW_HASKELL__ < 609   handleDyn (\e -> do @@ -120,7 +120,7 @@ handleGhcExceptions inner =      case e of        PhaseFailed _ code -> exitWith code        Interrupted -> exitFailure -      _ -> do  +      _ -> do          print (e :: GhcException)          exitFailure    ) inner @@ -140,7 +140,7 @@ main = handleTopExceptions $ do    handleEasyFlags flags    verbosity <- getVerbosity flags -  let renderStep packages interfaces = do  +  let renderStep packages interfaces = do          updateHTMLXRefs packages          let ifaceFiles = map fst packages              installedIfaces = concatMap ifInstalledIfaces ifaceFiles @@ -163,7 +163,7 @@ main = handleTopExceptions $ do  #if __GLASGOW_HASKELL__ >= 609        -- We have one global error handler for all GHC source errors.  Other kinds -      -- of exceptions will be propagated to the top-level error handler.  +      -- of exceptions will be propagated to the top-level error handler.        let handleSrcErrors action = flip handleSourceError action $ \err -> do              printExceptionAndWarnings err              liftIO exitFailure @@ -182,7 +182,7 @@ main = handleTopExceptions $ do          liftIO $ do            -- render the interfaces            renderStep packages interfaces -  +            -- last but not least, dump the interface file            dumpInterfaceFile (map toInstalledIface interfaces) homeLinks flags  #else @@ -198,7 +198,7 @@ main = handleTopExceptions $ do        -- render the interfaces        renderStep packages interfaces -  +        -- last but not least, dump the interface file        dumpInterfaceFile (map toInstalledIface interfaces) homeLinks flags  #endif @@ -215,13 +215,13 @@ main = handleTopExceptions $ do  ------------------------------------------------------------------------------- --- | Render the interfaces with whatever backend is specified in the flags  +-- | Render the interfaces with whatever backend is specified in the flags  render :: [Flag] -> [Interface] -> [InstalledInterface] -> IO ()  render flags ifaces installedIfaces = do    let      title = case [str | Flag_Heading str <- flags] of -		[] -> "" -		(t:_) -> t +              [] -> "" +              (t:_) -> t      maybe_source_urls = (listToMaybe [str | Flag_SourceBaseURL   str <- flags]                          ,listToMaybe [str | Flag_SourceModuleURL str <- flags] @@ -232,7 +232,7 @@ render flags ifaces installedIfaces = do                        ,listToMaybe [str | Flag_WikiEntityURL str <- flags])    libDir <- case [str | Flag_Lib str <- flags] of -		[] -> +    [] ->  #ifdef IN_GHC_TREE                        do m <- getExecDir                           case m of @@ -241,23 +241,23 @@ render flags ifaces installedIfaces = do  #else                        getDataDir -- provided by Cabal  #endif -		fs -> return (last fs) +    fs -> return (last fs)    let css_file = case [str | Flag_CSS str <- flags] of -			[] -> Nothing -			fs -> Just (last fs) +                   [] -> Nothing +                   fs -> Just (last fs)    odir <- case [str | Flag_OutputDir str <- flags] of -		[] -> return "." -		fs -> return (last fs) +            [] -> return "." +            fs -> return (last fs) -  let  -    maybe_contents_url =  +  let +    maybe_contents_url =        case [url | Flag_UseContents url <- flags] of          [] -> Nothing          us -> Just (last us) -    maybe_index_url =  +    maybe_index_url =        case [url | Flag_UseIndex url <- flags] of          [] -> Nothing          us -> Just (last us) @@ -269,7 +269,7 @@ render flags ifaces installedIfaces = do    prologue <- getPrologue flags -  let  +  let      visibleIfaces    = [ i | i <- ifaces, OptHide `notElem` ifaceOptions i ]      -- *all* visible interfaces including external package modules @@ -280,20 +280,20 @@ render flags ifaces installedIfaces = do      packageStr       = Just (modulePackageString packageMod)      (pkgName,pkgVer) = modulePackageInfo packageMod -  +    when (Flag_GenIndex `elem` flags) $ do      ppHtmlIndex odir title packageStr maybe_html_help_format                  maybe_contents_url maybe_source_urls maybe_wiki_urls                  allVisibleIfaces      copyHtmlBits odir libDir css_file -         +    when (Flag_GenContents `elem` flags && Flag_GenIndex `elem` flags) $ do      ppHtmlHelpFiles title packageStr visibleIfaces odir maybe_html_help_format []    when (Flag_GenContents `elem` flags) $ do      ppHtmlContents odir title packageStr maybe_html_help_format -	                 maybe_index_url maybe_source_urls maybe_wiki_urls -	                 allVisibleIfaces True prologue +                   maybe_index_url maybe_source_urls maybe_wiki_urls +                   allVisibleIfaces True prologue      copyHtmlBits odir libDir css_file    when (Flag_Html `elem` flags) $ do @@ -334,11 +334,11 @@ readInterfaceFiles name_cache_accessor pairs = do  dumpInterfaceFile :: [InstalledInterface] -> LinkEnv -> [Flag] -> IO () -dumpInterfaceFile ifaces homeLinks flags =  +dumpInterfaceFile ifaces homeLinks flags =    case [str | Flag_DumpInterface str <- flags] of      [] -> return ()      fs -> let filename = last fs in writeInterfaceFile filename ifaceFile -  where  +  where      ifaceFile = InterfaceFile {          ifInstalledIfaces = ifaces,          ifLinkEnv         = homeLinks @@ -349,9 +349,9 @@ dumpInterfaceFile ifaces homeLinks flags =  -- Creating a GHC session  ------------------------------------------------------------------------------- --- | Start a GHC session with the -haddock flag set. Also turn off  --- compilation and linking.   -#if __GLASGOW_HASKELL__ >= 609  +-- | Start a GHC session with the -haddock flag set. Also turn off +-- compilation and linking. +#if __GLASGOW_HASKELL__ >= 609  startGhc :: String -> [String] -> (DynFlags -> Ghc a) -> IO a  startGhc libDir flags ghcActs = do    -- TODO: handle warnings? @@ -433,7 +433,7 @@ handleEasyFlags flags = do        "Haddock version " ++ projectVersion ++ ", (c) Simon Marlow 2006\n"        ++ "Ported to use the GHC API by David Waern 2006-2008\n" -    byeGhcVersion = bye $  +    byeGhcVersion = bye $        (fromJust $ lookup "Project version" $ compilerInfo) ++ "\n" @@ -441,20 +441,21 @@ updateHTMLXRefs :: [(InterfaceFile, FilePath)] -> IO ()  updateHTMLXRefs packages = do    writeIORef html_xrefs_ref (Map.fromList mapping)    where -    mapping = [ (instMod iface, html) | (ifaces, html) <- packages, -                iface <- ifInstalledIfaces ifaces ] +    mapping = [ (instMod iface, html) | (ifaces, html) <- packages +              , iface <- ifInstalledIfaces ifaces ]  getPrologue :: [Flag] -> IO (Maybe (HsDoc RdrName)) -getPrologue flags -  = case [filename | Flag_Prologue filename <- flags ] of -	[] -> return Nothing  -	[filename] -> do -	   str <- readFile filename -	   case parseHaddockComment str of -		Left err -> throwE err -		Right doc -> return (Just doc) -	_otherwise -> throwE "multiple -p/--prologue options" +getPrologue flags = +  case [filename | Flag_Prologue filename <- flags ] of +    [] -> return Nothing +    [filename] -> do +      str <- readFile filename +      case parseHaddockComment str of +        Left err -> throwE err +        Right doc -> return (Just doc) +    _otherwise -> throwE "multiple -p/--prologue options" +  getExecDir :: IO (Maybe String)  #if defined(mingw32_HOST_OS) @@ -466,10 +467,9 @@ getExecDir = allocaArray len $ \buf -> do                  return (Just (dropFileName s))    where len = 2048 -- Plenty, PATH_MAX is 512 under Win32. -foreign import stdcall unsafe  "GetModuleFileNameA" +foreign import stdcall unsafe "GetModuleFileNameA"    getModuleFileName :: Ptr () -> CString -> Int -> IO Int32  #else  getExecDir = return Nothing  #endif -  | 
