[squeak-dev] The Trunk: ST80-mt.247.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Dec 4 14:10:15 UTC 2019


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

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

Name: ST80-mt.247
Author: mt
Time: 4 December 2019, 3:10:14.872613 pm
UUID: e48e8277-c924-4f2a-b37d-a80aa5b0c251
Ancestors: ST80-mt.246

Complements the browse-it features from Morphic-mt.1600. Well, kind of. Needs polishing for the cases that open two browser at once.

=============== Diff against ST80-mt.246 ===============

Item was changed:
  ----- Method: ParagraphEditor>>browseIt (in category 'menu messages') -----
  browseIt
+ 	"Launch a browser for the current selection, if appropriate."
- 	"Launch a browser for the current selection, if appropriate"
  
- 	| aSymbol |
- 	self flag: #yoCharCases.
- 
  	Preferences alternativeBrowseIt ifTrue: [^ self browseClassFromIt].
  
+ 	self lineSelectAndEmptyCheck: [^ view flash].
- 	self lineSelectAndEmptyCheck: [^ self].
- 	(aSymbol := self selectedSymbol) isNil ifTrue: [^ view flash].
  
+ 	self terminateAndInitializeAround: [
+ 
+ 	self flag: #todo. "mt: Active controller process will terminate if any new tool is opened. Find a way to open two tools in this method."
+ 
+ 	"First, try to show all accesses to instance or class variables."
+ 	self selectedInstanceVariable ifNotNil:
+ 		[:nameToClass | self systemNavigation
+ 				browseAllAccessesTo: nameToClass key
+ 				from: nameToClass value].
+ 	self selectedClassVariable ifNotNil:
+ 		[:binding | self systemNavigation browseAllCallsOn: binding].
+ 
+ 	"Then, either browse the class (from a binding) or all implementors of a selector."
+ 	self selectedBinding ifNotNil:
+ 		[:binding | self systemNavigation browseClass: binding].
+ 	self selectedSelector ifNotNil:
+ 		[:selector | self systemNavigation browseAllImplementorsOf: selector].
+ 	
+ 	]!
- 	self terminateAndInitializeAround:
- 		[aSymbol first isUppercase
- 			ifTrue: [| anEntry |
- 				anEntry := (Smalltalk at: aSymbol
- 					ifAbsent: [ self systemNavigation browseAllImplementorsOf: aSymbol.
- 						^ nil]).
- 				anEntry isNil ifTrue: [^ view flash].
- 				(anEntry isBehavior or: [ anEntry isTrait ])
- 					ifFalse: [ anEntry := anEntry class ].
- 				self systemNavigation browseClass: anEntry.
- 			] ifFalse:[ self systemNavigation browseAllImplementorsOf: aSymbol]]!

Item was added:
+ ----- Method: ParagraphEditor>>selectedClassVariable (in category 'menu messages') -----
+ selectedClassVariable
+ 	"Try to make a class-variable binding out of the current text selection."
+ 
+ 	(model respondsTo: #selectedClassOrMetaClass) ifFalse: [ ^ nil ].
+ 		
+ 	^ self selectedSymbol ifNotNil:
+ 		[ :symbol | model selectedClassOrMetaClass ifNotNil:
+ 			[ :classOrMetaClass | (classOrMetaClass theNonMetaClass allClassVarNames includes: symbol)
+ 				ifTrue: [ classOrMetaClass bindingOf: symbol ]
+ 				ifFalse: [ nil ] ] ]!

Item was changed:
  ----- Method: ParagraphEditor>>selectedInstanceVariable (in category 'menu messages') -----
  selectedInstanceVariable
+ 	"Try to make an association from an instance-variable name to the class where this variable is defined. Make the implementation robust for models that do not know about classes.
+ 	
+ 	Note that inst-var names might not have symbol a representation, only via their accessors."
- 	"Try to make an association from an instance-variable name to the class where this variable is defined. Make the implementation robust for models that do not know about classes."
  
  	(model respondsTo: #selectedClassOrMetaClass) ifFalse: [ ^ nil ].
  		
+ 	^ self selection string ifNotNil: 
- 	^ self selection string ifNotNil:
  		[ :token | model selectedClassOrMetaClass ifNotNil:
  			[ :behavior |
  				(behavior instVarIndexFor: token ifAbsent: [ 0 ]) ~= 0
  					ifTrue: [ token -> behavior ]
  					ifFalse: [ nil ] ] ]!



More information about the Squeak-dev mailing list