help-smalltalk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-smalltalk] [please review] CharacterArray>>#%


From: Paolo Bonzini
Subject: [Help-smalltalk] [please review] CharacterArray>>#%
Date: Mon, 25 Jun 2007 15:40:08 +0200
User-agent: Thunderbird 2.0.0.4 (Macintosh/20070604)

I've just added CharacterArray>>#% to 2.3 and 3.0.

In 3.0 however I also want to change the callers. Could a brave soul help reviewing the attached patch?

Paolo
* looking for address@hidden/smalltalk--devo--2.2--patch-419 to compare with
* auto-adding address@hidden/smalltalk--devo--2.2--patch-419 to greedy revision 
library /Users/bonzinip/Archives/revlib
* found immediate ancestor revision in library 
(address@hidden/smalltalk--devo--2.2--patch-418)
* patching for this revision (address@hidden/smalltalk--devo--2.2--patch-419)
* comparing to address@hidden/smalltalk--devo--2.2--patch-419
M  scripts/Package.st
M  compiler/STFileParser.st
M  scripts/Getopt.st
M  blox/gtk/BloxBasic.st
M  blox/gtk/BloxText.st
M  examples/Publish.st
M  kernel/Regex.st
M  blox/tk/BloxBasic.st
M  blox/tk/BloxText.st
M  blox/tk/BloxWidgets.st
M  browser/ClassBrow.st
M  browser/ClassHierBrow.st
M  browser/Inspector.st
M  browser/test.st
M  compiler/STDecompiler.st
M  compiler/STSymTable.st
M  i18n/Locale.st
M  java/JavaTranslation.st
M  kernel/AnsiExcept.st
M  kernel/Behavior.st
M  kernel/CStruct.st
M  kernel/CharArray.st
M  kernel/Collection.st
M  kernel/CompildCode.st
M  kernel/Directory.st
M  kernel/Float.st
M  kernel/Object.st
M  kernel/Semaphore.st
M  kernel/SeqCollect.st
M  kernel/VFS.st
M  net/SMTP.st
M  net/httpd/FileServer.st
M  net/httpd/WebServer.st
M  net/httpd/WikiServer.st
M  tests/AnsiRun.st
M  tests/ackermann.st
M  tests/ary3.st
M  tests/except.st
M  tests/hash2.st
M  tests/lists1.st
M  tests/matrix.st
M  tests/prodcons.st
M  tests/sieve.st
M  xml/XML.st
M  xml/XPath.st
M  xml/XSL.st

* modified files

--- orig/blox/gtk/BloxBasic.st
+++ mod/blox/gtk/BloxBasic.st
@@ -575,10 +575,10 @@ getKeyPressEventNames: key
     ^(keySym size = 1 and: [ keySym first isLetter ])
        ifTrue: [
            "Use both the lowercase and uppercase variants"
-           { '<%1KeyPress-%2>' bindWith: mod with: keySym asLowercase.
-             '<%1KeyPress-%2>' bindWith: mod with: keySym asUppercase } ]
+           { '<%1KeyPress-%2>' % { mod. keySym asLowercase } .
+             '<%1KeyPress-%2>' % { mod. keySym asUppercase } } ]
        ifFalse: [
-           { '<%1KeyPress-%2>' bindWith: mod with: keySym } ]!
+           { '<%1KeyPress-%2>' % { mod. keySym } } ]!
 
 translateModifier: mod platform: platform
     | name |


--- orig/blox/gtk/BloxText.st
+++ mod/blox/gtk/BloxText.st
@@ -851,7 +851,7 @@ tag: name bind: event to: aSymbol of: an
        to: aSymbol
        of: anObject
        parameters: params
-       prefix: ('%1 tag bind %2' bindWith: self connected with: name)
+       prefix: ('%1 tag bind %2' % { self connected. name })
 ! !
 
 


--- orig/blox/tk/BloxBasic.st
+++ mod/blox/tk/BloxBasic.st
@@ -449,10 +449,10 @@ getKeyPressEventNames: key
     ^(keySym size = 1 and: [ keySym first isLetter ])
        ifTrue: [
            "Use both the lowercase and uppercase variants"
-           { '<%1KeyPress-%2>' bindWith: mod with: keySym asLowercase.
-             '<%1KeyPress-%2>' bindWith: mod with: keySym asUppercase } ]
+           { '<%1KeyPress-%2>' % { mod. keySym asLowercase }.
+             '<%1KeyPress-%2>' % { mod. keySym asUppercase } } ]
        ifFalse: [
-           { '<%1KeyPress-%2>' bindWith: mod with: keySym } ]!
+           { '<%1KeyPress-%2>' % { mod. keySym } } ]!
 
 translateModifier: mod platform: platform
     | name |
@@ -2694,6 +2694,6 @@ asTkImageString
 
     "R0lG is `GIF' in Base-64 encoding."
     ^(self match: 'R0lG*')
-        ifTrue: [ '{%1}' bindWith: self ]
+        ifTrue: [ '{%1}' % {self} ]
         ifFalse: [ self asTkString ]
 ! !


--- orig/blox/tk/BloxText.st
+++ mod/blox/tk/BloxText.st
@@ -807,10 +807,8 @@ destroyed
 
 from: aPoint to: endPoint
     ^'%1.%2 %3.%4'
-       bindWith: aPoint y printString
-       with: (aPoint x - 1) printString
-       with: endPoint y printString
-       with: (endPoint x - 1) printString
+       % { aPoint y printString.  (aPoint x - 1) printString.
+           endPoint y printString.  (endPoint x - 1) printString }
 !
 
 parseResult
@@ -835,7 +833,7 @@ tag: name bind: event to: aSymbol of: an
        to: aSymbol
        of: anObject
        parameters: params
-       prefix: ('%1 tag bind %2' bindWith: self connected with: name)
+       prefix: ('%1 tag bind %2' % { self connected. name })
 !
 
 widgetType


--- orig/blox/tk/BloxWidgets.st
+++ mod/blox/tk/BloxWidgets.st
@@ -879,8 +879,8 @@ label: value
 !BButton methodsFor: 'private'!
 
 create
-    self create: ('-highlightthickness 0 -takefocus 1 -command {callback %1 
invokeCallback} -font {', self class defaultFont, '}'
-       bindWith: self asOop printString)
+    self create: ('-highlightthickness 0 -takefocus 1 -command {callback %1 
invokeCallback} -font {%2}'
+       % { self asOop. self class defaultFont })
 !
 
 setInitialSize
@@ -3687,8 +3687,7 @@ initialize: parentWidget
     label := ''.
     exists := false.
     primitive := '%1.w%2'
-       bindWith: self parent container
-       with: (self asOop printString: 36).
+       % { self parent container. self asOop printString: 36 }).
 !
 
 newMenuItemFor: pair notifying: receiver


--- orig/browser/ClassBrow.st
+++ mod/browser/ClassBrow.st
@@ -41,7 +41,7 @@ nil!
 !ClassBrowser methodsFor: 'initializing'!
 
 createTopView
-    ^BrowserShell new: ('Class Browser on %1' bindWith: startingClass)!
+    ^BrowserShell new: ('Class Browser on %1' % { startingClass })!
 
 openOn: aClass 
     "Create and open a class hierarchy browser on startingClass"


--- orig/browser/ClassHierBrow.st
+++ mod/browser/ClassHierBrow.st
@@ -419,8 +419,7 @@ printHierarchyOf: dict hierarchy: desc s
            [:each | 
            | template |
            template := (dict at: each) ifTrue: ['%1%2'] ifFalse: ['%1(%2)'].
-           string := template bindWith: indent
-                       with: (each nameIn: self currentNamespace).
+           string := template % { indent. each nameIn: self currentNamespace }.
            shownClasses at: string put: each.
            stream nextPut: string.
            self 


--- orig/browser/Inspector.st
+++ mod/browser/Inspector.st
@@ -131,10 +131,10 @@ initFieldListsMenu
 open
     | pane |
     topView := BrowserShell new: ('Inspecting %1%2'
-       bindWith: (fieldList value isClass
+       % { fieldList value isClass
                        ifFalse: [ fieldList value class article, ' ' ]
-                       ifTrue: [ '' ])
-       with: (fieldList value class nameIn: Namespace current)).
+                       ifTrue: [ '' ].
+           fieldList value class nameIn: Namespace current }.
     topView data: self.
     topView blox 
        x: 20
@@ -322,7 +322,7 @@ currentFieldValue
 currentFieldString
     ^[ self currentFieldValue printString ] on: Error do: [ :ex |
        ex return: ('[%1 exception raised while printing item]'
-                       bindWith: ex class) ]!
+                       % { ex class }) ]!
 
 fieldsSortBlock
     "nil = use OrderedCollection, else a block to be used as fields'


--- orig/browser/test.st
+++ mod/browser/test.st
@@ -149,7 +149,7 @@ points: p coords: coords
 dropdownTest
     ^[ :win || cb name size label |
         cb := [
-            [ label font: ('{%1} %2' bindWith: name text with: size text) ]
+            [ label font: ('{%1} %2' % { name text. size text }) ]
                 on: ExAll
                 do: [ :sig | sig return ]
         ].


--- orig/compiler/STDecompiler.st
+++ mod/compiler/STDecompiler.st
@@ -880,8 +880,8 @@ source
      primitive names in the decompiled code."
 
     ^context method primitive > 0
-       ifTrue: [ '<primitive: %1>' bindWith:
-           (VMPrimitives keyAtValue: context method primitive) asString ]
+       ifTrue: [ '<primitive: %1>'
+                     % { VMPrimitives keyAtValue: context method primitive } ]
        ifFalse: [ '' ]!
 
 tags: source


--- orig/compiler/STFileParser.st
+++ mod/compiler/STFileParser.st
@@ -280,7 +280,7 @@ next
 
 name
     "Answer a string that represents what the receiver is streaming on"
-    ^'(%1 %2)' bindWith: self species article with: self species name
+    ^'(%1 %2)' % { self species article. self species name }
 !
 
 segmentFrom: startPos to: endPos


--- orig/compiler/STSymTable.st
+++ mod/compiler/STSymTable.st
@@ -209,7 +209,7 @@ declareTemporary: tempName canStore: can
        ifTrue: [(variables at: symbol) scope < scopes size
                     ifTrue: [stCompiler compileWarning:
                                  ('variable ''%1'' shadows another'
-                                        bindWith: tempName)]
+                                        % { tempName })]
                     ifFalse: [^stCompiler compileError:
                                   'duplicate variable name ', tempName]].
     variables at: symbol put: (STVariable


--- orig/examples/Publish.st
+++ mod/examples/Publish.st
@@ -884,7 +884,7 @@ Alphabetic list of classes:'.
        ('writing documentation into ', fileName, '.htm') displayNl.
        self publish: each onFile: fileName, '.htm'.
        aFileStream
-           nextPutAll: ('<A HREF="%1.htm">%1</A>' bindWith: fileName);
+           nextPutAll: ('<A HREF="%1.htm">%1</A>' % { fileName });
            nl.
     ].
 
@@ -989,10 +989,7 @@ Filed out from %1 on %2     %3 -->
     <TITLE>%4</TITLE>
 </HEAD>
 <BODY>
-' bindWith: Smalltalk version
-  with: (now at: 1) printString
-  with: (now at: 2) printString
-  with: self className).
+' % { Smalltalk version. now at: 1. now at: 2. self className }).
 
     self
        nextPutAll: '<DL><DT><B>Category: ';
@@ -1364,7 +1361,7 @@ emitHeader: now
 @section %1
 @clindex %1
 
-' bindWith: self className).
+' % { self className }).
 
     self
        nextPutAll: '@table @b'; nl;


--- orig/i18n/Locale.st
+++ mod/i18n/Locale.st
@@ -384,9 +384,7 @@ id
 languageDirectory: rootDirectory
     "Answer the directory where data files for the current language reside,
      given the root directory of the locale data."
-    ^'%1/%2'
-       bindWith: rootDirectory
-       with: self language!
+    ^'%1/%2' % { rootDirectory. self language }!
 
 languageDirectory
     "Answer the directory where data files for the current language reside."
@@ -396,10 +394,7 @@ territoryDirectory: rootDirectory
     "Answer the directory where data files for the current language,
      specific to the territory, reside, given the root directory of the
      locale data."
-    ^'%1/%2_%3'
-       bindWith: rootDirectory
-       with: self language
-       with: self territory!
+    ^'%1/%2_%3' % { rootDirectory. self language. self territory }!
 
 territoryDirectory
     "Answer the directory where data files for the current language,


--- orig/java/JavaTranslation.st
+++ mod/java/JavaTranslation.st
@@ -3756,7 +3756,7 @@ makeDirtyBlock
 !
 
 popIntoArray: anIndex
-    stream tab; nextPutAll: ('pop and store into array element[%1]' bindWith: 
anIndex); nl
+    stream tab; nextPutAll: ('pop and store into array element[%1]' % { 
anIndex }); nl
 !
 
 popJumpIfFalseTo: destination
@@ -3796,7 +3796,7 @@ pushGlobal: anObject
 !
 
 pushInstVar: anIndex
-    stream tab; nextPutAll: ('push Instance Variable[%1]' bindWith: anIndex); 
nl
+    stream tab; nextPutAll: ('push Instance Variable[%1]' % { anIndex }); nl
 !
 
 pushLiteral: anObject
@@ -3805,7 +3805,7 @@ pushLiteral: anObject
     (printString isNil or: [ printString size > 40 ]) ifTrue: [
         printString := anObject isClass
            ifTrue: [ anObject name displayString ]
-           ifFalse: [ '%1 %2' bindWith: anObject class article with: anObject 
class name displayString ]].
+           ifFalse: [ '%1 %2' % { anObject class article. anObject class name 
} ]].
 
     stream tab; nextPutAll: 'push '; nextPutAll: printString; nl
 !
@@ -3815,11 +3815,11 @@ pushSelf
 !
 
 pushTemporary: anIndex
-    stream tab; nextPutAll: ('push Temporary[%1]' bindWith: anIndex); nl
+    stream tab; nextPutAll: ('push Temporary[%1]' % { anIndex }); nl
 !
 
 pushTemporary: anIndex outer: scopes
-    stream tab; nextPutAll: ('push Temporary[%1] from outer context #%2' 
bindWith: anIndex with: scopes); nl
+    stream tab; nextPutAll: ('push Temporary[%1] from outer context #%2' % { 
anIndex. scopes }); nl
 !
 
 returnFromContext
@@ -3831,7 +3831,7 @@ returnFromMethod
 !
 
 send: aSymbol numArgs: anInteger
-    stream tab; nextPutAll: ('send %2 args message %1' bindWith: aSymbol 
storeString with: anInteger); nl
+    stream tab; nextPutAll: ('send %2 args message %1' % { aSymbol 
storeString. anInteger }); nl
 !
 
 storeGlobal: anObject
@@ -3839,19 +3839,19 @@ storeGlobal: anObject
 !
 
 storeInstVar: anIndex
-    stream tab; nextPutAll: ('store into Instance Variable[%1]' bindWith: 
anIndex); nl
+    stream tab; nextPutAll: ('store into Instance Variable[%1]' % { anIndex 
}); nl
 !
 
 storeTemporary: anIndex
-    stream tab; nextPutAll: ('store into Temporary[%1]' bindWith: anIndex); nl
+    stream tab; nextPutAll: ('store into Temporary[%1]' % { anIndex }); nl
 !
 
 storeTemporary: anIndex outer: scopes
-    stream tab; nextPutAll: ('store into Temporary[%1] from outer context #%2' 
bindWith: anIndex with: scopes); nl
+    stream tab; nextPutAll: ('store into Temporary[%1] from outer context #%2' 
% { anIndex. scopes }); nl
 !
 
 superSend: aSymbol numArgs: anInteger
-    stream tab; nextPutAll: ('send %2 args message %1 to super' bindWith: 
aSymbol with: anInteger); nl
+    stream tab; nextPutAll: ('send %2 args message %1 to super' % { aSymbol. 
anInteger }); nl
 ! !
 
 !TargetInstructionPrinter methodsFor: 'decoding bytecodes'!


--- orig/kernel/AnsiExcept.st
+++ mod/kernel/AnsiExcept.st
@@ -877,8 +877,7 @@ description
 
 messageText
     "Answer an exception's message text."
-    ^'%1: %2 element(s) missing' bindWith: self basicMessageText
-       with: self remainingCount!
+    ^'%1: %2 element(s) missing' % { self basicMessageText. self 
remainingCount }!
 
 remainingCount
     "Answer the number of items that were to be read."
@@ -913,7 +912,7 @@ description
 
 messageText
     "Answer an exception's message text."
-    ^'Invalid value %1: %2' bindWith: self value with: self basicMessageText!
+    ^'Invalid value %1: %2' % { self value. self basicMessageText }!
 
 value
     "Answer the object that was found to be invalid."
@@ -927,9 +926,7 @@ value: anObject
 
 messageText
     "Answer an exception's message text."
-    ^'Invalid argument %1: %2'
-       bindWith: self value
-       with: self basicMessageText! !
+    ^'Invalid argument %1: %2' % { self value. self basicMessageText }! !
 
 !SystemExceptions.AlreadyDefined methodsFor: 'accessing'!
 
@@ -994,8 +991,7 @@ description
 
 messageText
     "Answer an exception's message text."
-    ^'Invalid index %1: %2'
-       bindWith: self value with: self basicMessageText!
+    ^'Invalid index %1: %2' % { self value. self basicMessageText }!
 
 collection
     "Answer the collection that triggered the error"
@@ -1062,7 +1058,7 @@ messageText
     self validClasses isNil
        ifTrue: [ ^'Invalid argument ', self value printString ].
     ^'Invalid argument %1: must be %2'
-       bindWith: self value with: self validClassesString!
+       % { self value. self validClassesString }!
 
 validClasses
     "Answer the list of classes whose instances would have been valid."
@@ -1255,9 +1251,8 @@ signalOn: selector useInstead: aSymbol
 
 messageText
     "Answer an exception's message text."
-    ^'%1, use %2 instead'
-       bindWith: self basicMessageText
-       with: self suggestedSelector storeString!
+    ^'%1, use %2 instead' %
+       { self basicMessageText. self suggestedSelector storeString }!
 
 selector
     "Answer which selector was sent."


--- orig/kernel/Behavior.st
+++ mod/kernel/Behavior.st
@@ -101,7 +101,7 @@ createGetMethod: what default: value
     ^self compile: ('%1
     "Answer the receiver''s %1. Its default value is %2"
     %1 isNil ifTrue: [ %1 := %2 ].
-    ^%1' bindWith: what with: value)
+    ^%1' % { what. value })
 !
 
 createGetMethod: what
@@ -109,7 +109,7 @@ createGetMethod: what
 
     ^self compile: ('%1
     "Answer the receiver''s %1"
-    ^%1' bindWith: what)
+    ^%1' % { what })
 !
 
 createSetMethod: what
@@ -120,7 +120,7 @@ createSetMethod: what
     
     ^self compile: ('%1: %2
     "Set the receiver''s %1 to %2"
-    %1 := %2' bindWith: what with: parameter)
+    %1 := %2' % { what. parameter })
 !
 
 defineAsyncCFunc: cFuncNameString
@@ -134,9 +134,7 @@ defineAsyncCFunc: cFuncNameString
     code := (
 '%1
     <asyncCCall: ''%2'' args: #%3>')
-       bindWith: selectorAndArgs
-       with: cFuncNameString
-       with: argsArray printString.
+       % { selectorAndArgs. cFuncNameString. argsArray printString }.
 
     ^self compile: code ifError: [ :file :line :error | code error: error ].
 !
@@ -153,10 +151,8 @@ defineCFunc: cFuncNameString
     code := (
 '%1
     <cCall: ''%2'' returning: %3 args: #%4>')
-       bindWith: selectorAndArgs
-       with: cFuncNameString
-       with: returnTypeSymbol storeString
-       with: argsArray printString.
+       % { selectorAndArgs. cFuncNameString. returnTypeSymbol storeString.
+           argsArray printString }.
 
     ^self compile: code ifError: [ :file :line :error | code error: error ].
 !
@@ -1123,7 +1119,7 @@ name
     "Answer the class name; this prints to the name of the superclass
      enclosed in braces.  This class name is used, for example, to print
      the receiver."
-    ^'{%1}' bindWith: self asClass printString
+    ^'{%1}' % { self asClass }
 ! !
 
 


--- orig/kernel/CStruct.st
+++ mod/kernel/CStruct.st
@@ -210,8 +210,7 @@ computeTypeString: type block: aBlock
 
     type isSymbol ifFalse: [
        typeString := '#{%1} value type'
-           bindWith: ((type value nameIn: Namespace current)
-           copyReplaceAll: $  with: $.).
+           % { type value nameIn: Namespace current }.
 
        ^aBlock value: type value value: typeString.
     ].


--- orig/kernel/CharArray.st
+++ mod/kernel/CharArray.st
@@ -305,14 +305,14 @@ subStrings: aCharacter
 
 bindWith: s1
     "Answer the receiver with every %1 replaced by the displayString of s1"
-    ^self bindWithArguments: { s1 }
+    ^self % { s1 }
 !
 
 bindWith: s1 with: s2
     "Answer the receiver with every %1 or %2 replaced by s1 or s2,
      respectively.  s1 and s2 are `displayed' (i.e. their
      displayString is used) upon replacement."
-    ^self bindWithArguments: { s1. s2 }
+    ^self % { s1. s2 }
 !
 
 bindWith: s1 with: s2 with: s3
@@ -320,7 +320,7 @@ bindWith: s1 with: s2 with: s3
      respectively.  s1, s2 and s3 are `displayed' (i.e. their
      displayString is used) upon replacement."
 
-    ^self bindWithArguments: { s1. s2. s3 }
+    ^self % { s1. s2. s3 }
 !
 
 bindWith: s1 with: s2 with: s3 with: s4
@@ -328,7 +328,7 @@ bindWith: s1 with: s2 with: s3 with: s4
      or s4, respectively.  s1, s2, s3 and s4 are `displayed' (i.e. their
      displayString is used) upon replacement."
 
-    ^self bindWithArguments: { s1. s2. s3. s4 }
+    ^self % { s1. s2. s3. s4 }
 !
 
 bindWithArguments: anArray
@@ -338,6 +338,16 @@ bindWithArguments: anArray
      %<trueString|falseString>n is replaced with one of the two
      strings depending on the n-th element of anArray being true or false."
 
+    ^self % anArray
+!
+
+% anArray
+    "Answer the receiver with every %n (1<=n<=9) replaced by the n-th element
+     of anArray.  The replaced elements are `displayed' (i.e. their
+     displayString is used).  In addition, the special pattern
+     %<trueString|falseString>n is replaced with one of the two
+     strings depending on the n-th element of anArray being true or false."
+
     | result wasPercent pattern char ifTrue ifFalse |
     result := WriteStream on: (self copyEmpty: self size + 20).
     wasPercent := false.


--- orig/kernel/Collection.st
+++ mod/kernel/Collection.st
@@ -519,8 +519,8 @@ inspect
        output := [ object printString ]
                      on: Error
                      do: [ :ex | ex return: ('%1 %2'
-                                     bindWith: object class article
-                                     with: object class name asString) ].
+                                     % { object class article.
+                                      object class name asString }) ].
 
        Transcript nextPutAll: '  ';
            nextPutAll: (instVars at: i);
@@ -534,8 +534,8 @@ inspect
        output := [ obj printString ]
                      on: Error
                      do: [ :ex | ex return: ('%1 %2'
-                                     bindWith: obj class article
-                                     with: obj class name asString) ].
+                                     % { obj class article.
+                                      obj class name asString }) ].
        Transcript 
            nextPutAll: '    ';
            nextPutAll: output;


--- orig/kernel/CompildCode.st
+++ mod/kernel/CompildCode.st
@@ -394,8 +394,8 @@ inspect
        output := [ object printString ]
                      on: Error
                      do: [ :ex | ex return: ('%1 %2'
-                                     bindWith: object class article
-                                     with: object class name asString) ].
+                                     % { object class article.
+                                      object class name asString }) ].
        Transcript
            nextPutAll: '  ';
            nextPutAll: (instVars at: i);
@@ -727,31 +727,31 @@ invalidOpcode: aStream
     aStream tab; nextPutAll: 'invalid opcode'; nl!
 
 pushInstVar: anIndex with: aStream
-    aStream tab; nextPutAll: ('push Instance Variable[%1]' bindWith: anIndex); 
nl!
+    aStream tab; nextPutAll: ('push Instance Variable[%1]' % { anIndex }); nl!
 
 storeInstVar: anIndex with: aStream
-    aStream tab; nextPutAll: ('store into Instance Variable[%1]' bindWith: 
anIndex); nl!
+    aStream tab; nextPutAll: ('store into Instance Variable[%1]' % { anIndex 
}); nl!
 
 popIntoArray: anIndex with: aStream
-    aStream tab; nextPutAll: ('pop and store into array element[%1]' bindWith: 
anIndex); nl!
+    aStream tab; nextPutAll: ('pop and store into array element[%1]' % { 
anIndex }); nl!
 
 pushTemporary: anIndex outer: scopes with: aStream
-    aStream tab; nextPutAll: ('push Temporary[%1] from outer context #%2' 
bindWith: anIndex with: scopes); nl!
+    aStream tab; nextPutAll: ('push Temporary[%1] from outer context #%2' % { 
anIndex. scopes }); nl!
 
 storeTemporary: anIndex outer: scopes with: aStream
-    aStream tab; nextPutAll: ('store into Temporary[%1] from outer context 
#%2' bindWith: anIndex with: scopes); nl!
+    aStream tab; nextPutAll: ('store into Temporary[%1] from outer context 
#%2' % { anIndex. scopes }); nl!
 
 pushTemporary: anIndex with: aStream
-    aStream tab; nextPutAll: ('push Temporary[%1]' bindWith: anIndex); nl!
+    aStream tab; nextPutAll: ('push Temporary[%1]' % { anIndex }); nl!
 
 storeTemporary: anIndex with: aStream
-    aStream tab; nextPutAll: ('store into Temporary[%1]' bindWith: anIndex); 
nl!
+    aStream tab; nextPutAll: ('store into Temporary[%1]' % { anIndex }); nl!
 
 pushLiteral: anObject with: aStream
     | printString |
     printString := anObject printString.
     (anObject isClass not and: [ printString size > 30 ])
-       ifTrue: [ printString := '%1 %2' bindWith: anObject class article with: 
anObject class name asString ].
+       ifTrue: [ printString := '%1 %2' % { anObject class article. anObject 
class name asString } ].
 
     aStream tab; nextPutAll: 'push '; nextPutAll: printString; nl!
 
@@ -795,10 +795,10 @@ jumpTo: destination with: aStream
     aStream tab; nextPutAll: 'jump to '; print: destination; nl!
 
 superSend: aSymbol numArgs: anInteger with: aStream
-    aStream tab; nextPutAll: ('send %2 args message %1 to super' bindWith: 
aSymbol with: anInteger); nl!
+    aStream tab; nextPutAll: ('send %2 args message %1 to super' % { aSymbol. 
anInteger }); nl!
 
 send: aSymbol numArgs: anInteger with: aStream
-    aStream tab; nextPutAll: ('send %2 args message %1' bindWith: aSymbol 
with: anInteger); nl!
+    aStream tab; nextPutAll: ('send %2 args message %1' % { aSymbol. anInteger 
}); nl!
 
 bytecodeIndex: byte with: aStream
     "Private - Print the bytecode index for byte"


--- orig/kernel/Directory.st
+++ mod/kernel/Directory.st
@@ -120,17 +120,14 @@ append: fileName to: directory
        ifTrue: [
            (fileName at: 1) isPathSeparator ifTrue: [
                ^(directory size >= 2 and: [ (directory at: 2) = $: ])
-                   ifTrue: [ '%1:%2' bindWith: directory first with: fileName ]
+                   ifTrue: [ '%1:%2' % { directory first. fileName } ]
                    ifFalse: [ fileName ] ].
             (fileName size >= 2 and: [ (fileName at: 2) = $: ])
                ifTrue: [ ^fileName ] ].
 
     ^(directory at: directory size) isPathSeparator
        ifTrue: [ directory, fileName ]
-       ifFalse: [ '%1%2%3'
-           bindWith: directory
-           with: self pathSeparator
-           with: fileName ]
+       ifFalse: [ directory, self pathSeparatorString, fileName ]
 !
 
 pathSeparator


--- orig/kernel/Float.st
+++ mod/kernel/Float.st
@@ -420,14 +420,11 @@ printOn: aStream special: whatToPrintArr
 
     "First, take care of the easy cases."
     self isNaN ifTrue: [
-       ^aStream nextPutAll:
-           ((whatToPrintArray at: 3) bindWith: self class) ].
+       ^aStream nextPutAll: ((whatToPrintArray at: 3) % { self class }) ].
     self = self class infinity ifTrue: [
-       ^aStream nextPutAll:
-           ((whatToPrintArray at: 1) bindWith: self class) ].
+       ^aStream nextPutAll: ((whatToPrintArray at: 1) % { self class }) ].
     self = self class negativeInfinity ifTrue: [
-       ^aStream nextPutAll:
-           ((whatToPrintArray at: 2) bindWith: self class) ].
+       ^aStream nextPutAll: ((whatToPrintArray at: 2) % { self class }) ].
 
     "We deal only with positive values."
     me := self abs.


--- orig/kernel/Object.st
+++ mod/kernel/Object.st
@@ -598,8 +598,8 @@ inspect
        output := [ object printString ]
                      on: Error
                      do: [ :ex | ex return: ('%1 %2'
-                                     bindWith: object class article
-                                     with: object class name asString) ].
+                                     % { object class article.
+                                         object class name asString }) ].
 
         i <= instVars size
            ifTrue: [


--- orig/kernel/Regex.st
+++ mod/kernel/Regex.st
@@ -558,7 +558,7 @@ copyFrom: from to: to replacingRegex: pa
     "Returns the substring of the receiver between from and to.  
      If pattern has a match in that part of the string, the match
      is replaced with str after substituting %n sequences with the 
-     captured subexpressions of the match (as in #bindWithArguments:)."
+     captured subexpressions of the match (as in #%)."
     | regs beg end repl res |
     regs := self searchRegex: pattern from: from to: to.
 
@@ -566,7 +566,7 @@ copyFrom: from to: to replacingRegex: pa
        ifTrue: [
            beg := regs from.
            end := regs to.
-           repl := str bindWithArguments: regs.
+           repl := str % regs.
            res := self species new: (to - from) - (end - beg) + repl size.
            res replaceFrom: 1 to: beg - from with: self startingAt: from.
            res replaceFrom: beg - from + 1 to: beg - from + repl size with: 
repl.
@@ -579,7 +579,7 @@ copyFrom: from to: to replacingRegex: pa
 copyReplacingRegex: pattern with: str
     "Returns the receiver after replacing the first match of pattern (if
      any) with str.  %n sequences present in str are substituted with the 
-     captured subexpressions of the match (as in #bindWithArguments:)."
+     captured subexpressions of the match (as in #%)."
 
     ^self copyFrom: 1 to: self size replacingRegex: pattern with: str
 !
@@ -588,7 +588,7 @@ copyFrom: from to: to replacingAllRegex:
     "Returns the substring of the receiver between from and to.  
      Any match of pattern in that part of the string is replaced with
      str after substituting %n sequences with the captured subexpressions
-     of the match (as in #bindWithArguments:)."
+     of the match (as in #%)."
 
     | res idx regex beg end regs |
     regex := pattern asRegex.
@@ -601,7 +601,7 @@ copyFrom: from to: to replacingAllRegex:
        beg := regs from.
        end := regs to.
        res next: beg - idx putAll: self startingAt: idx.
-       res nextPutAll: (str bindWithArguments: regs).
+       res nextPutAll: (str % regs).
        idx := end + 1.
        beg > end ifTrue: [ res nextPut: (self at: idx). idx := idx + 1 ].
        idx > self size ifTrue: [ ^res contents ].
@@ -614,7 +614,7 @@ copyFrom: from to: to replacingAllRegex:
 copyReplacingAllRegex: pattern with: str
     "Returns the receiver after replacing all the matches of pattern (if
      any) with str.  %n sequences present in str are substituted with the 
-     captured subexpressions of the match (as in #bindWithArguments:)."
+     captured subexpressions of the match (as in #%)."
 
     ^self copyFrom: 1 to: self size replacingAllRegex: pattern with: str
 !


--- orig/kernel/Semaphore.st
+++ mod/kernel/Semaphore.st
@@ -103,9 +103,7 @@ printOn: aStream
     aStream
         nextPutAll: self class name;
         nextPutAll: ('(%1: %<free|held>2, %3 %<available signals|waiting 
processes>2)'
-           bindWith: self name printString
-           with: self signals > 0
-           with: self signals abs)! !
+           % { self name printString. self signals > 0. self signals abs })! !
 
 
 !Semaphore methodsFor: 'private'!


--- orig/kernel/SeqCollect.st
+++ mod/kernel/SeqCollect.st
@@ -77,8 +77,8 @@ inspect
        output := [ object printString ]
                      on: Error
                      do: [ :ex | ex return: ('%1 %2'
-                                     bindWith: object class article
-                                     with: object class name asString) ].
+                                     % { object class article.
+                                         object class name asString }) ].
 
        Transcript nextPutAll: '  ';
            nextPutAll: (instVars at: i);
@@ -92,8 +92,8 @@ inspect
        output := [ obj printString ]
                      on: Error
                      do: [ :ex | ex return: ('%1 %2'
-                                     bindWith: obj class article
-                                     with: obj class name asString) ].
+                                     % { obj class article.
+                                         obj class name asString }) ].
        Transcript 
            nextPutAll: '    [';
            print: i;


--- orig/kernel/VFS.st
+++ mod/kernel/VFS.st
@@ -680,7 +680,7 @@ vfsFor: file name: fsName subPath: subPa
 
     command := self fileTypes at: fsName.
     temp := FileStream openTemporaryFile: Directory temporary, '/vfs'.
-    Smalltalk system: (command bindWith: file with: temp name).
+    Smalltalk system: (command % { file. temp name }).
     ^self new name: file realFileName: temp name! !
 
 
@@ -874,10 +874,7 @@ vfsFor: file name: fsName
 createDir: dirName
     "Create a subdirectory of the receiver, naming it dirName."
 
-    Smalltalk system: command,
-       (' mkdir %1 %2'
-           bindWith: self name
-           with: dirName)!
+    Smalltalk system: ('%1 mkdir %2 %3' % { command. self name. dirName })!
 
 do: aBlock
     "Evaluate aBlock once for each file in the directory represented by the
@@ -897,11 +894,8 @@ extractMember: anArchiveMemberHandler
     ^extractedFiles at: anArchiveMemberHandler ifAbsentPut: [
        | temp |
         temp := FileStream openTemporaryFile: Directory temporary, '/vfs'.
-        Smalltalk system: command,
-           (' copyout %1 %2 %3'
-               bindWith: self name
-               with: anArchiveMemberHandler name
-               with: temp name).
+        Smalltalk system: ('%1 copyout %2 %3 %4'
+           % { command. self name. anArchiveMemberHandler name. temp name }).
 
         File fullNameFor: temp name
     ]!
@@ -948,26 +942,17 @@ removeMember: anArchiveMemberHandler
        ifTrue: [ 'rmdir' ]
        ifFalse: [ 'rm' ].
 
-    Smalltalk system: command,
-       (' %1 %2 %3'
-           bindWith: subcmd
-           with: self name
-           with: anArchiveMemberHandler name)!
+    Smalltalk system: ('%1 %2 %3 %4'
+       % { command. subcmd. self name. anArchiveMemberHandler name. })!
 
 updateMember: anArchiveMemberHandler
     "Update the member represented by anArchiveMemberHandler by
      copying the file into which it was extracted back to the
      archive."
 
-    | temp |
-    temp := FileStream openTemporaryFile: Directory temporary, '/vfs'.
-    Smalltalk system: command,
-       (' copyin %1 %2 %3'
-           bindWith: self name
-           with: anArchiveMemberHandler name
-           with: anArchiveMemberHandler realFileName).
-
-    ^temp name!
+    Smalltalk system: ('%1 copyin %2 %3 %4'
+       % { command. self name. anArchiveMemberHandler name.
+           anArchiveMemberHandler realFileName })!
 
 refresh
     "Extract the directory listing from the archive"


--- orig/net/SMTP.st
+++ mod/net/SMTP.st
@@ -83,9 +83,7 @@ example2Host: host
     "self example2Host: 'localhost'."
 
     | user message client |
-    user := 'address@hidden'
-       bindWith: (Smalltalk getenv: 'USER')
-       with: IPAddress localHostName.
+    user := 'address@hidden' % { Smalltalk getenv: 'USER'. IPAddress 
localHostName }.
 
     message := MIME.MimeEntity readFrom:
 ('From: ', user, '
@@ -106,9 +104,7 @@ exampleHost: host
     "self exampleHost: 'localhost'."
 
     | user message client |
-    user := 'address@hidden'
-       bindWith: (Smalltalk getenv: 'USER')
-       with: IPAddress localHostName.
+    user := 'address@hidden' % { Smalltalk getenv: 'USER'. IPAddress 
localHostName }.
     message := MIME.MimeEntity readFrom:
 ('From: ', user, '
 To: ', user, '


--- orig/net/httpd/FileServer.st
+++ mod/net/httpd/FileServer.st
@@ -678,9 +678,7 @@ contentLength
 !MultiRangeResponse methodsFor: 'caching'!
 
 getBoundary
-    ^'------%1-!-GST-!-%2'
-       bindWith: Time secondClock printString
-       with: Time millisecondClock printString!
+    ^'------%1-!-GST-!-%2' % { Time secondClock. Time millisecondClock }!
     
 mimeType
     "Cache the MIME type as computed by the FileResponse implementation"


--- orig/net/httpd/WebServer.st
+++ mod/net/httpd/WebServer.st
@@ -1138,7 +1138,7 @@ authorizer: aString
     authorizer := aString!
 
 challengeFor: aServlet
-    ^'Basic realm="%1"' bindWith: aServlet name!
+    ^'Basic realm="%1"' % { aServlet name }!
 
 authorize: aRequest in: aServlet ifAuthorized: aBlock
     ^(self authorize: aRequest)


--- orig/net/httpd/WikiServer.st
+++ mod/net/httpd/WikiServer.st
@@ -1276,10 +1276,9 @@ sendBody
 emitMatchList
     self findMatches.
     referringPages isEmpty ifTrue: [ ^self emitNoMatches ].
-    self heading: [self << ((referringPages size = 1
-               ifTrue: ['There is 1 reference to the phrase:']
-               ifFalse: ['There are %1 references to the phrase:'])
-               bindWith: referringPages size printString)].
+    self heading: [
+       self << ('There %<is|are>2 %1 reference%<|s>2 to the phrase:'
+               % { referringPages size. referringPages size = 1 })].
     self << '<I>  ...'; << self searchString; << '...</I>'; lineBreak.
     self << '<UL>'; nl.
     referringPages do: [:each | self listItem: [self linkToPage: each]].


--- orig/scripts/Getopt.st
+++ mod/scripts/Getopt.st
@@ -40,5 +40,5 @@ Getopt
        o := opt ifNil: [ '' ].
        pat := o isString ifTrue: [ '--%1 %2' ] ifFalse: [ '-%1 %2' ].
        a := arg ifNil: [ '' ].
-       (pat bindWith: o with: a) displayNl ]
+       (pat % { o. a }) displayNl ]
     ifError: [ 'ERROR' displayNl ]


--- orig/scripts/Package.st
+++ mod/scripts/Package.st
@@ -98,30 +98,25 @@ Kernel.PackageDirectories subclass: Pack
 
 File extend [
     emitRemove [
-       ('rm -f %1' bindWith: self) displayNl
+       ('rm -f %1' % { self }) displayNl
     ]
 
     emitSymlink: dest [
        self isDirectory ifTrue: [ ^(Directory name: dest) emitMkdir ].
-
-       ('$LN_S -f %1 %2'
-               bindWith: self
-               with: (File name: dest)) displayNl
+       ('$LN_S -f %1 %2' % { self. File name: dest }) displayNl
     ]
 
     emitInstall: dest [
        | mode |
        mode := self isExecutable ifTrue: [ 8r755 ] ifFalse: [ 8r644 ].
        ('$INSTALL -m %1 %2 %3'
-               bindWith: (mode printString: 8)
-               with: self
-               with: (File name: dest)) displayNl
+           % { mode printString: 8. self. File name: dest }) displayNl
     ]
 ]
 
 Directory extend [
     emitMkdir [
-       ('$mkdir_p %1' bindWith: self) displayNl
+       ('$mkdir_p %1' % { self }) displayNl
     ]
 ]
 


--- orig/tests/AnsiRun.st
+++ mod/tests/AnsiRun.st
@@ -35,7 +35,7 @@ Transcript message: stdout -> #nextPutAl
 
 Smalltalk arguments do: [ :each || results |
     results := (Smalltalk at: each asSymbol) suite run.
-    Transcript showCr: ('%1: %2' bindWith: each with: results printString).
+    Transcript showCr: ('%1: %2' % { each. results }).
     results failureCount > 0 ifTrue: [ results failures printNl ].
     results errorCount > 0 ifTrue: [ results errors printNl ].
     results correctCount < results runCount ifTrue: [ ObjectMemory quit: 1 ]


--- orig/tests/ackermann.st
+++ mod/tests/ackermann.st
@@ -41,6 +41,6 @@ Eval [
        ifTrue: [ 4 ]
        ifFalse: [ Smalltalk arguments first asInteger ].
        
-    ('Ack(3,%1): %2' bindWith: n with: (3 ack: n)) displayNl
+    ('Ack(3,%1): %2' % { n. (3 ack: n) }) displayNl
 
 ]


--- orig/tests/ary3.st
+++ mod/tests/ary3.st
@@ -38,5 +38,5 @@ Eval [
     1000 timesRepeat: [
         n to: 1 by: -1 do: [ :i | y at: i put: (y at: i) + (x at: i) ]
     ].
-    ('%1 %2' bindWith: y first with: y last) displayNl
+    ('%1 %2' % { y first. y last }) displayNl
 ]


--- orig/tests/except.st
+++ mod/tests/except.st
@@ -72,6 +72,6 @@ Eval [
            ifFalse: [ 1 max: Smalltalk arguments first asInteger ].
     
     1 to: n do: [ :each | each someFunction ].
-    ('Exceptions: HI=%1 / LO=%2'
-           bindWith: HiException count with: LoException count) displayNl
+    ('Exceptions: HI=%1 / LO=%2' % { HiException count. LoException count })
+       displayNl
 ]


--- orig/tests/hash2.st
+++ mod/tests/hash2.st
@@ -43,8 +43,9 @@ Eval [
         hash1 keysAndValuesDo: [ :k :v |
            hash2 at: k put: (hash2 at: k ifAbsent: [0]) + v ]].
 
-    ('%1 %2 %3 %4' bindWith: (hash1 at: 'foo_1')
-       with: (hash1 at: 'foo_9999')
-       with: (hash2 at: 'foo_1')
-       with: (hash2 at: 'foo_9999')) displayNl
+    ('%1 %2 %3 %4' % {
+       hash1 at: 'foo_1'.
+       hash1 at: 'foo_9999'.
+       hash2 at: 'foo_1'.
+       hash2 at: 'foo_9999' }) displayNl
 ]


--- orig/tests/lists1.st
+++ mod/tests/lists1.st
@@ -36,7 +36,7 @@ SmallInteger extend [
         [ a isEmpty ] whileFalse: [
            b addLast: a removeLast ].
 
-        ('%1 %2' bindWith: (b at: 1) with: (b at: 2)) displayNl.
+        ('%1 %2' % { b at: 1. b at: 2 }) displayNl.
 
         b := b reverse.
         (b includes: 0) printNl.
@@ -56,7 +56,7 @@ SmallInteger extend [
         sum printNl.
         a := a, b.
 
-        ('%1 %2' bindWith: a size with: a last) displayNl
+        ('%1 %2' % { a size. a last }) displayNl
     ]
 ]
 


--- orig/tests/matrix.st
+++ mod/tests/matrix.st
@@ -77,7 +77,9 @@ Eval [
     m1 := Array newMatrix: size columns: size.
     m2 := Array newMatrix: size columns: size.
     n timesRepeat: [ mm := m1 mmult: m2 ].
-    ('%1 %2 %3 %4' bindWith: (mm atXY: address@hidden)
-        with: (mm atXY: address@hidden) with: (mm atXY: address@hidden)
-        with: (mm atXY: address@hidden)) displayNl
+    ('%1 %2 %3 %4' % {
+       mm atXY: address@hidden
+        mm atXY: address@hidden
+       mm atXY: address@hidden
+        mm atXY: address@hidden }) displayNl
 ]


--- orig/tests/prodcons.st
+++ mod/tests/prodcons.st
@@ -41,5 +41,5 @@ Eval [
     
     join wait.
     join wait.
-    ('%1 %2' bindWith: produced with: consumed) displayNl
+    ('%1 %2' % { produced. consumed }) displayNl
 ]


--- orig/tests/sieve.st
+++ mod/tests/sieve.st
@@ -44,5 +44,5 @@ Eval [
                count := count + 1 ]].
     ].
 
-    ('Count: %1' bindWith: count) displayNl
+    ('Count: %1' % { count }) displayNl
 ]


--- orig/xml/XML.st
+++ mod/xml/XML.st
@@ -1739,7 +1739,7 @@ definition: aPattern
     definition := aPattern!
 
 description
-    ^'an <%1> element' bindWith: tag!
+    ^'an <%1> element' % { tag }!
 
 elementNamed: elementName
     | list |
@@ -2076,8 +2076,7 @@ completeValidationAgainst: aParser
     ndata isNil
        ifFalse: [aParser dtd notationAt: ndata ifAbsent:
                        [aParser invalid: ('Unparsed entity "%1" uses an 
undeclared notation "%2"'
-                                       bindWith: name
-                                       with: ndata)]]! !
+                                       % { name. ndata })]]! !
 
 !SAXDriver methodsFor: 'other'!
 
@@ -2692,7 +2691,7 @@ normalizeFor: aParser
                        ifFalse: [aParser malformed: 'Incomplete translation'].
                (self duplicatesNeedTested and: [t hasDuplicatesInFollowSet])
                        ifTrue: [aParser warn: ('Nondeterministic content model 
%1'
-                                                       bindWith: self 
printString)].
+                                                       % { self })].
                done add: t.
                t followSet do: [:t1 |
                        (done includes: t1) ifFalse: [list add: t1]]].
@@ -2854,7 +2853,7 @@ named: aName
 !NamePattern methodsFor: 'accessing'!
 
 description
-    ^'<%1>' bindWith: name!
+    ^'<%1>' % { name }!
 
 name
     ^name! !
@@ -3041,7 +3040,7 @@ next
     large values of ch. If primitive failure code can not be trusted to do
     this, then the bounds check would have to be added back."
     (ch isNil or: [(CharacterClasses at: ch asInteger + 1) > 0])
-       ifFalse: [parser errorHandler fatalError: (BadCharacterSignal new 
messageText:('A character with Unicode value %1 is not legal' bindWith: ch 
asInteger))].
+       ifFalse: [parser errorHandler fatalError: (BadCharacterSignal new 
messageText:('A character with Unicode value %1 is not legal' % { ch asInteger 
}))].
     ^ch!
 
 skip: n
@@ -3517,8 +3516,7 @@ hasExpanded: anEntity
     [s == nil] whileFalse:
        [s entity == anEntity
                ifTrue: [self malformed: ('The %1 entity "%2" invokes itself 
recursively'
-                                       bindWith: anEntity entityType
-                                       with: anEntity name)].
+                                       % { anEntity entityType. anEntity name 
})].
        s := s nextLink].
     ^false!
 
@@ -3918,7 +3916,7 @@ PERef: refType
                exp := self dtd parameterEntityAt: nm.
                exp == nil
                        ifTrue: [self warn: ('The parameter entity "%1" has not 
been defined'
-                                               bindWith: nm)].
+                                               % { nm })].
                exp == nil
                        ifTrue: [self isValidating
                                ifTrue:
@@ -4060,7 +4058,7 @@ charEntity: data startedIn: str1
     large values of ch. If primitive failure code can not be trusted to do
     this, then the bounds check would have to be added back."
     (CharacterClasses at: n + 1) = 0
-       ifTrue: [sax fatalError: (BadCharacterSignal new messageText:('A 
character with Unicode value %1 is not legal' bindWith: n))].
+       ifTrue: [sax fatalError: (BadCharacterSignal new messageText:('A 
character with Unicode value %1 is not legal' % { n }))].
     data nextPut: (Character value: n).
     self getNextChar!
 
@@ -4071,7 +4069,7 @@ closeTag: tag
     self skipSpace.
     self mustFind: '>'.
     nm = tag
-       ifFalse: [self malformed: ('The close tag for %1 was not found' 
bindWith: tag asString)].
+       ifFalse: [self malformed: ('The close tag for %1 was not found' % { tag 
asString })].
     sax endElement: nm namespace localName: nm type qName: nm asString.
     elementStack last definesNamespaces
        ifTrue: [elementStack last namespaces
@@ -4176,7 +4174,7 @@ elementContent: tag openedIn: str
     braceCount := 0.
     buffer reset.
     [hereChar == nil
-       ifTrue: [self malformed: ('The end tag for <%1> was expected' bindWith: 
tag)].
+       ifTrue: [self malformed: ('The end tag for <%1> was expected' % { tag 
})].
     hereChar == $<
        ifTrue:
                [braceCount := 0.
@@ -4239,7 +4237,7 @@ generalEntityInText: str canBeExternal: 
     exp == nil
        ifTrue:
                [msg := 'The general entity "%1" has not been defined'
-                                               bindWith: nm.
+                                               % { nm }.
                self isValidating
                        ifTrue: [self invalid: msg]
                        ifFalse: [self warn: msg].
@@ -4270,7 +4268,7 @@ popTag
     self isValidating
        ifTrue:
                [elementStack last canTerminate
-                       ifFalse: [self invalid: ('One of %1 was expected, but 
none was found' bindWith: elementStack last followSetDescription)]].
+                       ifFalse: [self invalid: ('One of %1 was expected, but 
none was found' % { elementStack last followSetDescription })]].
     elementStack removeLast.!
 
 pushNewTag: nm
@@ -4287,13 +4285,13 @@ pushNewTag: nm
                                types == nil
                                        ifTrue: [self invalid:
                                                ('"%1" is not permitted at this 
point in the "%2" node'
-                                                       bindWith: nm asString
-                                                       with: elm tag 
asString)].
+                                                       % { nm asString.
+                                                       elm tag asString })].
                                elm types: types].
                elementStack addLast: (ElementContext new tag: nm).
                p := self dtd elementFor: nm from: self.
                p == nil
-                       ifTrue: [self invalid: ('Using a tag (%1) without 
declaring it is not permitted' bindWith: nm asString)].
+                       ifTrue: [self invalid: ('Using a tag (%1) without 
declaring it is not permitted' % { nm asString })].
                elementStack last type: p]
        ifFalse:
                [elementStack addLast: (ElementContext new tag: nm)]!
@@ -4357,7 +4355,7 @@ attType
                                        'ENTITY' 'ENTITIES'
                                        'NMTOKEN' 'NMTOKENS').
                (all includes: nm)
-                       ifFalse: [self malformed: ('One of %1 was expected, but 
none was found' bindWith: all storeString)].
+                       ifFalse: [self malformed: ('One of %1 was expected, but 
none was found' % { all })].
                type := #(#{NOTATION_AT} #{CDATA_AT} #{ID_AT}
                                        #{IDREF_AT} #{IDREFS_AT}
                                        #{ENTITY_AT} #{ENTITIES_AT}
@@ -4586,7 +4584,7 @@ checkReservedAttributes: nm type: type v
                        ifFalse: [self malformed: 'xml:space must have a value 
of "preserve" or "default"']].!
 
 illegalLanguageCode: value
-    self malformed: ('Illegal value (%1) for xml:lang' bindWith: value)!
+    self malformed: ('Illegal value (%1) for xml:lang' % { value })!
 
 isValidName: aTag
     aTag size = 0 ifTrue: [^false].
@@ -4615,7 +4613,7 @@ processAttributes: nm
                attributes addLast: (self attributeFor: nm).
                (attributes collect: [:i | i tag asString]) asSet size = 
attributes size
                        ifFalse: [self malformed: ('The attribute "%1" was used 
twice in this element''s tag'
-                                                       bindWith: attributes 
last tag asString)]].
+                                                       % { attributes last tag 
asString })]].
     self isValidating
        ifTrue: [attributes := self validateAttributes: attributes for: nm].
     attributes := self resolveNamespaces: attributes.
@@ -4642,7 +4640,7 @@ validateAttributes: attributes for: tag
     attributeList do: [:i |
        (attr includesKey: i key asString)
                ifFalse: [self invalid: ('the attribute %1 was not defined in 
the DTD'
-                                                       bindWith: i key)]].
+                                                       % { i key })]].
     attr do: [:adef | | a |
        a := attributeList detect: [:at | at key isLike: adef name] ifNone: [].
        a == nil
@@ -4654,8 +4652,8 @@ validateAttributes: attributes for: tag
                                                (Attribute name: adef name 
value: adef default)]
                        ifFalse: [adef isRequired
                                ifTrue: [self invalid: ('"%1" elements are 
required to have a "%2" attribute'
-                                                               bindWith: tag 
asString
-                                                               with: adef name 
asString)]]]
+                                                               % { tag 
asString.
+                                                               adef name 
asString })]]]
                ifFalse: [adef validateValueOf: a for: self]].
     ^attributeList size = 0
        ifTrue: [nil]
@@ -4665,12 +4663,12 @@ validateAttributes: attributes for: tag
 
 checkUnresolvedIDREFs
     (self isValidating and: [unresolvedIDREFs isEmpty not])
-       ifTrue: [self invalid: ('The IDREFs %1 have not been resolved to IDs' 
bindWith: unresolvedIDREFs asSortedCollection asArray)]!
+       ifTrue: [self invalid: ('The IDREFs %1 have not been resolved to IDs' % 
{ unresolvedIDREFs asSortedCollection asArray })]!
 
 registerID: attribute
     latestID := attribute value.
     (definedIDs includes: latestID)
-       ifTrue: [self invalid: ('The id "%1" was used more than once' bindWith: 
latestID)].
+       ifTrue: [self invalid: ('The id "%1" was used more than once' % { 
latestID })].
     definedIDs add: latestID.
     unresolvedIDREFs remove: latestID ifAbsent: []!
 
@@ -4797,7 +4795,7 @@ documentNode
     ^self document!
 
 expected: string
-    self malformed: ('%1 expected, but not found' bindWith: string)!
+    self malformed: ('%1 expected, but not found' % { string })!
 
 expectedWhitespace
     self malformed: 'White space expected but not found'!
@@ -4863,12 +4861,12 @@ validateEncoding: encName
     c := encName first.
     (c asInteger < 128 and: [c isLetter])
        ifFalse: [self malformed: ('The first letter of the encoding ("%1") 
must be an ASCII alphabetic letter'
-                                       bindWith: encName)].
+                                       % { encName })].
     2 to: encName size do: [:i |
        c := encName at: i.
        (c asInteger < 128 and: [c isLetter or: [c isDigit or: ['._-' includes: 
c]]])
                ifFalse: [self malformed: ('A letter in the encoding name 
("%1") must be ''.'', ''_'', ''-'', or an ASCII letter or digit'
-                                       bindWith: encName)]]!
+                                       % { encName })]]!
 
 warn: aMessage
     sax warning: (WarningSignal new messageText: aMessage)!
@@ -4979,7 +4977,7 @@ findNamespace: ns
        nsURI = nil ifFalse: [^nsURI]].
     ^ns = ''
        ifTrue: ['']
-       ifFalse: [self invalid: ('The namespace qualifier %1 has not been bound 
to a namespace URI' bindWith: ns)]!
+       ifFalse: [self invalid: ('The namespace qualifier %1 has not been bound 
to a namespace URI' % { ns })]!
 
 resolveNamespaces: attributes
     | newAttributes showDecls t1 t2 k |
@@ -5008,8 +5006,8 @@ resolveNamespaces: attributes
                                        (t1 type = t2 type and: [t1 namespace = 
t2 namespace])
                                                ifTrue:
                                                        [self malformed: ('The 
attributes "%1" and "%2" have the same namespace and type'
-                                                                       
bindWith: t1 asString
-                                                                       with: 
t2 asString).
+                                                                       % { t1 
asString.
+                                                                       t2 
asString }).
                                                        k := newAttributes 
size].
                                        k := k + 1]]].
     elementStack last tag: (self correctTag: elementStack last tag).
@@ -5641,9 +5639,9 @@ validateValueOf: anAttribute for: aParse
     type validateValueOf: anAttribute for: aParser.
     (self isFixed not or: [anAttribute value = self default])
        ifFalse: [aParser invalid: ('The attribute "%1" was declared FIXED, but 
the value used in the document ("%2") did not match the default ("%3")'
-                                       bindWith: anAttribute tag asString
-                                       with: anAttribute value
-                                       with: self default)].! !
+                                       % { anAttribute tag asString.
+                                           anAttribute value.
+                                           self default })].! !
 
 !AttributeDef methodsFor: 'private'!
 
@@ -5905,22 +5903,22 @@ attributeFor: key subKey: k2 from: anErr
     | val |
     (val := attributeDefs at: key asString ifAbsent: []) == nil
        ifTrue: [anErrorReporter invalid: ('The attribute "%1 %2" has not been 
defined'
-                                               bindWith: key asString
-                                               with: k2 asString)].
+                                               % { key asString.
+                                                   k2 asString })].
     ^val at: k2 asString
        ifAbsent: [anErrorReporter invalid: ('The attribute "%1 %2" has not 
been defined'
-                                               bindWith: key asString
-                                               with: k2 asString)]!
+                                               % { key asString.
+                                                   k2 asString })]!
 
 attributeFor: key subKey: k2 put: value from: anErrorReporter
     | dict |
     dict := attributeDefs at: key asString ifAbsentPut: [Dictionary new].
     (dict includesKey: k2 asString)
        ifTrue: [^anErrorReporter warn: ('The attribute "%1 %2" has been 
defined more than once'
-                               bindWith: key asString
-                               with: k2 asString)].
+                               % { key asString.
+                                   k2 asString })].
     (value type isID and: [dict contains: [:attr | attr type isID]])
-       ifTrue: [^anErrorReporter invalid: ('The element %1 has two attributes 
typed as ID' bindWith: key asString)].
+       ifTrue: [^anErrorReporter invalid: ('The element %1 has two attributes 
typed as ID' % { key asString })].
     dict at: k2 asString put: value!
 
 attributesFor: key
@@ -5943,7 +5941,7 @@ elementFor: key from: anErrorReporter
     | val |
     (val := elementDefs at: key asString ifAbsent: []) == nil
        ifTrue: [anErrorReporter warn: ('The element "%1" has not been defined'
-                                               bindWith: key asString)].
+                                               % { key asString })].
     ^val!
 
 elementFor: key put: value from: anErrorReporter
@@ -5951,7 +5949,7 @@ elementFor: key put: value from: anError
        ifTrue:
                [| msg |
                msg := ('The element "%1" has been defined more than once'
-                                       bindWith: key asString).
+                                       % { key asString }).
                anErrorReporter isValidating
                        ifTrue: [anErrorReporter invalid: msg]
                        ifFalse: [anErrorReporter warn: msg]].
@@ -5977,7 +5975,7 @@ generalEntityAt: key
 generalEntityAt: key put: value from: anErrorReporter
     (generalEntities includesKey: key)
        ifTrue: [^anErrorReporter warn: ('The general entity "%1" has been 
defined more than once'
-                                       bindWith: key)].
+                                       % { key })].
     generalEntities at: key put: value!
 
 notationAt: name from: anErrorReporter
@@ -5997,7 +5995,7 @@ parameterEntityAt: key
 parameterEntityAt: key put: value from: anErrorReporter
     (parameterEntities includesKey: key)
        ifTrue: [^anErrorReporter warn: ('The parameter entity "%1" has been 
defined more than once'
-                                       bindWith: key)].
+                                       % { key })].
     parameterEntities at: key put: value! !
 
 !DocumentType methodsFor: 'private'!
@@ -6133,8 +6131,7 @@ completeValidationAgainst: aParser from:
     typeNames do: [:nm |
        aParser dtd notationAt: nm ifAbsent:
                [aParser invalid: ('Undeclared Notation "%1" used by attribute 
type "%2"'
-                                               bindWith: nm
-                                               with: anAttributeDef tag 
asString)]]!
+                                               % { nm. anAttributeDef tag 
asString })]]!
 
 validateValueOf: anAttribute for: aParser
     | v |
@@ -6142,9 +6139,8 @@ validateValueOf: anAttribute for: aParse
     v := anAttribute value.
     (typeNames includes: v)
        ifFalse: [aParser invalid: ('A NOTATION attribute (%1="%2") should have 
had a value from %3.'
-                               bindWith: anAttribute tag asString
-                               with: v
-                               with: typeNames asArray)].! !
+                               % { anAttribute tag asString
+                                   v. typeNames asArray })].! !
 
 !NOTATION_AT class methodsFor: 'instance creation'!
 
@@ -6161,8 +6157,7 @@ validateValueOf: anAttribute for: aParse
        ifTrue: [aParser invalid: 'white space must not occur in NMTOKEN 
attributes'].
     (aParser isValidNmToken: v)
        ifFalse: [aParser invalid: ('An NMTOKEN attribute (%1="%2") does not 
match the required syntax of an NmToken.'
-                               bindWith: anAttribute tag asString
-                               with: v)]! !
+                               % { anAttribute tag asString. v })]! !
 
 !IDREF_AT methodsFor: 'validating'!
 
@@ -6174,8 +6169,7 @@ validateValueOf: anAttribute for: aParse
        ifTrue: [aParser invalid: 'white space must not occur in IDREF 
attributes'].
     (aParser isValidName: v)
        ifFalse: [aParser invalid: ('An IDREF attribute (%1="%2") does not 
match the required syntax of a Name.'
-                               bindWith: anAttribute tag asString
-                               with: v)].
+                               % { anAttribute tag asString. v })].
     aParser rememberIDREF: v! !
 
 !NMTOKENS_AT methodsFor: 'validating'!
@@ -6187,8 +6181,7 @@ validateValueOf: anAttribute for: aParse
     (all := self stringAsTokens: v) do: [:nm |
        (aParser isValidNmToken: nm)
                ifFalse: [aParser invalid: ('An NMTOKENS attribute (%1="%2") 
does not match the required syntax of a list of NmTokens.'
-                               bindWith: anAttribute tag asString
-                               with: v)]].
+                               % { anAttribute tag asString. v })]].
     all size = 0 ifTrue: [aParser invalid: 'Attribute has empty list of 
NMTOKENS'].! !
 
 !ENTITY_AT methodsFor: 'validating'!
@@ -6208,17 +6201,14 @@ validateValueOf: anAttribute for: aParse
        ifTrue: [aParser invalid: 'white space must not occur in ENTITY 
attributes'].
     (aParser isValidName: v)
        ifFalse: [aParser invalid: ('An ENTITY attribute (%1="%2") does not 
match the required syntax of a Name.'
-                               bindWith: anAttribute tag asString
-                               with: v)].
+                               % { anAttribute tag asString. v })].
     ent := aParser dtd generalEntityAt: v.
     ent == nil
        ifTrue: [aParser invalid: ('Undeclared unparsed entity "%1" used by 
attribute type "%2"'
-                                       bindWith: v
-                                       with: anAttribute tag asString)]
+                                       % { v. anAttribute tag asString })]
        ifFalse: [ent isParsed
                ifTrue: [aParser invalid: ('The entity "%1" used by attribute 
type "%2" is a parsed entity and should be unparsed'
-                                               bindWith: v
-                                               with: anAttribute tag asString)]
+                                               % { v. anAttribute tag asString 
})]
                ifFalse: []]! !
 
 !CDATA_AT methodsFor: 'validating'!
@@ -6240,8 +6230,7 @@ validateValueOf: anAttribute for: aParse
        ifTrue: [aParser invalid: 'white space must not occur in ID 
attributes'].
     (aParser isValidName: v)
        ifFalse: [aParser invalid: ('An ID attribute (%1="%2") does not match 
the required syntax of a Name.'
-                               bindWith: anAttribute tag asString
-                               with: v)].
+                               % { anAttribute tag asString. v })].
     aParser registerID: anAttribute! !
 
 !ID_AT methodsFor: 'testing'!
@@ -6265,9 +6254,8 @@ validateValueOf: anAttribute for: aParse
     v := anAttribute value.
     (values includes: v)
        ifFalse: [aParser invalid: ('An attribute (%1="%2") should have had a 
value from %3.'
-                               bindWith: anAttribute tag asString
-                               with: v
-                               with: values asArray)]! !
+                               % { anAttribute tag asString. v
+                                   values asArray })]! !
 
 !Enumeration_AT class methodsFor: 'instance creation'!
 
@@ -6283,8 +6271,7 @@ validateValueOf: anAttribute for: aParse
     (all := self stringAsTokens: v) do: [:nm |
        (aParser isValidName: nm)
                ifFalse: [aParser invalid: ('An IDREFS attribute (%1="%2") does 
not match the required syntax of a list of Names.'
-                               bindWith: anAttribute tag asString
-                               with: v)].
+                               % { anAttribute tag asString. v })].
        aParser rememberIDREF: nm].
     all size = 0 ifTrue: [aParser invalid: 'Attribute has empty list of 
IDREFS'].! !
 
@@ -6304,17 +6291,14 @@ validateValueOf: anAttribute for: aParse
     (all := self stringAsTokens: v) do: [:nm |
        (aParser isValidName: nm)
                ifFalse: [aParser invalid: ('An ENTITIES attribute (%1="%2") 
does not match the required syntax of a list of Names.'
-                               bindWith: anAttribute tag asString
-                               with: v)].
+                               % { anAttribute tag asString. v })].
        ent := aParser dtd generalEntityAt: nm.
        ent == nil
                ifTrue: [aParser invalid: ('Undeclared unparsed entity "%1" 
used by attribute type "%2"'
-                                       bindWith: nm
-                                       with: anAttribute tag asString)]
+                                       % { nm. anAttribute tag asString })]
                ifFalse: [ent isParsed
                        ifTrue: [aParser invalid: ('The entity "%1" used by 
attribute type "%2" is a parsed entity and should be unparsed'
-                                               bindWith: nm
-                                               with: anAttribute tag asString)]
+                                               % { nm. anAttribute tag 
asString })]
                        ifFalse: []]].
     all size = 0 ifTrue: [aParser invalid: 'Attribute has empty list of 
ENTITIES'].! !
 
@@ -6396,7 +6380,7 @@ defineDefaultNamespace: attribute
 
 defineNamespace: attribute from: aParser
     (#('xmlns' 'xml') includes: attribute tag type)
-       ifTrue: [self error: ('It is illegal to redefine the qualifier "%1".' 
bindWith: attribute tag type)].
+       ifTrue: [self error: ('It is illegal to redefine the qualifier "%1".' % 
{ attribute tag type })].
     attribute value isEmpty ifTrue: [aParser invalid: 'It is not permitted to 
have an empty URI as a namespace name'].
     self namespaces at: attribute tag type put: attribute value!
 


--- orig/xml/XPath.st
+++ mod/xml/XPath.st
@@ -388,7 +388,7 @@ xpathCompareEquality: aData using: aBloc
        ifTrue: [^nodes contains: [:nd1 |
                        aData unsortedNodes contains: [:nd2 |
                                aBlock value: nd1 xpathStringData value: nd2 
xpathStringData]]].
-    self error: ('Can''t compare a %1 with a node set' bindWith: aData class 
printString)!
+    self error: ('Can''t compare a %1 with a node set' % { aData class })!
 
 xpathCompareOrder: aData using: aBlock
     ^aData xpathIsNodeSet
@@ -448,6 +448,11 @@ xpathUsedVarNames
 xpathUsedVarNames
     ^OrderedCollection new! !
 
+!Object methodsFor: 'xpath'!
+
+xpathUsedVarNames
+    ^OrderedCollection new! !
+
 !XPathExpression methodsFor: 'matching'!
 
 baseValueIn: aNodeContext
@@ -850,7 +855,7 @@ baseValueIn: aNodeContext
     | var |
     var := aNodeContext variables
        at: self name
-       ifAbsent: [self error: ('No binding found for the variable $%1' 
bindWith: self name)].
+       ifAbsent: [self error: ('No binding found for the variable $%1' % { 
self name })].
     ^var! !
 
 !XPathVariable methodsFor: 'accessing'!
@@ -1372,7 +1377,7 @@ initializeNumeric
 !XPathBinaryExpression class methodsFor: 'instance creation'!
 
 operator: op with: arg1 with: arg2
-    ^(operators at: op ifAbsent: [self error: ('Not implemented yet %1' 
bindWith: op)]) copy
+    ^(operators at: op ifAbsent: [self error: ('Not implemented yet %1' % { op 
})]) copy
        operator: op with: arg1 with: arg2! !
 
 !XPathSortingVector methodsFor: 'sorting'!
@@ -1611,7 +1616,7 @@ axis: axisName test: test
     | stepClass step |
     stepClass := self class nodeTypes
                        at: axisName
-                       ifAbsent: [self error: ('%1 is not an axis' bindWith: 
axisName)].
+                       ifAbsent: [self error: ('%1 is not an axis' % { 
axisName })].
     step := stepClass new.
     step axisName: axisName.           "Some classes represent multiple axes, 
and must be told which"
     step baseTest: test.
@@ -2028,6 +2033,9 @@ atEndOfExpression
 init: streamOrString notifying: nothing failBlock: bah
     self source: streamOrString!
 
+init: streamOrString notifying: nothing failBlock: bah
+    self source: streamOrString!
+
 source: streamOrString
     buffer := String new writeStream.
     stack := OrderedCollection new.
@@ -2053,6 +2061,9 @@ result
 initScanner
     "Present for compatibility with the parser in VW."!
 
+initScanner
+    "Present for compatibility with the parser in VW."!
+
 xmlNode: aNode
     xmlNode := aNode! !
 
@@ -2060,7 +2071,7 @@ xmlNode: aNode
 
 functionNamed: fName
     functions == nil ifTrue: [functions := XPathFunction baseFunctions].
-    ^(functions at: fName ifAbsent: [self error: ('Not implemented yet %1()' 
bindWith: fName)]) copy!
+    ^(functions at: fName ifAbsent: [self error: ('Not implemented yet %1()' % 
{ fName })]) copy!
 
 namespaceAt: aQualifier
     | elm ns |
@@ -2072,7 +2083,7 @@ namespaceAt: aQualifier
                elm := elm parent].
     aQualifier = 'xml' ifTrue: [^XML_URI].
     self error: ('No namespace binding found for namespace qualifier "%1".'
-               bindWith: aQualifier)!
+               % { aQualifier })!
 
 peekFor: trialValue 
     "Test to see if tokenType matches aType and token equals trialValue. If 
so, 
@@ -2498,7 +2509,7 @@ xpathCompareEquality: aData using: aBloc
     aData xpathIsNodeSet
        ifTrue: [^aData unsortedNodes contains: [:nd2 |
                                aBlock value: self value: nd2 xpathStringData 
xpathAsBoolean]].
-    self error: ('Can''t compare a %1 with a boolean' bindWith: aData class 
printString)!
+    self error: ('Can''t compare a %1 with a boolean' % { aData class })!
 
 xpathCompareOrder: aData using: aBlock
     | v |
@@ -2564,7 +2575,7 @@ xpathCompareEquality: aData using: aBloc
     aData xpathIsNodeSet
        ifTrue: [^aData unsortedNodes contains: [:nd2 |
                                aBlock value: self value: nd2 xpathStringData 
xpathAsNumber]].
-    self error: ('Can''t compare a %1 with a number' bindWith: aData class 
printString)!
+    self error: ('Can''t compare a %1 with a number' % { aData class })!
 
 xpathCompareOrder: aData using: aBlock
     | v |
@@ -2631,7 +2642,7 @@ xpathCompareEquality: aData using: aBloc
     aData xpathIsNodeSet
        ifTrue: [^aData unsortedNodes contains: [:nd2 |
                                aBlock value: self value: nd2 xpathStringData]].
-    self error: ('Can''t compare a %1 with a string' bindWith: aData class 
printString)!
+    self error: ('Can''t compare a %1 with a string' % { aData class })!
 
 xpathCompareOrder: aData using: aBlock
     | v |


--- orig/xml/XSL.st
+++ mod/xml/XSL.st
@@ -419,7 +419,7 @@ addNamedTemplate: aRule
     all := namedTemplates at: aRule name
                ifAbsentPut: [OrderedCollection new].
     (all contains: [:c | c importance = currentImportance value])
-       ifTrue: [self error: ('There are two named templates named %1 with the 
same importance' bindWith: aRule name)].
+       ifTrue: [self error: ('There are two named templates named %1 with the 
same importance' % { aRule name })].
     all add: aRule!
 
 addRule: aRule
@@ -438,13 +438,13 @@ addVariable: aVariable
     all := variables at: aVariable name
                ifAbsentPut: [OrderedCollection new].
     (all contains: [:c | c importance = currentImportance value])
-       ifTrue: [self error: ('There are two variables named %1 with the same 
importance' bindWith: aVariable name)].
+       ifTrue: [self error: ('There are two variables named %1 with the same 
importance' % { aVariable name })].
     all add: aVariable!
 
 attributesForSet: setName
     | list map |
     list := attributeSets at: setName
-       ifAbsent: [self error: ('No attribute set named "%1".' bindWith: 
setName asString)].
+       ifAbsent: [self error: ('No attribute set named "%1".' % { setName 
asString })].
     map := Dictionary new.
     list do: [:as |
        (as allAttributesFrom: self) do: [:attr |
@@ -454,8 +454,8 @@ attributesForSet: setName
     map do: [:singleList |
        (singleList size > 1 and: [(singleList at: 1) key = (singleList at: 2) 
key])
                ifTrue: [self error: ('Attribute set "%1" includes more than 
one definition of the attribute "%2".'
-                                       bindWith: setName asString
-                                       with: singleList first name asString)].
+                                       % { setName asString.
+                                           singleList first name asString })].
        list add: singleList first value].
     ^list!
 
@@ -535,7 +535,7 @@ readString: aString
 resolveAttributesForSet: setName
     | list |
     list := attributeSets at: setName
-       ifAbsent: [self error: ('No attribute set named "%1".' bindWith: 
setName asString)].!
+       ifAbsent: [self error: ('No attribute set named "%1".' % { setName 
asString })].!
 
 setOutput: anOutputCommand
     output := anOutputCommand!
@@ -1291,11 +1291,11 @@ checkURISyntax: aString
     type := aString copyFrom: n + 1 to: aString size.
     ch := type at: 1.
     (ch = $_ or: [ch isLetter])
-       ifFalse: [self error: ('Type name syntax error in "%1".' bindWith: 
type)].
+       ifFalse: [self error: ('Type name syntax error in "%1".' % { type })].
     2 to: type size do: [:i |
        ch := type at: i.
        (ch isLetter or: [ch isDigit or: ['.-_' includes: ch]])
-               ifFalse: [self error: ('Type name syntax error in "%1".' 
bindWith: type)]]!
+               ifFalse: [self error: ('Type name syntax error in "%1".' % { 
type })]]!
 
 collate: node1 to: node2 within: aNodeContext
     | list sign |
@@ -1309,8 +1309,7 @@ collate: node1 to: node2 within: aNodeCo
 readAttribute: attName
     ^self readAttribute: attName
        default: [self error: ('%1 needs to have an attribute named %2'
-                               bindWith: self tag asString
-                               with: attName)]!
+                               % { self tag asString. attName })]!
 
 readAttribute: attName default: def
     | att |
@@ -1325,18 +1324,17 @@ readInteger: attName default: def
     ^att == nil
        ifTrue: [def value]
        ifFalse:
-               [att isEmpty ifTrue: [self error: ('The %1 attribute is empty' 
bindWith: attName)].
+               [att isEmpty ifTrue: [self error: ('The %1 attribute is empty' 
% { attName })].
                att := att readStream.
                val := Number readFrom: att.
                val = 0 ifTrue: [self error: 'Bad number format, ', (att 
instVarAt: 1)].
-               att atEnd ifFalse: [self error: ('The %1 attribute is not a 
legal integer value' bindWith: attName)].
+               att atEnd ifFalse: [self error: ('The %1 attribute is not a 
legal integer value' % { attName })].
                val]!
 
 readMatchPattern: attName
     ^self readMatchPattern: attName
        default: [self error: ('%1 needs to have an attribute named %2'
-                               bindWith: self tag asString
-                               with: attName)]!
+                               % { self tag asString. attName })]!
 
 readMatchPattern: attName default: def
     | att |
@@ -1350,8 +1348,7 @@ readMatchPattern: attName default: def
 readSelectPattern: attName
     ^self readSelectPattern: attName
        default: [self error: ('%1 needs to have an attribute named %2'
-                               bindWith: self tag asString
-                               with: attName)]!
+                               % { self tag asString. attName })]!
 
 readSelectPattern: attName default: def
     | att d |
@@ -1372,8 +1369,7 @@ readTag: attName
     att := self valueOfAttribute: attName ifAbsent: [nil].
     ^att == nil
        ifTrue: [self error: ('%1 needs to have an attribute named %2'
-                               bindWith: self tag asString
-                               with: attName)]
+                               % { self tag asString. attName })]
        ifFalse: [att]!
 
 readTagList: attName default: defaultBlock
@@ -1437,7 +1433,7 @@ generatesAttributes
 
 isStylesheetEntry
     Transcript nl; tab; show: ('Stylesheet contains a top-level element that 
is not permitted (%1)'
-               bindWith: self tag).
+               % { self tag }).
     Transcript nl; tab; show: 'It has been ignored'.
     ^false!
 
@@ -1523,7 +1519,7 @@ resolveComputedTag: nm
                qualifier := self findQualifierAtNamespace: 'quote:', ns.
                qualifier == nil
                        ifTrue: [qualifier := self findQualifierAtNamespace: 
ns].
-               qualifier == nil ifTrue: [self error: ('The namespace %1 has 
not been bound to a qualifier in this stylesheet, and automatic creation of 
qualifiers has not been implemented.' bindWith: ns)].
+               qualifier == nil ifTrue: [self error: ('The namespace %1 has 
not been bound to a qualifier in this stylesheet, and automatic creation of 
qualifiers has not been implemented.' % { ns })].
                NodeTag new qualifier: qualifier ns: ns type: type]
        ifFalse:
                [self checkQNameSyntax: nm.
@@ -1542,7 +1538,7 @@ resolveTag: aTagString
                                ifTrue: [self error: 'A qualified name cannot 
begin or end with a colon.'].
                        qual := aTagString copyFrom: 1 to: c - 1.
                        ns := self findNamespaceAt: qual.
-                       ns == nil ifTrue: [self error: ('The namespace 
qualifier %1 has not been bound to a namespace in this stylesheet' bindWith: 
qual)].
+                       ns == nil ifTrue: [self error: ('The namespace 
qualifier %1 has not been bound to a namespace in this stylesheet' % { qual })].
                        "Use a # in the match to make sure there's at least one 
more character"
                        ('quote:#*' match: ns)
                                ifTrue: [ns := ns copyFrom: 'quote:' size + 1 
to: ns size].
@@ -1988,7 +1984,7 @@ sequenceSrc
 format: number by: aFormat
     | n s |
     aFormat size = 1
-       ifFalse: [self error: ('Unrecognized number format = "%1"' bindWith: 
aFormat)].
+       ifFalse: [self error: ('Unrecognized number format = "%1"' % { aFormat 
})].
     aFormat = 'a'
        ifTrue:
                [n := self radix: number base: 26.
@@ -2352,7 +2348,7 @@ topLevelAddToRuleDB: aDB
 
     self tag namespace = XSL_URI
        ifTrue: [self error: ('"%1" not recognized as an XSL command'
-               bindWith: self tag asString)].
+               % { self tag asString })].
     aDB addRule: self! !
 
 !VariableDefinition methodsFor: 'loading'!




reply via email to

[Prev in Thread] Current Thread [Next in Thread]