The Trunk: System-cmm.251.mcz

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

The Trunk: System-cmm.251.mcz

commits-2
Chris Muller uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-cmm.251.mcz

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

Name: System-cmm.251
Author: cmm
Time: 13 February 2010, 3:56:48.909 pm
UUID: 957fecec-e199-4629-842e-fdc1a7dc8f61
Ancestors: System-dtl.250

- Enhanced browser invocation from a text-editor via Cmd+B.  The system is now aware that Type-Suggesting Parameter Names, a long-recognized Smalltalk best-practice, will frequently be used to spawn a browser.  Therefore, gross-motor skills (vs. fine) can be now used to spawn browsers on type-suggesting method-arguments, conserving developer time and energy.

=============== Diff against System-dtl.250 ===============

Item was changed:
  ----- Method: Utilities class>>classFromPattern:withCaption: (in category 'summer97 additions') -----
  classFromPattern: pattern withCaption: aCaption
  "If there is a class whose name exactly given by pattern, return it.
  If there is only one class in the system whose name matches pattern, return it.
  Otherwise, put up a menu offering the names of all classes that match pattern, and return the class chosen, else nil if nothing chosen.
  This method ignores tab, space, & cr characters in the pattern"
 
+ | toMatch potentialClassNames classNames exactMatch index lines reducedIdentifiers |
- | toMatch potentialClassNames classNames exactMatch index |
  (toMatch :=  pattern copyWithoutAll:
  {Character space.  Character cr.  Character tab})
  isEmpty ifTrue: [^ nil].
  Symbol hasInterned: toMatch ifTrue:
  [:patternSymbol | Smalltalk at: patternSymbol ifPresent:
  [:maybeClass | (maybeClass isKindOf: Class) ifTrue: [^ maybeClass]]].
 
  toMatch := (toMatch copyWithout: $.) asLowercase.
  potentialClassNames := (Smalltalk classNames , Smalltalk traitNames) asOrderedCollection.
  classNames := pattern last = $.
  ifTrue: [potentialClassNames select:
  [:nm |  nm asLowercase = toMatch]]
  ifFalse: [potentialClassNames select:
  [:n | n includesSubstring: toMatch caseSensitive: false]].
- classNames isEmpty ifTrue: [^ nil].
  exactMatch := classNames detect: [:each | each asLowercase = toMatch] ifNone: [nil].
+ lines := OrderedCollection new.
+ exactMatch ifNotNil: [ lines add: 1 ].
+ (reducedIdentifiers := pattern suggestedTypeNames select: [ :each | potentialClassNames includes: each ]) notEmpty
+ ifTrue:
+ [ classNames addAll: reducedIdentifiers.
+ lines add: 1 + classNames size + reducedIdentifiers size ].
-
  index := classNames size = 1
  ifTrue: [1]
  ifFalse: [exactMatch
+ ifNil: [UIManager default chooseFrom: classNames lines: lines title: aCaption]
- ifNil: [UIManager default chooseFrom: classNames lines: #() title: aCaption]
  ifNotNil: [classNames addFirst: exactMatch.
+ UIManager default chooseFrom: classNames lines: lines title: aCaption]].
- UIManager default chooseFrom: classNames lines: #(1) title: aCaption]].
  index = 0 ifTrue: [^ nil].
  ^ Smalltalk at: (classNames at: index) asSymbol
-
  "
  self classFromPattern: 'CharRecog' withCaption: ''
  self classFromPattern: 'rRecog' withCaption: ''
  self classFromPattern: 'znak' withCaption: ''
  self classFromPattern: 'orph' withCaption: ''
  self classFromPattern: 'TCompil' withCaption: ''
  "
  !

Item was added:
+ ----- Method: String>>suggestedTypeNames (in category '*system') -----
+ suggestedTypeNames
+ ^ Array streamContents:
+ [ : stream |
+ self withIndexDo:
+ [ : eachChar : index |
+ eachChar isUppercase ifTrue:
+ [ stream nextPut:
+ (self
+ copyFrom: index
+ to: self size) trimBlanks.
+ "Often, argument names that refer to Collections end in the letter s, which can cause the suggested type-name to not be found.  Account for this."
+ self last = $s
+ ifTrue:
+ [ stream nextPut:
+ (self
+ copyFrom: index
+ to: self size-1) trimBlanks ] ] ] ]!