Assuming that you've loaded: * Monticello * the SqueakMap version of Refactory (Refactory-md.3.8.12) * my latest RB improvements (http://bike-nomad.com/squeak/Refactory-nk.3830.mcd)
you can try out some interesting tricks with the FinderTool and the new RewriteTool:
For instance:
* to find sends to globals that they don't understand (I have a Lint rule for this, but...) (this could also be done in the search pattern, as in the second example):
search for: `{:node :context | node isVariable and: [ Smalltalk includesKey: node name asSymbol ] } `@message: `@args
and use this condition: | what | what := Smalltalk at: aNode receiver name asSymbol. what notNil and: [ what ~~ Preferences and: [ (what respondsTo: aNode selector) not ]]
* to find references to all globals that aren't classes, search for:
`{:node :context | | what | node isVariable and: [ (what := Smalltalk at: node name ifAbsent: []) notNil and: [ what isBehavior not ] ] }
* to replace all menu constructors that use #labels:lines:selections: to use #addTranslatedList: instead (changing three parameters into one):
search for: `@Expression labels: `#labels lines: `#lines selections: `#selections
replace with: `@Expression addTranslatedList: `{:a | | labels lines selections list | labels := (a valueForPatternVariableNode: '`#labels') value findTokens: Character cr. lines := (a valueForPatternVariableNode: '`#lines') value. selections := (a valueForPatternVariableNode: '`#selections') value. list := labels with: selections collect: [ :l :s | { l. s. } ]. list := Array streamContents: [ :strm | list withIndexDo: [ :l :i | strm nextPut: l. (lines includes: i) ifTrue: [ strm nextPut: '-' ]]]. RBParser parseExpression: list storeString }
Enjoy,