Comment #7 on issue 276 by Will.Donnelly: HConf should be a standalone  
package
http://code.google.com/p/yi-editor/issues/detail?id=276

The conditional imports in HConf.hs are a little confusing (indented for  
readability):

   #ifndef mingw32_HOST_OS
     #ifdef darwin_HOST_OS
       import System.Posix.Process (getProcessStatus, forkProcess,  
exitImmediately,
ProcessStatus(..))
       import qualified System.Posix.Process as SPP (executeFile)
       import System.Posix.Signals (raiseSignal, sigTSTP)
     #else
       import System.Posix.Process (executeFile)
     #endif
     import Control.OldException (handle)
   #endif

Firstly, while I understand that 'handle' is only used when the host OS  
isn't mingw,
is there any reason it couldn't be imported with the other primitives from
'Control.OldException'? It would make the imports much more readable and  
straightforward.

Secondly, the executeFile import stuff is a little confusing. For  
readability, I
would suggest it always be imported qualified, and then add an else to the
compilation of the 'executeFile' function, so on non-darwin platforms it's  
just
'executeFile = SPP.executeFile'

Finally, mingw is for *Windows*, and darwin most certainly isn't that.  
Isn't it
redundant to have the darwin conditional inside the mingw one?

Basically I'm asking, could those imports be simplified to this:

   -- We have to write a custom executeFile for Darwin support,
   -- so we import the function qualified here.
   #ifndef mingw32_HOST_OS
   import qualified System.Posix.Process as SPP (executeFile)
   #endif

   -- These will be needed on Darwin for the custom executeFile function
   #ifdef darwin_HOST_OS
   import System.Posix.Process (getProcessStatus, forkProcess,  
exitImmediately,
ProcessStatus(..))
   import System.Posix.Signals (raiseSignal, sigTSTP)
   #endif

   import Control.OldException (catch, bracket, handle)

Without breaking anything majorly?

Attached is a diff of the changes I made, and the new HConf.hs. I added  
more explicit
statements of what functions and variables are imported, and reorganized  
the import
ordering slightly for aesthetic reasons.

Attachments:
        imports.diff  2.3 KB
        HConf.hs  14.4 KB

--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

--~--~---------~--~----~------------~-------~--~----~
Yi development mailing list
yi-devel@googlegroups.com
http://groups.google.com/group/yi-devel
-~----------~----~----~----~------~----~------~--~---

Reply via email to