[ANN] eCompletion 3.0b1

Ruben Bakker ruben.bakker1 at gmail.com
Fri Mar 31 14:16:41 UTC 2006


Hi Chris,

I looked into the #mouseOverForKeyboardFocus matter. An eCompletion
menu now gives back the focus to the editors morph when entered with
the mouse. It only gets focus, when you click into the source code in
the detail pane. Would you mind to try it out and give me feedback how
it works?

You find the changed version here:
http://www.squeaksource.com/eCompletion/ECompletion-bar.79.mcz

Ruben

On 3/31/06, Chris Muller <chris at funkyobjects.org> wrote:
> Stunning.  Simply gorgeous.
>
> It is high time Squeak got a such a nice and serious productivity
> update to its core dev tools.  I knew someone would do it eventually.
> This level of auto-completion is finally on par with eclipse.
>
> It looks like you've really given great consideration to the subtle
> usability.  I *really* like the keyboard support; thank you for that.
> Good keyboard support really helps me go faster.
>
> Even the web site is gorgeous, simple and.. heh, uncomplex!  :)
>
> I had tried the previous version of eCompletion a while ago (still have
> it installed) but eventually turned it off because it doesn't seem to
> work well with #mouseOverForKeyboardFocus enabled.  I run with this on
> all the time just so I can easily close windows with command+w.  I'm
> always opening a (hierarchy or tracing-messages) browser and then
> conveniently closing via keyboard.  Ha!  Ironically, I suppose this has
> been my "poor-mans" ecompletion, I'll probably switch to the real thing
> now (I will miss command+w)..
>
> Thanks for the great contribution!
>  Chris
>
> PS - I hit a couple of notifications..  Here's one of them.
>
> 30 March 2006 9:52:44 pm
>
> VM: Win32 - a SmalltalkImage
> Image: Squeak3.8 [latest update: #6665]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir C:\Development\Chris\Development\Squeak
> Trusted Dir C:\Development\Chris\Development\Squeak\Chris
> Untrusted Dir C:\My Squeak\Chris
>
> UndefinedObject(Object)>>doesNotUnderstand: #model
>         Receiver: nil
>         Arguments and temporary variables:
>                 aMessage:       model
>         Receiver's instance variables:
> nil
>
> TextMorph>>keyStroke:
>         Receiver: a TextMorph(2873)
>         Arguments and temporary variables:
>                 evt:    [keystroke '<left>']
>                 action:         nil
>                 completionAllowed:      nil
>                 stringHolder:   nil
>         Receiver's instance variables:
>                 bounds:         522 at 482 corner: 894 at 652
>                 owner:  an ECDetailMorph(1665)
>                 submorphs:      #()
>                 fullBounds:     522 at 482 corner: 894 at 652
>                 color:  Color black
>                 extension:      a MorphExtension (1702) [other:  (autoFitContents ->
> false)]
>                 borderWidth:    0
>                 borderColor:    Color black
>                 textStyle:      a TextStyle Verdana
>                 text:   a Text for 'actionMap
>
>         ^EventManager actionMapFor: self'
>                 wrapFlag:       true
>                 paragraph:      a MultiNewParagraph
>                 editor:         nil
>                 container:      nil
>                 predecessor:    nil
>                 successor:      nil
>                 backgroundColor:        nil
>                 margins:        nil
>
> TextMorph>>handleKeystroke:
>         Receiver: a TextMorph(2873)
>         Arguments and temporary variables:
>                 anEvent:        [keystroke '<left>']
>                 pasteUp:        nil
>         Receiver's instance variables:
>                 bounds:         522 at 482 corner: 894 at 652
>                 owner:  an ECDetailMorph(1665)
>                 submorphs:      #()
>                 fullBounds:     522 at 482 corner: 894 at 652
>                 color:  Color black
>                 extension:      a MorphExtension (1702) [other:  (autoFitContents ->
> false)]
>                 borderWidth:    0
>                 borderColor:    Color black
>                 textStyle:      a TextStyle Verdana
>                 text:   a Text for 'actionMap
>
>         ^EventManager actionMapFor: self'
>                 wrapFlag:       true
>                 paragraph:      a MultiNewParagraph
>                 editor:         nil
>                 container:      nil
>                 predecessor:    nil
>                 successor:      nil
>                 backgroundColor:        nil
>                 margins:        nil
>
> KeyboardEvent>>sentTo:
>         Receiver: [keystroke '<left>']
>         Arguments and temporary variables:
>                 anObject:       a TextMorph(2873)
>         Receiver's instance variables:
>                 timeStamp:      35880924
>                 source:         a HandMorph(2006)
>                 type:   #keystroke
>                 buttons:        0
>                 position:       704 at 523
>                 handler:        nil
>                 wasHandled:     true
>                 keyValue:       28
>
>
> --- The full stack ---
> UndefinedObject(Object)>>doesNotUnderstand: #model
> TextMorph>>keyStroke:
> TextMorph>>handleKeystroke:
> KeyboardEvent>>sentTo:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> TextMorph(Morph)>>handleEvent:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> TextMorph(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> ECDetailMorph(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> ECMenuMorph(Morph)>>processEvent:using:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> PasteUpMorph(Morph)>>processEvent:using:
> PasteUpMorph>>processEvent:using:
> PasteUpMorph(Morph)>>processEvent:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendKeyboardEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
> processEvents.  capturingGesture := capturingGest...]}
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [] in Project class>>spawnNewProcess {[[World doOneCycle.  Processor
> yield.  false] whileFalse.  nil]}
> [] in BlockContext>>newProcess {[self value.  Processor
> terminateActive]}
>
>
>
> --- Ruben Bakker <ruben.bakker1 at gmail.com> wrote:
>
> > On SqueakMap you'll find a new release of eCompletion. There are a
> > bunch of new features to be tried and tested:
> >
> > - Integration with RoelTyper (created by Roel Wuyts) for better
> > instance variable type determination.
> > - New detail pane for current menu entry
> > - Open a (class, implementers) browser on a menu entry
> > - menu paging (PageUp, PageDown, Home, End)
> > - Character completion for quotes, brackets etc.
> > - Uses same colors as Shout
> > - Help
> >
> > 3.0b1 is beta, so I didn't publish it. In "Squeakmap Package Loader"
> > you need to open the eCompletion entry and install the version 3.0b1
> > by right clicking and choosing "install" on it.
> >
> > eCompletion got a new home: http://uncomplex.net/ecompletion. You'll
> > find more documentation there.
> >
> > Please don't hesitate to send me bug reports, suggestions and
> > feedback!
> >
> > Ruben
> >
> >
> >
>
>
>
>
>



More information about the Squeak-dev mailing list