[ANN] eCompletion 3.0b1

Chris Muller chris at funkyobjects.org
Fri Mar 31 04:02:11 UTC 2006


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