The Inbox: Morphic-jr.1325.mcz

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

The Inbox: Morphic-jr.1325.mcz

commits-2
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-jr.1325.mcz

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

Name: Morphic-jr.1325
Author: jr
Time: 3 March 2017, 3:28:29.825687 am
UUID: ec6312f8-a496-fe46-8c4e-e1ca155b499d
Ancestors: Morphic-tpr.1324

regard the model's environment in TextEditor

=============== Diff against Morphic-tpr.1324 ===============

Item was changed:
  ----- Method: TextEditor>>browseClassFromIt (in category 'menu messages') -----
  browseClassFromIt
  "Launch a hierarchy browser for the class indicated by the current selection.  If multiple classes matching the selection exist, let the user choose among them."
  | aClass |
  self lineSelectAndEmptyCheck: [ ^ self ].
  aClass := UIManager default
  classFromPattern: self selection string withBlanksTrimmed
+ withCaption: 'choose a class to browse...'
+ in: model environment.
- withCaption: 'choose a class to browse...'.
  aClass ifNil: [ ^ morph flash ].
+ self systemNavigation
- SystemNavigation default
  spawnHierarchyForClass: aClass
  selector: nil!

Item was changed:
  ----- Method: TextEditor>>browseIt (in category 'menu messages') -----
  browseIt
  "Launch a browser for the current selection, if appropriate"
 
  | aSymbol anEntry brow |
 
  Preferences alternativeBrowseIt ifTrue: [^ self browseClassFromIt].
 
  self lineSelectAndEmptyCheck: [^ self].
  (aSymbol := self selectedSymbol) isNil ifTrue: [^ morph flash].
 
  aSymbol first isUppercase
  ifTrue:
+ [anEntry := (model environment
+ valueOf: aSymbol
- [anEntry := (Smalltalk
- at: aSymbol
  ifAbsent:
  [ self systemNavigation browseAllImplementorsOf: aSymbol.
  ^ nil]).
  anEntry ifNil: [^ morph flash].
  (anEntry isKindOf: Class)
  ifFalse: [anEntry := anEntry class].
  brow := SystemBrowser default new.
  brow setClass: anEntry selector: nil.
  brow class
  openBrowserView: (brow openEditString: nil)
  label: 'System Browser']
  ifFalse:
  [self systemNavigation browseAllImplementorsOf: aSymbol]!

Item was changed:
  ----- Method: TextEditor>>compileSelectionFor:in: (in category 'do-its') -----
  compileSelectionFor: anObject in: evalContext
 
  | methodNode |
  methodNode := [Compiler new
  compileNoPattern: self selectionAsStream
  in: anObject class
  context: evalContext
+ environment: model environment
  notifying: self
  ifFail: [^nil]]
  on: OutOfScopeNotification
  do: [:ex | ex resume: true].
  ^ methodNode generateWithTempNames!

Item was changed:
  ----- Method: TextEditor>>evaluateSelectionAndDo: (in category 'do-its') -----
  evaluateSelectionAndDo: aBlock
  "Treat the current selection as an expression; evaluate it and invoke aBlock with the result."
  | result rcvr ctxt |
  self lineSelectAndEmptyCheck: [^ nil].
 
  (model respondsTo: #evaluateExpression:) ifTrue: [
  ^ aBlock value: (model perform: #evaluateExpression: with: self selection)].
 
  (model respondsTo: #doItReceiver)
  ifTrue: [ rcvr := model doItReceiver.
  ctxt := model doItContext]
  ifFalse: [rcvr := ctxt := nil].
  result := [
  rcvr class evaluatorClass new
  evaluate: self selectionAsStream
  in: ctxt
  to: rcvr
+ environment: (model environment ifNil: [Smalltalk globals])
  notifying: self
  ifFail: [morph flash. ^ nil]
  logged: true.
  ]
  on: OutOfScopeNotification
  do: [ :ex | ex resume: true].
 
  (model respondsTo: #expressionEvaluated:result:) ifTrue: [
  model perform: #expressionEvaluated:result: with: self selection with: result].
 
  ^aBlock value: result!

Item was changed:
  ----- Method: TextEditor>>referencesToIt (in category 'menu messages') -----
  referencesToIt
  "Open a MessageSet with the references to the selected global or variable name."
  | selection environment binding |
  self selection isEmpty ifTrue: [ self selectWord ].
  environment := (model respondsTo: #selectedClassOrMetaClass)
+ ifTrue: [ model selectedClassOrMetaClass ifNil: [ model environment ] ]
+ ifFalse: [ model environment ].
- ifTrue: [ model selectedClassOrMetaClass ifNil: [ Smalltalk globals ] ]
- ifFalse: [ Smalltalk globals ].
  selection := self selectedSymbol ifNil: [ self selection asString ].
  (environment isBehavior and:
  [ (environment
  instVarIndexFor: selection
  ifAbsent: [ 0 ]) ~= 0 ]) ifTrue: [ ^ self systemNavigation
  browseAllAccessesTo: selection
  from: environment ].
  selection isSymbol ifFalse: [ ^ morph flash ].
  binding := (environment bindingOf: selection) ifNil: [ ^ morph flash ].
  self systemNavigation browseAllCallsOn: binding!

Item was added:
+ ----- Method: TextEditor>>systemNavigation (in category 'as yet unclassified') -----
+ systemNavigation
+ ^ SystemNavigation for: model environment!