Automated background build in Leksah (no more Ctrl+B) ready for some testing

Hamish Mackenzie hamish at
Sat Mar 21 01:25:41 EDT 2009

I have pushed a patch to add background build to leksah-head.  Basically
this works with a timer that runs every 100ms.  If there are changes made to
any open file it....

   - interrupts any running build by sending SIGINT (sadly OSX and Linux
   only at this point)
   - waits for the old build processes to finish
   - saves all the modified files
   - starts a new build

This patch also changes the way errors are highlighted in the source code

   - All errors are underlined at once (not just one at time)
   - The current list of errors is not cleared until the new list is ready
   - New error list is made available once linking starts (so you don't have
   to wait for linking to finish jumping to warnings)

*OSX (tested) and Linux (not tested)*
As you type it sends a SIGINT to terminate the current build before waiting
for all child processes to terminate.  Currently it does this as soon as a
file is modified (well it checks on a 100ms timer).  This means you can hold
up the build by typing really fast (depending on the speed of your
computer).  If this is problematic for anyone let me know and I will add an
option to delay the interruption until at least one compilation has
completed (by waiting for the second line stating with '[' or 'Linking').
Windows (tested, but slow)*
Unfortunately it does not work quite so well on Windows, mainly because the
equivalent of SIGINT (generateConsoleCtrlEvent) does not seem to be well
supported by the haskell tools.  In particular if you try running '*runhaskell
Setup.lhs build*' in a console window and pressing Ctrl+C or Ctrl+Break you
will see that 9 times out of 10 nothing happens (I mean nothing it does not
continue building, but it does not terminate either, at least that is what I
found).  I have a feeling fixing this is not going to be easy (hopefully
there is a suitable haskell/windows guru who can).

An alternative to using generateConsoleCtrlEvent would be to pass
--build-to=Compile to cabal to tell it to skip the linking stage.  Duncan,
if you get a chance can you take a look the email and updated cabal patch I
sent on the 21st of Feb.

-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Leksah mailing list