ghci command output capture & full :browse! (draft patches)

Claus Reinke claus.reinke at talk21.com
Wed Sep 5 20:48:54 EDT 2007


i had been hoping for some more feedback regarding my attempt 
to address parts of ticket #1617 (unrestricted variant of :browse), 
as well as emails regarding capturing the output of GHCi commands
as Haskell Strings. 

http://www.haskell.org/pipermail/glasgow-haskell-bugs/2007-August/009735.html
http://www.haskell.org/pipermail/glasgow-haskell-users/2007-August/013040.html
http://hackage.haskell.org/trac/ghc/ticket/1617

but that was before the branch, and i'd like to get at
least an initial version of this functionality into 6.8.

so i've implemented (draft patches wrt current head attached):

    - :browse! 
        a variant of :browse, that does not filter out children, 
        and does not display children in context of their parents
        (as described; this still suffers from the issue that i have not
        found a function to display the stored type of class methods
        correctly; it also does not yet account for qualified names,
        when their unqualified versions are available, nor does it
        address the issue of not updating properly on :reload, both
        issues are described in ticket #1617)

        [btw, how did the debugger manage to steal :b from 
         :browse? i think this should be changed back to the
         traditional (pre 6.7) behaviour, but have not done so yet]        

    - GHCi command output capture (again, as described)
        for   :help, :browse, :info, :set, :show (showModules,
        showBindings,showBkptTable,showContext). 

        mostly this has been about refactoring hardcoded i/o
        into separate i/o and rendering, so that the rendered
        output can be captured in a variable ('output'). the
        capturing itself is isolated in a single function ('out'),
        so changing the variable name would be easy.

        there are probably other commands one would want 
        to capture later. there is a new renderForUser (for use 
        with out, making it easier to replace the all too popular 
        printForUser). 

the patches seem to affect the output of tests (fast stage=2)
only in two cases, break006 and print003, both of which
use :show bindings (which is obviously aware of the new
'output' variable), so i suggest to accept the new output for
these two tests.

i would still like to know how one is supposed to display
the type of class methods, and why 'it' is not bound in the 
same naive way i've used to bind 'output'. once these two
issues are addressed, i still need to add a couple of tests,
as well as some documentation..

could you please have a look into this?
claus
 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ghci-browse-and-output-capture.diff
Type: application/octet-stream
Size: 9091 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/cvs-ghc/attachments/20070906/3555106b/ghci-browse-and-output-capture.obj


More information about the Cvs-ghc mailing list