The Trunk: Morphic-ul.472.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Morphic-ul.472.mcz

commits-2
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!