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 ] ] ] ]! |
Free forum by Nabble | Edit this page |