[squeak-dev] The Inbox: Morphic-cmm.760.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Feb 25 17:11:33 UTC 2015


A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-cmm.760.mcz

==================== Summary ====================

Name: Morphic-cmm.760
Author: cmm
Time: 25 February 2015, 11:10:50.52 am
UUID: cb56fac4-692f-4ad9-8b44-066b81780f66
Ancestors: Morphic-cmm.759

- Remove attempt to advance past "logical" expressions when typing closers with Auto Enclose because it causes it to advance past multiple consecutive identical closers, undesirably.

=============== Diff against Morphic-cmm.759 ===============

Item was changed:
  ----- Method: TextEditor>>dispatchOnKeyboardEvent: (in category 'typing support') -----
  dispatchOnKeyboardEvent: aKeyboardEvent 
  	"Carry out the action associated with this character, if any.  	Type-ahead is passed so some routines can flush or use it."
  	| honorCommandKeys openers closers result typedChar |
  	((typedChar := aKeyboardEvent keyCharacter) == Character cr and: [ morph acceptOnCR ]) ifTrue:
  		[ self closeTypeIn.
  		^ true ].
  	self clearParens.
  	aKeyboardEvent keyValue = 13 ifTrue:
  		[ aKeyboardEvent controlKeyPressed ifTrue: [ ^ self normalCharacter: aKeyboardEvent ].
  		aKeyboardEvent shiftPressed ifTrue: [ ^ self lf: aKeyboardEvent ].
  		aKeyboardEvent commandKeyPressed ifTrue: [ ^ self crlf: aKeyboardEvent ].
  		^ self crWithIndent: aKeyboardEvent ].
  	((honorCommandKeys := Preferences cmdKeysInText) and: [ typedChar = Character enter ]) ifTrue: [ ^ self dispatchOnEnterWith: aKeyboardEvent ].
  	"Special keys overwrite crtl+key combinations - at least on Windows. To resolve this
  	conflict, assume that keys other than cursor keys aren't used together with Crtl."
  	((self class specialShiftCmdKeys includes: aKeyboardEvent keyValue) and: [ aKeyboardEvent keyValue < 27 ]) ifTrue: [ ^ aKeyboardEvent controlKeyPressed
  			ifTrue:
  				[ self
  					perform: (self class shiftCmdActions at: aKeyboardEvent keyValue + 1)
  					with: aKeyboardEvent ]
  			ifFalse:
  				[ self
  					perform: (self class cmdActions at: aKeyboardEvent keyValue + 1)
  					with: aKeyboardEvent ] ].
  	"backspace, and escape keys (ascii 8 and 27) are command keys"
  	((honorCommandKeys and: [ aKeyboardEvent commandKeyPressed ]) or: [ self class specialShiftCmdKeys includes: aKeyboardEvent keyValue ]) ifTrue: [ ^ aKeyboardEvent shiftPressed
  			ifTrue:
  				[ self
  					perform: (self class shiftCmdActions at: aKeyboardEvent keyValue + 1)
  					with: aKeyboardEvent ]
  			ifFalse:
  				[ self
  					perform: (self class cmdActions at: aKeyboardEvent keyValue + 1)
  					with: aKeyboardEvent ] ].
  	"the control key can be used to invoke shift-cmd shortcuts"
  	(honorCommandKeys and: [ aKeyboardEvent controlKeyPressed ]) ifTrue: [ ^ self
  			perform: (self class shiftCmdActions at: aKeyboardEvent keyValue + 1)
  			with: aKeyboardEvent ].
  	openers := '([{'.
  	closers := ')]}'.
  	(closers includes: typedChar)
  		ifTrue:
  			[ self blinkPrevParen: typedChar.
  			self nextNonwhitespaceCharacter = typedChar
  				ifTrue:
+ 					[ self moveCursor: [ : position | position + 1 ] forward: true select: false.
- 					[ [self nextNonwhitespaceCharacter = typedChar] whileTrue: [self
- 						moveCursor: [ : position | position + 1 ]
- 						forward: true
- 						select: false ].
  					^ false ]
  				ifFalse: [ result := self normalCharacter: aKeyboardEvent ] ]
  		ifFalse: [ result := self normalCharacter: aKeyboardEvent ].
  	(self class autoEnclose and: [ openers includes: typedChar ]) ifTrue:
  		[ self
  			 addString: (closers at: (openers indexOf: typedChar)) asString ;
  			 insertTypeAhead ;
  			
  			moveCursor:
  				[ : position | position - 1 ]
  			forward: false
  			select: false ].
  	^ result!



More information about the Squeak-dev mailing list