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!
squeak-dev@lists.squeakfoundation.org