
Robert Dockins wrote:
On Friday 01 September 2006 03:55, Simon Peyton-Jones wrote:
| Indeed. I had to browse the source after finding that the Haddock docs are | essentially useless. I do have to say, one nice side effect of using darcs | is that one can simply point one's browser at the source repository to peruse | the code. I've bookmarked http://cvs.haskell.org/darcs :-)
Good idea. Could you help us improve the documentation by sending darcs patches with Haddock docs in them? Not necessarily comprehensive: at least recording the bits you discovered, and wished had been in the docs in the first place.
Well, here's the odd thing; there ought to be meaningful haddock docs already. By that, I mean that there are data declarations and type signatures and such already in the file that haddock should be picking up on. However, the whole file is protected by a big ifdef:
module GHC.ConsoleHandler #if !defined(mingw32_HOST_OS) && !defined(__HADDOCK__) where import Prelude -- necessary to get dependencies right #else /* whole file */ ( Handler(..) , installHandler , ConsoleEvent(..) , flushConsole ) where
..... rest of file ....
It looks like the definitions in the file _should_ be visible to haddock, but for some reason they aren't.
The !defined(__HADDOCK__) part was added by me recently, so you have to look in the snapshot docs to find the results: http://www.haskell.org/ghc/dist/current/docs/libraries/base/GHC-ConsoleHandl... GHC.ConsoleHandler is now included in the documentation, and will be in 6.6.
Do you have any ideas about the original question? It looks like RTS trickery is necessary to get this right in general. Looking at this file in a little more detail, I see calls to 'rts_installHandler', which is surely why this file is in the GHC.* namespace.
Perhaps 'withControlCHandler' or something like it should go into the libraries somewhere? I'm not sure this is a function that can be provided without RTS assistance. It also seems to be about the maximum intersection of the capabilities of Posix signals and of the Win32 console events system.
Right, that would be useful. However, see this bug: http://hackage.haskell.org/trac/ghc/ticket/637 Ctrl-C doesn't work right on Windows with -threaded, at the moment. (we hope to get to this one for 6.6.1). Cheers, Simon