Levente Uzonyi uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ul.472.mcz ==================== Summary ==================== Name: Morphic-ul.472 Author: ul Time: 12 November 2010, 2:07:59.142 am UUID: 4b75bbb1-154b-dc4e-a09c-d00134f03b5b Ancestors: Morphic-ul.471 - fix for http://bugs.squeak.org/view.php?id=1005 - fix: if the opening bracket was the first character in the text editor, then it wasn't highlighted =============== Diff against Morphic-ul.471 =============== Item was changed: ----- Method: TextEditor>>blinkPrevParen: (in category 'parenblinking') ----- blinkPrevParen: aCharacter | openDelimiter closeDelimiter level string here hereChar | string := paragraph text string. here := pointBlock stringIndex. openDelimiter := aCharacter. closeDelimiter := '([{' at: (')]}' indexOf: openDelimiter). level := 1. + [level > 0 and: [here > 1]] - [level > 0 and: [here > 2]] whileTrue: [hereChar := string at: (here := here - 1). hereChar = closeDelimiter ifTrue: [level := level - 1. level = 0 ifTrue: [^ self blinkParenAt: here]] ifFalse: [hereChar = openDelimiter ifTrue: [level := level + 1]]]! Item was changed: ----- Method: TextEditor>>dispatchOnCharacter:with: (in category 'typing support') ----- dispatchOnCharacter: char with: typeAheadStream "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 | ((char == Character cr) and: [morph acceptOnCR]) ifTrue: [ sensor keyboard. "Gobble cr -- probably unnecessary." self closeTypeIn. ^ true]. self clearParens. char asciiValue = 13 ifTrue: [ sensor controlKeyPressed ifTrue: [ ^ self normalCharacter: typeAheadStream ]. sensor leftShiftDown ifTrue: [ ^ self lf: typeAheadStream ]. sensor commandKeyPressed ifTrue: [ ^ self crlf: typeAheadStream ]. ^ self crWithIndent: typeAheadStream ]. ((honorCommandKeys := Preferences cmdKeysInText) and: [char = Character enter]) ifTrue: [^ self dispatchOnEnterWith: typeAheadStream]. "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: char asciiValue) and: [char asciiValue < 27]) ifTrue: [^ sensor controlKeyPressed ifTrue: [self perform: (self class shiftCmdActions at: char asciiValue + 1) with: typeAheadStream] ifFalse: [self perform: (self class cmdActions at: char asciiValue + 1) with: typeAheadStream]]. "backspace, and escape keys (ascii 8 and 27) are command keys" ((honorCommandKeys and: [sensor commandKeyPressed]) or: [self class specialShiftCmdKeys includes: char asciiValue]) ifTrue: [^ sensor leftShiftDown ifTrue: [ self perform: (self class shiftCmdActions at: char asciiValue + 1) with: typeAheadStream] ifFalse: [ self perform: (self class cmdActions at: char asciiValue + 1) with: typeAheadStream]]. "the control key can be used to invoke shift-cmd shortcuts" (honorCommandKeys and: [sensor controlKeyPressed]) ifTrue: [ ^ self perform: (self class shiftCmdActions at: char asciiValue + 1) with: typeAheadStream]. openers := '([{'. closers := ')]}'. - (closers includes: char) ifTrue: [self blinkPrevParen]. result := self normalCharacter: typeAheadStream. + (closers includes: char) ifTrue: [self blinkPrevParen: char]. (self class autoEnclose and: [ openers includes: char ]) ifTrue: [ typeAheadStream nextPut: (closers at: (openers indexOf: char)). self insertTypeAhead: typeAheadStream. self moveCursor: [ : position | position-1 ] forward: false specialBlock: [ : pos | "no special behavior" ] select: false ]. ^ result! |
Free forum by Nabble | Edit this page |