A few new Reinteract features

I had some time today to finish some Reinteract features I’ve been working on over the last few weeks, namely completion and mouse-over tooltips on the editor contents. Some screenshots:

Completion
Reinteract Completion

Tooltip showing documentation
Reinteract Docs Mouseover

Tooltip showing variable contents
Reinteract Variable Mouseover

The majority of features in my completion design notes are now implemented. (The design took the bold and innovative approach of “copy how completion works in Eclipse”). The main thing that’s still missing is assist for function parameters. But I’ll probably leave that to the side for the moment and turn to notebooks. And catching up with some bugs fixes. For one thing, the code used to format the variable tooltips should be easily reusable to fix a reported problem where accidentally displaying a large array in Reinteract makes it dead-slow.

11 Comments

  1. Posted December 9, 2007 at 3:59 pm | Permalink

    This is exciting, thanks! Is the completion code in your GIT repo yet? I can’t seem to work out how to activate completion.

    – Chris.

  2. Tim Kersten
    Posted December 9, 2007 at 4:18 pm | Permalink

    Hi Owen, I was eagerly awaiting such features 😀 . . . thank you!!!
    Is it committed to git yet? It does not seem to work with for me with the latest git.
    Cheers,
    Tim

  3. Tim Kersten
    Posted December 9, 2007 at 4:21 pm | Permalink

    Ignore that. I somehow missed you documentation which told me to press ctrl+space. 😀

  4. Owen
    Posted December 9, 2007 at 4:57 pm | Permalink

    Auto-activation after a period is typed mentioned in the notes, and would make sense, but doesn’t really solve the question about how to make the completion at other times discoverable.

    The cheap way out is a status bar that shows “Press ‘Control-Space’ for completions” enough that people see it and learn. But feedback how people would intuitively expect to trigger completion is appreciated. It’s possible that we can offer multiple keybindings for the action.

  5. Posted December 9, 2007 at 6:02 pm | Permalink

    Yeah, I think I’d like the conjunction of these — auto completion after a period, and a “Press ctrl+space for completions” at other times.

    – Chris.

  6. Tim Kersten
    Posted December 9, 2007 at 7:30 pm | Permalink

    I think a lot of developers will have very different preferences on the matter. I know several people that are very new to programming and python and like it when they are “assisted” automatically, without needing to activate it manually. I’ve noticed this several times and assume it’s liked as they don’t need to *know* or learn how it works before hand.
    I like the way autocompletion for python works in Ulipad. It pops up after no more than one second in most situations. Perhaps, for the sake of intuition, it is possible to implement autocompletion in a manor such as Ulipad, but the first time an autocompletion list is shown, a tooltip-like message would tell the user where the behaviour can be changed to, e.g. ctrl+space. That way it would be intuitive for anyone new to the editor, would suit the newbies, the lazy typists and experienced programmers.

    By the way, I really like your ideas on parameter hints and autocompletion.

    Cheers,
    Tim

  7. Posted December 9, 2007 at 10:27 pm | Permalink

    I just wanted to say that I love the work you are doing here. Really encouraging and cool. It’s not helping me (want to) learn matlab any quicker though 😉

    -Alex

  8. Posted December 9, 2007 at 10:40 pm | Permalink

    Oh, and I just realized that I have something actually constructive to add… In my lil toy editor, Jujitsu, I’ve got a “Context” sidebar which is shown as soon as you start typing. It lists all the local variables, arguments, and completions for the current word. I like it but it’s only-half written at this point.

    The sidebar only has a chance to be useful in strongly typed languages, unless something like Reinteract could be applied generally to arbitrary Python.

    I’ve idly wondered about creating an external side-effect guard, so you could be always testing the current code, and do basic full-program completion and error checking…

  9. David
    Posted March 16, 2009 at 9:04 am | Permalink

    I am a new user of reinteract, and I want to say that you made a great job. I love it. I am using it for more and more serious work. I used to work a lot with matlab, but I now do almost every thing on python. Your work is a step ahead in enjoyable productivity. Thanks a lot and keep the good work!

    David

  10. jim
    Posted March 23, 2009 at 8:22 pm | Permalink

    isnt this wrong???????

    x = [“Hello”, “world”]
    y = x
    y[1] = “Python”
    x==y
    False

  11. Owen
    Posted March 25, 2009 at 12:19 am | Permalink

    @David: thanks!

    @jim: it’s certainly not what Python does normally. Rather than thinking of it as wrong, though, I might say that Reinteract worksheets are in a language that is very, very close to Python, but behaves differently in a few corner cases. I take that attitude partly because making your example work like exactly like Python is extremely difficult. 🙂

    I’m going to close comments on this post, since it’s quite ancient. http://groups.google.com/group/reinteract is the main discussion forum for Reinteract.


%d bloggers like this: