[Pkg] The Trunk: Morphic-mt.1051.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Nov 20 13:29:48 UTC 2015


Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1051.mcz

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

Name: Morphic-mt.1051
Author: mt
Time: 20 November 2015, 2:29:13.339 pm
UUID: ccdb7ba4-414d-4c5b-ac18-6b858c14b3ea
Ancestors: Morphic-mt.1050

Minor fix in text editor history. Do not create separate commands for consecutively typed separators.

Allows for search/replace tabs with spaces (or vice versa) in-place.

=============== Diff against Morphic-mt.1050 ===============

Item was changed:
  Editor subclass: #TextEditor
+ 	instanceVariableNames: 'model paragraph markBlock pointBlock beginTypeInIndex emphasisHere lastParenLocation otherInterval oldInterval typeAhead history previousKeyCharacter'
- 	instanceVariableNames: 'model paragraph markBlock pointBlock beginTypeInIndex emphasisHere lastParenLocation otherInterval oldInterval typeAhead history'
  	classVariableNames: 'AutoEnclose AutoIndent ChangeText FindText'
  	poolDictionaries: ''
  	category: 'Morphic-Text Support'!
  TextEditor class
  	instanceVariableNames: 'cmdActions shiftCmdActions yellowButtonMenu shiftedYellowButtonMenu'!
  
  !TextEditor commentStamp: '<historical>' prior: 0!
  See comment in Editor.
  
  My instances edit Text, this is, they support multiple lines and TextAttributes.
  They have no specific facilities for editing Smalltalk code. Those are found in SmalltalkEditor.!
  TextEditor class
  	instanceVariableNames: 'cmdActions shiftCmdActions yellowButtonMenu shiftedYellowButtonMenu'!

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 typedChar |
  	typedChar := aKeyboardEvent keyCharacter.
  	
+ 	"Create a new command for separating characters. Do not create separate commands for consecutive separators."
+ 	((Character separators includes: typedChar)
+ 		and: [(Character separators includes: previousKeyCharacter) not])
+ 			ifTrue: [self closeTypeIn].
+ 	previousKeyCharacter := typedChar.
- 	"Create a new command for separating characters."
- 	(Character separators includes: typedChar)
- 		ifTrue: [self closeTypeIn].
  	
  	"Handle one-line input fields."
  	(typedChar == Character cr and: [morph acceptOnCR])
  		ifTrue: [^ true].
  	
  	"Clear highlight for last opened parenthesis."
  	self clearParens.
  	
  	"Handle line breaks and auto indent."
  	typedChar == Character cr ifTrue: [
  		aKeyboardEvent controlKeyPressed
  			ifTrue: [^ self normalCharacter: aKeyboardEvent].
  		aKeyboardEvent shiftPressed
  			ifTrue: [^ self lf: aKeyboardEvent].
  		aKeyboardEvent commandKeyPressed
  			ifTrue: [^ self crlf: aKeyboardEvent].
  		^ self crWithIndent: aKeyboardEvent].
  
  	"Handle indent/outdent with selected text block."
  	typedChar == Character tab ifTrue: [
  		aKeyboardEvent shiftPressed
  			ifTrue: [self outdent: aKeyboardEvent. ^ true]
  			ifFalse: [self hasMultipleLinesSelected
  				ifTrue: [self indent: aKeyboardEvent. ^ true]]].
  
  	honorCommandKeys := Preferences cmdKeysInText.
  
  	(honorCommandKeys 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].
  
  	"Automatically enclose paired characters such as brackets."
  	self class autoEnclose
  		ifTrue: [((self hasSelection and: [self enclose: aKeyboardEvent])
  			or: [self autoEncloseFor: typedChar])
  				ifTrue: [^ true]].
  					
  	self normalCharacter: aKeyboardEvent.
  	^ false!



More information about the Packages mailing list