[squeak-dev] The Trunk: Morphic-nice.1657.mcz

commits at source.squeak.org commits at source.squeak.org
Fri May 8 16:45:18 UTC 2020


Nicolas Cellier uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-nice.1657.mcz

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

Name: Morphic-nice.1657
Author: nice
Time: 8 May 2020, 6:45:14.165388 pm
UUID: 3ad63913-040d-4558-a021-19cb1240eb37
Ancestors: Morphic-nice.1656

Provide #selectIntervalInvisibly: for the interactive correction from the Parser.

See ST80-nice.254.

This replace the sends to select and deselect which should now (or in a very near future) be gone. Nuke'em all!

TextEditor: also avoid sending deselect to ourself now that we know that it will do nothing.

=============== Diff against Morphic-nice.1656 ===============

Item was removed:
- ----- Method: Editor>>deselect (in category 'current selection') -----
- deselect
- 	"Compatibility stub with st80"
- !

Item was added:
+ ----- Method: Editor>>selectIntervalInvisibly: (in category 'new selection') -----
+ selectIntervalInvisibly: anInterval
+ 	"Deselect, then select the specified characters inclusive.
+ 	 Do not yet make the new selection visible."
+ 
+ 	self selectInvisiblyFrom: anInterval first to: anInterval last!

Item was removed:
- ----- Method: PluggableTextMorph>>deselect (in category 'interactive error protocol') -----
- deselect
- 	^ textMorph editor deselect!

Item was removed:
- ----- Method: PluggableTextMorph>>select (in category 'interactive error protocol') -----
- select
- 	^ textMorph editor select!

Item was added:
+ ----- Method: PluggableTextMorph>>selectIntervalInvisibly: (in category 'interactive error protocol') -----
+ selectIntervalInvisibly: aSelectionInterval
+ 	^ textMorph editor selectIntervalInvisibly: aSelectionInterval!

Item was removed:
- ----- Method: SmalltalkEditor>>select (in category 'compatibility') -----
- select
- 	"Sent by the parser when correcting variables etc. Ignored here."!

Item was changed:
  ----- Method: TextEditor>>keyStroke: (in category 'events') -----
  keyStroke: anEvent
+  	self resetTypeAhead.
-  	self resetTypeAhead; deselect.
  
  	(self dispatchOnKeyboardEvent: anEvent) 
  		ifTrue: [
  			self closeTypeIn.
  			self storeSelectionInParagraph.
  			^self].
  
  	self openTypeIn.
  	self 
  		zapSelectionWith: self typeAhead contents; 
  		resetTypeAhead;
  		unselect;
  		storeSelectionInParagraph.!

Item was changed:
  ----- Method: TextEditor>>prettyPrint: (in category 'menu messages') -----
  prettyPrint: decorated 
  	"Reformat the contents of the receiver's view (a Browser or Workspace)."
  
  	model selectedClassOrMetaClass
  		ifNil: [ "arbitrary text selection in a workspace, not directly associated with a class"
  			(Compiler new formatNoPattern: self selection environment: model environment)
  				ifNotNilDo: [:newText | self replaceSelectionWith: newText]]
  		ifNotNil: [:selectedClass | "source for a method in the selected class"
  			(selectedClass newCompiler
  					format: self text
  					in: selectedClass
  					notifying: self
  					decorated: decorated)
  				ifNotNilDo: [ :newText |
+ 						self selectInvisiblyFrom: 1 to: paragraph text size.
- 						self deselect; selectInvisiblyFrom: 1 to: paragraph text size.
  						self replaceSelectionWith: (selectedClass ifNil: [newText] ifNotNil: [newText asText makeSelectorBoldIn: selectedClass]).
  						self selectAt: self text size + 1 ]].
  !

Item was changed:
  ----- Method: TextEditor>>zapSelectionWith: (in category 'mvc compatibility') -----
  zapSelectionWith: replacement
  
  	| start stop rep |
  	morph readOnly ifTrue: [^ self].
- 	self deselect.
  	start := self startIndex.
  	stop := self stopIndex.
  	(replacement isEmpty and: [stop > start]) ifTrue: [
  		"If deleting, then set emphasisHere from 1st character of the deletion"
  		emphasisHere := (self text attributesAt: start) select: [:att | att mayBeExtended]].
  	(start = stop and: [ replacement isEmpty ]) ifFalse: [
  		replacement isText
  			ifTrue: [ rep := replacement]
  			ifFalse: [ rep := Text string: replacement attributes: emphasisHere ].
  		self text replaceFrom: start to: stop - 1 with: rep.
  		paragraph
  			recomposeFrom: start
  			to:  start + rep size - 1
  			delta: rep size - (stop-start).
  		self markIndex: start pointIndex: start + rep size.
  		otherInterval := self selectionInterval].
  
  	self userHasEdited  " -- note text now dirty"!



More information about the Squeak-dev mailing list