Merged b35f00f464c2 and 13cf55425c88 (branch default - CVS HEAD) jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Jul 2013 17:18:09 +0100
branchjv
changeset 13182 bc686a7cc736
parent 13181 b35f00f464c2 (current diff)
parent 13169 13cf55425c88 (diff)
child 13248 4da54a24800f
Merged b35f00f464c2 and 13cf55425c88 (branch default - CVS HEAD)
AbstractLauncherApplication.st
AbstractSettingsApplication.st
BrowserView.st
ChangesBrowser.st
DebugView.st
DirectoryTreeBrowser.st
NewChangesBrowser.st
NewLauncher.st
PerforceSourceCodeManagerUtilities.st
TerminalApplication.st
Tools_ClassCategoryList.st
Tools__BreakpointService.st
Tools__ClassCategoryList.st
Tools__CodeView2.st
Tools__HierarchicalClassCategoryList.st
Tools__HierarchicalProjectList.st
Tools__Inspector2.st
Tools__MethodRewriter.st
Tools__NewSystemBrowser.st
Tools__SearchDialog.st
Tools__Tag.st
Tools__TagList.st
Tools__VariableList.st
VersionDiffBrowser.st
resources/de.rs
--- a/.hgtags	Mon Jul 15 13:16:46 2013 +0100
+++ b/.hgtags	Tue Jul 16 17:18:09 2013 +0100
@@ -1,6 +1,7 @@
 010ac94518b347db8dcc0f986d7e0f31cb6369b7 expeccoNET_1_5_0rc1
 010ac94518b347db8dcc0f986d7e0f31cb6369b7 expecco_1_8_2rc1
 0345171682c483a27083e267891c5c409672b786 expecco_1_0_3
+0a9b919319a9d418bd1fd8700ec1aa12f3d81b9e stable
 0b1ad2518a5cd2c8273fb463e370af9d6abfbd97 expecco_2_1_0
 0b715d777c488bf60cadb45e1336e6191b713369 rel2_10_8_6_last2
 0b7d7aedc1cd27c9468db2e11b39e2d211556973 rel3_6_1
@@ -24,7 +25,6 @@
 62451ecb3d3bbf1f6067c931eda2cdb57aa67ead expeccoNET_1_7_0_0
 6ae442626f2090b5275b777f1a9d09ef0e092628 rel3_4_1_2
 6ea7ea821b44f30ae3737d4703af910788f4c854 rel3-1-2
-802c2877a68ed2c680b8c4458899b609663f2481 stable
 8046120212f6e56f5142e2881d4d7a425527eae1 expecco_1_7_0b1
 8046120212f6e56f5142e2881d4d7a425527eae1 expecco_1_7_0b2
 8046120212f6e56f5142e2881d4d7a425527eae1 expecco_1_7_0b3
--- a/AbstractLauncherApplication.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/AbstractLauncherApplication.st	Tue Jul 16 17:18:09 2013 +0100
@@ -720,10 +720,11 @@
                 ].
                 self withWaitCursorDo:[
                     #(
-                        'stx:clients/Demos'
-                        'stx:goodies/demos'
+                        'stx:clients'
+                        'stx:goodies'
+                        'stx:libwidg3'
                     ) do:[:pkg |
-                        Smalltalk installAutoloadedClassesFrom:(Smalltalk projectDirectoryForPackage:pkg).
+                        Smalltalk recursiveInstallAutoloadedClassesFrom:(Smalltalk projectDirectoryForPackage:pkg).
                     ].
                 ].
                 cls := Smalltalk at:classOrClassName asSymbol.
@@ -1286,8 +1287,17 @@
     "open a browser showing all breakPointed/traced methods
      (but, to get rid of them, there is also a menu itme to remove them all)"
 
+    |filter|
+
+    "/ only methods which are still anchored in the class are relevant here
+    "/ (i.e. allInstances may return too many)
+    filter := [:m | m mclass notNil].
+
     UserPreferences systemBrowserClass
-        browseMethods:(WrappedMethod allInstances)
+        browseMethods:(Set new
+                        addAll:(WrappedMethod allInstances select:filter);
+                        addAll:(MethodWithBreakpoints allInstances select:filter);
+                        yourself)
         title:'All breakPointed/traced methods'
 !
 
@@ -1491,7 +1501,10 @@
 
     self
         withCursor:Cursor execute
-        do:[ MessageTracer cleanup]
+        do:[ 
+            MessageTracer cleanup.
+            MethodWithBreakpoints allInstancesDo:[:m | m restoreOriginalMethod]
+        ]
 !
 
 startClassBrowser
@@ -2440,7 +2453,8 @@
 !AbstractLauncherApplication::LauncherDialogs class methodsFor:'dialogs'!
 
 communicationsSettings
-    "open a dialog on communications settings"
+    "open a dialog on communications settings.
+     Obsoleted by the settings application"
 
     |box check in resources y acceptChannel
      hasRDoitServer rDoitServerPort
@@ -3038,7 +3052,8 @@
 !
 
 compilerSettings
-    "open a dialog on compiler related settings"
+    "open a dialog on compiler related settings.
+     Obsoleted by the settings application"
 
     |box warnings warnSTX warnUnderscore warnDollar warnOldStyle warnUnusedVars
      allowDollar allowUnderscore allowSqueakExtensions allowQualifiedNames
@@ -3342,7 +3357,8 @@
 !
 
 displaySettings
-    "open a dialog on display related settings"
+    "open a dialog on display related settings.
+     Obsoleted by the settings application."
 
     |box listOfSizes sizeInfos
      sizes sizeNames sizeList sizeX sizeY deepIcons
@@ -3622,7 +3638,8 @@
 !
 
 javaSettings
-    "open a dialog on settings related to the java subsystem"
+    "open a dialog on settings related to the java subsystem.
+     Obsoleted by the settings application."
 
     |box audio javaHome classPath oldJavaHome oldClassPath resources component
      extraFileSecurityChecks extraSocketSecurityChecks
@@ -3761,7 +3778,8 @@
 !
 
 keyboardSettings
-    "open a dialog on keyboard related settings"
+    "open a dialog on keyboard related settings.
+     Obsoleted by the settings application"
 
     |mappings listOfRawKeys listOfFunctions
      box l
@@ -3903,7 +3921,8 @@
 !
 
 languageSettingsFor:requestor
-    "open a dialog on language related settings"
+    "open a dialog on language related settings.
+     Obsoleted by the settings application"
 
     |listOfLanguages translatedLanguages switch box languageList flags resources|
 
@@ -4040,7 +4059,8 @@
 !
 
 memorySettings
-    "open a dialog on objectMemory related settings"
+    "open a dialog on objectMemory related settings.
+     Obsoleted by the settings application"
 
     |box igcLimit igcFreeLimit igcFreeAmount newSpaceSize
      compressLimit
@@ -4169,7 +4189,8 @@
 !
 
 messageSettings
-    "open a dialog on infoMessage related settings"
+    "open a dialog on infoMessage related settings.
+     Obsoleted by the settings application"
 
     |box vmInfo vmErrors displayErrors classInfos resources|
 
@@ -4207,7 +4228,8 @@
 !
 
 miscSettings
-    "open a dialog on misc other settings"
+    "open a dialog on misc other settings.
+     Obsoleted by the settings application"
 
     |box pos pos2 check butt shadows takeFocus focusFollowsMouse returnFocus
      hostNameInLabel showAccelerators
@@ -4348,7 +4370,8 @@
 !
 
 printerSettings
-    "open a dialog on printer related settings; returns true if accepted"
+    "open a dialog on printer related settings; returns true if accepted.
+     Obsoleted by the settings application"
 
     |box accepted
      possiblePrinters possibleTypes printerType printCommand printFile
@@ -4647,7 +4670,8 @@
 !
 
 sourceAndDebuggerSettings
-    "open a dialog on source&debugger other settings"
+    "open a dialog on source&debugger other settings.
+     Obsoleted by the settings application"
 
     |box check butt setupButt logDoits updChanges changeFileName
      useManager hasManager cvsIsSetup
@@ -5111,7 +5135,8 @@
 !
 
 toolSettings
-    "open a dialog on tool settings"
+    "open a dialog on tool settings.
+     Obsoleted by the settings application"
 
     |box resources currentUserPrefs in acceptChannel
      useNewInspector useNewChangesBrowser useNewSystemBrowser useNewVersionDiffBrowser
@@ -5255,7 +5280,8 @@
 !
 
 viewStyleSettingsFor:requestor
-    "open a dialog on viewStyle related settings"
+    "open a dialog on viewStyle related settings.
+     Obsoleted by the settings application"
 
     |resourceDir dir box
      list listView scrView infoLabel infoForwarder newStyle
@@ -7029,11 +7055,11 @@
 !AbstractLauncherApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.434 2013-07-05 13:34:09 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.438 2013-07-09 20:48:17 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.434 2013-07-05 13:34:09 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.438 2013-07-09 20:48:17 cg Exp $'
 !
 
 version_HG
@@ -7042,6 +7068,6 @@
 !
 
 version_SVN
-    ^ '$Id: AbstractLauncherApplication.st,v 1.434 2013-07-05 13:34:09 stefan Exp $'
+    ^ '$Id: AbstractLauncherApplication.st,v 1.438 2013-07-09 20:48:17 cg Exp $'
 ! !
 
--- a/AbstractSettingsApplication.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/AbstractSettingsApplication.st	Tue Jul 16 17:18:09 2013 +0100
@@ -1050,7 +1050,7 @@
     ^ #(
 
 #arraysAreImmutable
-'Array literals are readonly objects, which cannot be modified.
+'Array and ByteArray literals are readonly objects, which cannot be modified.
 Prevents constant arrays as returned from a method to be modified elsewhere by accident'
 
 #fullDebugInfo
@@ -1133,101 +1133,7 @@
 )
 !
 
-helpSpec
-    "This resource specification was automatically generated
-     by the UIHelpTool of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIHelpTool may not be able to read the specification."
-
-    "
-     UIHelpTool openOnClass:AbstractSettingsApplication::ByteCodeCompilerSettingsAppl    
-    "
-
-    <resource: #help>
-
-    ^ super helpSpec addPairsFrom:#(
-
-#allowAssignmentToPoolVariable
-''
-
-#allowDollarInIdentifier
-''
-
-#allowDolphinExtensions
-''
-
-#allowEmptyStatements
-''
-
-#allowExtendedBinarySelectors
-''
-
-#allowFixedPointLiterals
-''
-
-#allowOldStyleAssignment
-''
-
-#allowQualifiedNames
-''
-
-#allowReservedWordsAsSelectors
-''
-
-#allowSqueakExtensions
-''
-
-#allowUnderscoreInIdentifier
-''
-
-#allowVisualAgeESSymbolLiterals
-''
-
-#allowVisualAgePrimitives
-''
-
-#arraysAreImmutable
-''
-
-#fullDebugInfo
-''
-
-#stringsAreImmutable
-''
-
-#warnAboutPossibleSTCCompilationProblems
-''
-
-#warnAboutPossiblyUnimplementedSelectors
-''
-
-#warnAboutReferenceToPrivateClass
-''
-
-#warnDollarInIdentifier
-''
-
-#warnOldStyleAssignment
-''
-
-#warnPlausibilityChecks
-''
-
-#warnPossibleIncompatibilities
-''
-
-#warnSTXSpecials
-''
-
-#warnUnderscoreInIdentifier
-''
-
-#warnings
-''
-
-)
-! !
+ !
 
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class methodsFor:'image specs'!
 
@@ -3795,7 +3701,7 @@
 'Press CTRL to drag the selected text into another view'
 
 #tabStops4
-'Controls if tab stops are multiples of 4 or 8 while editing.\Notice that this only affects the cursor positioning while editing, and that tabs are never part of the text internally.\The external (file-) representation always uses tab stops in multiples of 8.\Thus, when saving, one leading tab is generated for every 8 leading spaces,\and when reading a file, each tab is replaced by 8 spaces'
+'Controls if tab stops are multiples of 4 or 8 while editing.\Notice that this only affects the cursor positioning while editing, and that tabs are never part of the text internally.\The external (file-) representation always uses tab stops in multiples of 8.\Thus, when saving, one leading tab is generated for every 8 leading spaces,\and when reading a file, each tab is replaced by 8 spaces.\For ST/X, using multiple of 4 is recommended (the whole system was written in this style)'
 
 #useNewCodeView2
 'Use the new advanced CodeView2, which supports line numbers, advanced variable and selector highlighting,\and other useful programmer features'
@@ -5468,15 +5374,14 @@
     Class catchClassRedefinitions:self catchClassRedefs value.
     Class catchMethodRedefinitions:self catchMethodRedefs value.
     HistoryManager notNil ifTrue:[
-	HistoryManager fullHistoryUpdate:self fullHistoryUpdate value.
-	self historyLines value ifTrue:[
-	    HistoryManager activate
-	] ifFalse:[
-	    HistoryManager deactivate
-	].
-	nm := (self userNameInHistoryHolder value ? '') withoutSeparators.
-	nm isEmpty ifTrue:[ nm := nil ].
-	UserPreferences current historyManagerSignature:nm.
+        HistoryManager fullHistoryUpdate:self fullHistoryUpdate value.
+        self historyLines value ifTrue:[
+            HistoryManager activate
+        ] ifFalse:[
+            HistoryManager deactivate
+        ].
+        nm := (self userNameInHistoryHolder value ? '') withoutSeparators asNilIfEmpty.
+        UserPreferences current historyManagerSignature:nm.
     ].
     Smalltalk loadBinaries:self loadBinaries value.
 
@@ -18803,11 +18708,11 @@
 !AbstractSettingsApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.478 2013-06-27 11:42:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.481 2013-07-13 20:40:13 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.478 2013-06-27 11:42:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.481 2013-07-13 20:40:13 cg Exp $'
 !
 
 version_HG
--- a/BrowserView.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/BrowserView.st	Tue Jul 16 17:18:09 2013 +0100
@@ -7298,14 +7298,14 @@
 "/ OLD code
 "/
 "/    (s endsWith:' !!') ifTrue:[
-"/        s := s copyWithoutLast:2
+"/        s := s copyButLast:2
 "/    ].
 "/    (s endsWith:')') ifTrue:[
 "/        s := aString copyTo:(aString lastIndexOf:$()-1.
 "/        s := s withoutSpaces.
 "/    ].
 "/    (s endsWith:' !!') ifTrue:[
-"/        s := s copyWithoutLast:2
+"/        s := s copyButLast:2
 "/    ].
 "/    pos := s lastIndexOf:(Character space).
 "/    ^ s copyTo:(pos - 1)
@@ -10850,7 +10850,7 @@
             nm := aClass name.
 "/            showInstance ifFalse:[
 "/                ((nm ~= 'Metaclass') and:[nm endsWith:' class']) ifTrue:[
-"/                    nm := nm copyWithoutLast:6 "copyTo:(nm size - 5)"
+"/                    nm := nm copyButLast:6 "copyTo:(nm size - 5)"
 "/                ]
 "/            ].
             aClass ~~ actualClass ifTrue:[
--- a/ChangesBrowser.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/ChangesBrowser.st	Tue Jul 16 17:18:09 2013 +0100
@@ -3977,7 +3977,7 @@
 "/        (Smalltalk at:ns asSymbol) notNil ifTrue:[
 "/            cls
 "/        ].
-"/        ^ name copyWithoutLast:6
+"/        ^ name copyButLast:6
 "/    ].
     ^ name
 
--- a/DebugView.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/DebugView.st	Tue Jul 16 17:18:09 2013 +0100
@@ -369,10 +369,7 @@
         ].
     ].
 
-    IgnoredHalts := IgnoredHalts reject:[:ign | ign isActive not ].
-    IgnoredHalts isEmpty ifTrue:[
-        IgnoredHalts := nil.
-    ].
+    IgnoredHalts := (IgnoredHalts reject:[:ign | ign isActive not ]) asNilIfEmpty.
 
     ^ false.
 
@@ -399,10 +396,7 @@
         ].
     ].
 
-    IgnoredHalts := IgnoredHalts reject:[:ign | ign isActive not].
-    IgnoredHalts isEmpty ifTrue:[
-        IgnoredHalts := nil.
-    ].
+    IgnoredHalts := (IgnoredHalts reject:[:ign | ign isActive not]) asNilIfEmpty.
 
     ^ false.
 
@@ -8579,11 +8573,11 @@
 !DebugView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.599 2013-07-04 19:32:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.600 2013-07-13 20:39:12 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.599 2013-07-04 19:32:49 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.600 2013-07-13 20:39:12 cg Exp $'
 !
 
 version_HG
@@ -8592,7 +8586,7 @@
 !
 
 version_SVN
-    ^ '$Id: DebugView.st,v 1.599 2013-07-04 19:32:49 cg Exp $'
+    ^ '$Id: DebugView.st,v 1.600 2013-07-13 20:39:12 cg Exp $'
 ! !
 
 
--- a/DirectoryTreeBrowser.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/DirectoryTreeBrowser.st	Tue Jul 16 17:18:09 2013 +0100
@@ -66,11 +66,8 @@
 "
 ! !
 
-
 !DirectoryTreeBrowser class methodsFor:'instance creation'!
 
-
-
 openOn:aFileName
     | file |
 
@@ -102,7 +99,6 @@
 "
 ! !
 
-
 !DirectoryTreeBrowser class methodsFor:'defaults'!
 
 timeForExpandOnDropInMilliseconds
@@ -110,7 +106,6 @@
     ^ 1500
 ! !
 
-
 !DirectoryTreeBrowser class methodsFor:'interface specs'!
 
 windowSpec
@@ -179,7 +174,6 @@
       )
 ! !
 
-
 !DirectoryTreeBrowser class methodsFor:'menu specs'!
 
 menu
@@ -400,7 +394,6 @@
       )
 ! !
 
-
 !DirectoryTreeBrowser class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -415,7 +408,7 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
-        selectedDirectoryModel
+        treeSelectionHolder
         rootHolder
         filterModel
         showFiles
@@ -423,7 +416,6 @@
       ).
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'accessing'!
 
 allowRenameOnOneClick
@@ -456,7 +448,6 @@
     ^ updateTreeSelection
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'actions'!
 
 doDoubleClick:anIndex 
@@ -712,7 +703,6 @@
     ]
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'aspects'!
 
 allowFileOperations
@@ -804,9 +794,14 @@
         treeSelectionHolder addDependent:self.
     ].
     ^ treeSelectionHolder
+!
+
+treeSelectionHolder:aValueHolder
+    treeSelectionHolder removeDependent:self.
+    treeSelectionHolder := aValueHolder.
+    treeSelectionHolder addDependent:self.
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'change & update'!
 
 changeMatchBlock
@@ -925,7 +920,6 @@
     ^ self
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'drag & drop'!
 
 dropDestinationPath
@@ -1052,7 +1046,6 @@
         afterMilliseconds:(self class timeForExpandOnDropInMilliseconds).
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'event handling'!
 
 processEvent:anEvent
@@ -1114,7 +1107,6 @@
     ^ false
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'queries'!
 
 hasOpenEditor
@@ -1144,7 +1136,6 @@
 "/    ^ false
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'selection'!
 
 firstSelectedDirectory
@@ -1268,7 +1259,6 @@
     ^ Array with:selection. "Wrap single value into Array"
 ! !
 
-
 !DirectoryTreeBrowser methodsFor:'startup & release'!
 
 makeDependent
@@ -1371,7 +1361,6 @@
     ^ super release.
 ! !
 
-
 !DirectoryTreeBrowser::DirTreeBrowserHFL methodsFor:'accessing'!
 
 draggedItem
@@ -1384,7 +1373,6 @@
     draggedItem := anItemOrNil.
 ! !
 
-
 !DirectoryTreeBrowser::DirTreeBrowserHFL methodsFor:'protocol'!
 
 grayDirectoryIcon
@@ -1405,15 +1393,14 @@
     ^ super iconFor:anItem.
 ! !
 
-
 !DirectoryTreeBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.123 2013-03-24 11:40:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.124 2013-07-10 10:14:03 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.123 2013-03-24 11:40:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.124 2013-07-10 10:14:03 cg Exp $'
 !
 
 version_HG
--- a/NewChangesBrowser.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/NewChangesBrowser.st	Tue Jul 16 17:18:09 2013 +0100
@@ -2167,7 +2167,7 @@
     name := self fullClassNameOfChange:aChange.
     name isNil ifTrue:[^ nil].
     (name endsWith:' class') ifTrue:[
-	^ name copyWithoutLast:6
+	^ name copyButLast:6
     ].
     ^ name
 !
@@ -2851,15 +2851,15 @@
                             ].
                             (chunkText endsWith:'primitiveDefinitions:''') ifTrue:[
                                 sel := 'primitiveDefinitions:'.
-                                chunkText := chunkText copyWithoutLast:1
+                                chunkText := chunkText copyButLast:1
                             ].
                             (chunkText endsWith:'primitiveVariables:''') ifTrue:[
                                 sel := 'primitiveVariables:'.
-                                chunkText := chunkText copyWithoutLast:1
+                                chunkText := chunkText copyButLast:1
                             ].
                             (chunkText endsWith:'primitiveFunctions:''') ifTrue:[
                                 sel := 'primitiveFunctions:'.
-                                chunkText := chunkText copyWithoutLast:1
+                                chunkText := chunkText copyButLast:1
                             ].
                         ].
 
@@ -3410,7 +3410,7 @@
     className notNil ifTrue:[
 	isMeta := false.
 	(className endsWith:' class') ifTrue:[
-	    className := className copyWithoutLast:6.
+	    className := className copyButLast:6.
 	    isMeta := true.
 	].
 	(cls := Smalltalk classNamed:className) notNil ifTrue:[
--- a/NewLauncher.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/NewLauncher.st	Tue Jul 16 17:18:09 2013 +0100
@@ -3094,12 +3094,6 @@
             isVisible: windowTreeViewAvailable
           )
          (MenuItem
-            activeHelpKey: windowsViewTree
-            label: 'Window Tree'
-            itemValue: openWindowTreeInspector
-            labelImage: (ResourceRetriever ToolbarIconLibrary viewInspect22x22Icon 'Window Tree')
-          )
-         (MenuItem
             activeHelpKey: flyByWindowInformation
             label: 'FlyBy Window Information'
             itemValue: showFlyByWindowInformation
@@ -3109,6 +3103,12 @@
             label: '-'
           )
          (MenuItem
+            activeHelpKey: windowsViewTree
+            label: 'Select and Inspect Hierarchy...'
+            itemValue: openWindowTreeInspector
+            labelImage: (ResourceRetriever ToolbarIconLibrary viewInspect22x22Icon 'Select and Inspect Hierarchy...')
+          )
+         (MenuItem
             activeHelpKey: windowsSelectAndInspect
             label: 'Select and Inspect...'
             itemValue: viewInspect
@@ -5012,11 +5012,11 @@
 !NewLauncher class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/NewLauncher.st,v 1.468 2013-07-06 17:05:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/NewLauncher.st,v 1.469 2013-07-09 09:42:21 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/NewLauncher.st,v 1.468 2013-07-06 17:05:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/NewLauncher.st,v 1.469 2013-07-09 09:42:21 cg Exp $'
 !
 
 version_HG
@@ -5025,6 +5025,6 @@
 !
 
 version_SVN
-    ^ '$Id: NewLauncher.st,v 1.468 2013-07-06 17:05:52 cg Exp $'
+    ^ '$Id: NewLauncher.st,v 1.469 2013-07-09 09:42:21 cg Exp $'
 ! !
 
--- a/PerforceSourceCodeManagerUtilities.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/PerforceSourceCodeManagerUtilities.st	Tue Jul 16 17:18:09 2013 +0100
@@ -538,7 +538,7 @@
 	    fileName := rslt at:#fileName.
 	].
 	(fileName endsWith:',v') ifTrue:[
-	    fileName := fileName copyWithoutLast:2
+	    fileName := fileName copyButLast:2
 	].
 	(fileName endsWith:'.st') ifFalse:[
 	    fileName := fileName , '.st'
--- a/TerminalApplication.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/TerminalApplication.st	Tue Jul 16 17:18:09 2013 +0100
@@ -469,6 +469,7 @@
 
     vt startShellIn:initialDirectory.
     vt shellTerminateAction:[self shellFinishedInWorkspace:vt].
+    vt masterWindow:(self window).  "/ to change window title
 
     "Modified: / 07-04-2011 / 09:03:55 / cg"
     "Modified: / 03-04-2012 / 10:31:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -477,7 +478,7 @@
 !TerminalApplication class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libtool/TerminalApplication.st,v 1.11 2011/11/30 10:06:32 vrany Exp §'
+    ^ '$Header: /cvs/stx/stx/libtool/TerminalApplication.st,v 1.12 2013-07-09 09:31:10 cg Exp $'
 !
 
 version_HG
--- a/Tools_ClassCategoryList.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools_ClassCategoryList.st	Tue Jul 16 17:18:09 2013 +0100
@@ -897,7 +897,7 @@
 "/                                |s|
 "/                                s := each string.
 "/                                (s endsWith:stringForExtensions) ifTrue:[
-"/                                    s := s copyWithoutLast:(stringForExtensions size).
+"/                                    s := s copyButLast:(stringForExtensions size).
 "/                                ].
 "/                                s
 "/                        ].
--- a/Tools__BreakpointService.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__BreakpointService.st	Tue Jul 16 17:18:09 2013 +0100
@@ -147,18 +147,15 @@
 buttonPress:button x:x y:y in:view
     |lineNr|
 
-    codeView methodHolder value isNil ifTrue:[
-	^ false
-    ].
     view == gutterView ifTrue:[
-	button == 1 ifTrue:[
-	    lineNr := textView yVisibleToLineNr:y.
-	    lineNr notNil ifTrue:[ self setOrToggleBreakpointAtLine:lineNr ].
-	    ^ true.
-	].
-	button == 3 ifTrue:[
-	    ^ true.
-	]
+        button == 1 ifTrue:[
+            lineNr := textView yVisibleToLineNr:y.
+            lineNr notNil ifTrue:[ self setOrToggleBreakpointAtLine:lineNr ].
+            ^ true.
+        ].
+        button == 3 ifTrue:[
+            ^ true.
+        ]
     ].
     ^ false
 
@@ -349,10 +346,14 @@
     "/ prepareFullBreakSupport := false.
     prepareFullBreakSupport := true.
 
+    codeView methodHolder value isNil ifTrue:[
+        ^ self
+    ].
+
     textView reallyModified ifTrue:[
         "/ leads to ugly behavior (method no longer found), if we allow
         "/ this...
-          Dialog warn:'Please accept first (cannot set breakpoint while text is modified)'.
+        Dialog warn:'Please accept first (cannot set breakpoint while text is modified)'.
         ^ self
     ].
 
@@ -392,7 +393,7 @@
             codeView topView class == DebugView ifTrue:[
                 Dialog warn:'Sorry, in an active method, I can only add new breakpoints in an already breakpointed method.
 (i.e. a method stopped at a method breakpoint or one which already has statement breakpoints)
-The reason is that the method needs to be recompiled for the breakpoint, which would not affect the currently executed method.'.
+The reason is that the method needs to be recompiled for the breakpoint, which would not affect the method being currently executed.'.
                 "/ Dialog warn:'Sorry, can only add a new breakpoint in a wrapped method which has not yet started.'.
             ] ifFalse:[
                 Dialog warn:'Sorry, cannot add a new breakpoint here.'.
@@ -503,14 +504,14 @@
 !BreakpointService class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__BreakpointService.st,v 1.29 2013-07-06 11:44:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__BreakpointService.st,v 1.31 2013-07-12 05:50:20 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__BreakpointService.st,v 1.29 2013-07-06 11:44:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__BreakpointService.st,v 1.31 2013-07-12 05:50:20 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Tools__BreakpointService.st,v 1.29 2013-07-06 11:44:52 cg Exp $'
+    ^ '$Id: Tools__BreakpointService.st,v 1.31 2013-07-12 05:50:20 cg Exp $'
 ! !
 
--- a/Tools__ClassCategoryList.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__ClassCategoryList.st	Tue Jul 16 17:18:09 2013 +0100
@@ -520,7 +520,7 @@
     cat = self class nameListEntryForALL ifTrue:[^ nil].
 
     (cat endsWith:(self stringForExtensions)) ifTrue:[
-        cat := cat copyWithoutLast:(self stringForExtensions size)
+        cat := cat copyButLast:(self stringForExtensions size)
     ].
     ^ cat
 !
@@ -897,7 +897,7 @@
 "/                                |s|
 "/                                s := each string.
 "/                                (s endsWith:stringForExtensions) ifTrue:[
-"/                                    s := s copyWithoutLast:(stringForExtensions size).
+"/                                    s := s copyButLast:(stringForExtensions size).
 "/                                ].
 "/                                s
 "/                        ].
--- a/Tools__CodeView2.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__CodeView2.st	Tue Jul 16 17:18:09 2013 +0100
@@ -1413,7 +1413,11 @@
 
     "Created: / 06-07-2011 / 17:12:58 / jv"
     "Modified: / 06-10-2011 / 14:13:44 / cg"
-! !
+!
+
+
+
+ !
 
 !CodeView2 methodsFor:'diff mode'!
 
@@ -1947,7 +1951,7 @@
 
 	originalSource := originalSource asStringCollection.
 	originalSource := originalSource collect:[:line | line string withoutTrailingSeparators withTabsExpanded].
-	originalSource := originalSource collect:[:line | line isEmpty ifTrue:[nil] ifFalse:[line]].
+	originalSource := originalSource collect:[:line | line asNilIfEmpty].
 	[originalSource size > 0 and:[originalSource last isNil]] whileTrue:[
 	    originalSource := originalSource copyButLast:1
 	].
@@ -2815,6 +2819,20 @@
     "Created: / 08-10-2011 / 12:52:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!CodeView2::TextView methodsFor:'bit blitting'!
+
+copyFrom:aDrawable x:srcX y:srcY toX:dstX y:dstY width:w height:h async:async
+    "/ a vertical scroll operation ?
+    aDrawable == self ifTrue:[
+	((srcY ~= dstY) and:[srcX = dstX]) ifTrue:[
+	    gutterView
+		copyFrom:gutterView x:0 y:srcY toX:0 y:dstY width:(gutterView width) height:h async:false
+	]
+    ].
+    ^ super
+	copyFrom:aDrawable x:srcX y:srcY toX:dstX y:dstY width:w height:h async:async
+! !
+
 !CodeView2::TextView methodsFor:'channels'!
 
 reallyModifiedChannel
@@ -2962,6 +2980,8 @@
     "Modified: / 17-03-2012 / 10:04:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+
+
 redrawLines
     |i pom|
 
@@ -3633,6 +3653,8 @@
 
 !CodeView2::TextView methodsFor:'scrolling'!
 
+
+
 basicScrollTo:anOrigin redraw:doRedraw
     super scrollTo:anOrigin redraw:doRedraw
 
@@ -3641,6 +3663,8 @@
     "Created: / 19-03-2012 / 17:01:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+
+
 originChanged:delta
 
     super originChanged:delta.
@@ -3650,6 +3674,8 @@
     "Created: / 07-12-2009 / 21:50:49 / Jindra <a>"
 !
 
+
+
 scrollTo:anOrigin redraw:doRedraw
 
     codeView scrollTo:anOrigin redraw:doRedraw in: self.
@@ -3658,7 +3684,9 @@
     "Modified: / 06-04-2010 / 14:04:28 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 17-03-2012 / 10:06:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 19-03-2012 / 17:05:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
+!
+
+ !
 
 !CodeView2::TextView methodsFor:'undo & again'!
 
@@ -3681,11 +3709,11 @@
 !CodeView2 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeView2.st,v 1.103 2013-07-06 11:45:11 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeView2.st,v 1.107 2013-07-13 21:06:11 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeView2.st,v 1.103 2013-07-06 11:45:11 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeView2.st,v 1.107 2013-07-13 21:06:11 cg Exp $'
 !
 
 version_HG
@@ -3694,7 +3722,7 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__CodeView2.st,v 1.103 2013-07-06 11:45:11 cg Exp $'
+    ^ '$Id: Tools__CodeView2.st,v 1.107 2013-07-13 21:06:11 cg Exp $'
 ! !
 
 
--- a/Tools__HierarchicalClassCategoryList.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__HierarchicalClassCategoryList.st	Tue Jul 16 17:18:09 2013 +0100
@@ -168,7 +168,7 @@
 
 	category size > 0 ifTrue:[
 	    "/ find the parent ...
-	    parentPath := path copyWithoutLast:1.
+	    parentPath := path copyButLast:1.
 	    parentCategory := parentPath asStringWith:$-.
 
 	    parentItem := self addCategory:parentCategory .
--- a/Tools__HierarchicalProjectList.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__HierarchicalProjectList.st	Tue Jul 16 17:18:09 2013 +0100
@@ -422,7 +422,7 @@
 	package size > 0 ifTrue:[
 	    "/ find the parent ...
 	    p := package asCollectionOfSubstringsSeparatedByAny:':/.'.
-	    pp := p copyWithoutLast:1.
+	    pp := p copyButLast:1.
 	    l := (pp asStringWith:$/) size.
 	    parentPackage := package copyTo:l.
 
--- a/Tools__Inspector2.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__Inspector2.st	Tue Jul 16 17:18:09 2013 +0100
@@ -1116,6 +1116,7 @@
     "Created: / 15-07-2011 / 16:25:42 / cg"
 ! !
 
+
 !Inspector2::NavigationState class methodsFor:'creating classes'!
 
 for:anObject 
@@ -1131,11 +1132,11 @@
 !Inspector2::NavigationState class methodsFor:'documentation'!
 
 version
-    ^'$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.41 2013-07-08 09:50:36 cg Exp $'
+    ^'$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.42 2013-07-15 15:12:25 cg Exp $'
 !
 
 version_SVN
-    ^'$Id: Tools__Inspector2.st,v 1.41 2013-07-08 09:50:36 cg Exp $'
+    ^'$Id: Tools__Inspector2.st,v 1.42 2013-07-15 15:12:25 cg Exp $'
 ! !
 
 !Inspector2::NavigationState methodsFor:'accessing'!
@@ -1320,15 +1321,20 @@
     theObject inspector2Tabs do: [:selector|
             | tab |
             tab := [ theObject perform: selector ] 
-                        on: Error do:[:ex|
-                            "/ for debugging:  ex reject.
+                        on: Error 
+                        do:[:ex|
+                            "/ for debugging:  
+                            "/ ex reject.
+                            Transcript show:'error in inspector setup: ',ex description.    
                             Tools::Inspector2Tab new 
                                 label: selector;
                                 text:
                                     (ex description, Character cr, Character cr,
-                                     ex suspendedContext fullPrintAllString)].
+                                     ex suspendedContext fullPrintAllString)
+                        ].
             (tab notNil and:[tab isKindOf: Tools::Inspector2Tab])
-                ifTrue:[tabs add: tab]].
+                ifTrue:[tabs add: tab]
+            ].
 
     "Created: / 16-01-2008 / 17:25:24 / janfrog"
     "Modified: / 17-02-2008 / 10:30:43 / janfrog"
@@ -1357,15 +1363,15 @@
 !Inspector2 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.41 2013-07-08 09:50:36 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.42 2013-07-15 15:12:25 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.41 2013-07-08 09:50:36 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.42 2013-07-15 15:12:25 cg Exp $'
 !
 
 version_CVS_jvrany
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.41 2013-07-08 09:50:36 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__Inspector2.st,v 1.42 2013-07-15 15:12:25 cg Exp $'
 !
 
 version_HG
@@ -1374,7 +1380,7 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__Inspector2.st,v 1.41 2013-07-08 09:50:36 cg Exp $'
+    ^ '$Id: Tools__Inspector2.st,v 1.42 2013-07-15 15:12:25 cg Exp $'
 ! !
 
 
--- a/Tools__MethodRewriter.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__MethodRewriter.st	Tue Jul 16 17:18:09 2013 +0100
@@ -131,7 +131,7 @@
     ^Array 
         with:('Replace ','self halt'allBold,' by ','self error:''was: self halt''' allBold)
         with: 'self halt'
-        with: 'self error:''was: self error'''
+        with: 'self error:''was: self halt'''
 
     "Created: / 12-12-2007 / 11:29:51 / janfrog"
     "Modified: / 17-02-2008 / 08:35:09 / janfrog"
@@ -1079,7 +1079,7 @@
 !MethodRewriter class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__MethodRewriter.st,v 1.16 2012-08-03 19:21:17 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__MethodRewriter.st,v 1.17 2013-07-13 20:22:27 cg Exp $'
 !
 
 version_HG
@@ -1088,6 +1088,6 @@
 !
 
 version_SVN
-    ^ '§Id: Tools__MethodRewriter.st 7486 2009-10-26 22:06:24Z vranyj1 §'
+    ^ '$Id: Tools__MethodRewriter.st,v 1.17 2013-07-13 20:22:27 cg Exp $'
 ! !
 
--- a/Tools__NewSystemBrowser.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__NewSystemBrowser.st	Tue Jul 16 17:18:09 2013 +0100
@@ -26,27 +26,26 @@
 		LastClassFilterBlockString LastMethodFilterBlockString
 		LastBreakPointConditionString LastIndividualChecks
 		LastAcceptPackage LastVariableRenames LastVisitorClassName
-		LastTemporaryVariableName BookMarks FindHistory
+		LastTemporaryVariableName FindHistory
 		CheckForInstancesWhenRemovingClasses SynchronousUpdate
 		DoubleClickIsOpenBrowser ShowMethodTemplateWhenProtocolIsSelected
-		DefaultShowMethodTemplate DefaultShowMethodInheritance
-		DefaultEmphasizeUnloadedClasses DefaultImmediateSyntaxColoring
-		DefaultImmediateExplaining DefaultSyntaxColoring
-		DefaultToolBarVisible DefaultCodeInfoVisible
-		DefaultShortNameInTabs DefaultHideUnloadedClasses
-		DefaultMarkApplications DefaultAutoFormat
-		DefaultShowMethodComplexity DefaultShowMethodTypeIcon
-		DefaultShowSpecialResourceEditors SharedMethodCategoryCache
-		LastMethodProcessingBlockString LastLoadedPackages
-		DefaultShortAllClassesInNameSpaceOrganisation LastTag
+		DefaultShowMethodInheritance DefaultEmphasizeUnloadedClasses
+		DefaultImmediateSyntaxColoring DefaultImmediateExplaining
+		DefaultSyntaxColoring DefaultToolBarVisible
+		DefaultCodeInfoVisible DefaultShortNameInTabs
+		DefaultHideUnloadedClasses DefaultMarkApplications
+		DefaultAutoFormat DefaultShowMethodComplexity
+		DefaultShowMethodTypeIcon DefaultShowSpecialResourceEditors
+		SharedMethodCategoryCache LastMethodProcessingBlockString
+		LastLoadedPackages DefaultShortAllClassesInNameSpaceOrganisation
 		LastBaseVersionTag DefaultShowPseudoProtocols
 		DefaultShowMultitabMode LastRenamedOld LastRenamedNew
 		LastImportedPackage LastLintRules NewNavigationHistory
-		DefaultSortByNameAndInheritance LastLiteralReplacementType
-		LastLiteralReplacementNewName LastLiteralReplacementOldLiteral
-		LastNewProjectType DefaultShowSyntheticMethods
+		LastLiteralReplacementType LastLiteralReplacementNewName
+		LastLiteralReplacementOldLiteral LastNewProjectType
 		LastClassProcessingBlockString RecentlyClosedList
-		LastClassSearchBoxShowedFullName'
+		LastClassSearchBoxShowedFullName CachedTagToRevisionMapping
+		CachedMethodsImplemented DefaultShowSyntheticMethods'
 	poolDictionaries:''
 	category:'Interface-Browsers-New'
 !
@@ -15456,6 +15455,11 @@
 	    showBusyCursorWhilePerforming: true
 	  )
 	 (MenuItem
+	    label: 'Package Dependencies...'
+	    itemValue: projectPackageDependencyBrowser
+	    isVisible: false
+	  )
+	 (MenuItem
 	    enabled: hasProjectSelectedAndSourceCodeManagerHolder
 	    label: 'Find Classes NOT tagged as "stable"'
 	    itemValue: projectMenuFindNotStableClasses
@@ -17899,7 +17903,18 @@
 	initialFullNames := initialFullNames select:[:nm | filterOrNil value:(Smalltalk at:nm)].
     ].
 
-    initialShortNames := initialFullNames collect:[:nm | genShortNameListEntry value:(Smalltalk at:nm)] thenSelect:[:nm | nm notNil].
+    initialFullNames := initialFullNames select:[:nm | nm notNil].
+    initialShortNames := initialFullNames collect:[:nm |
+			    |cls|
+
+			    cls := Smalltalk at:nm.
+			    cls isNil ifTrue:[
+				"/ class no longer exists (removed?)
+				nm colorizeAllWith:(Color grey)
+			    ] ifFalse:[
+				genShortNameListEntry value:(Smalltalk at:nm)
+			    ].
+			].
 
     colorizedFullNames := initialFullNames collect:[:clsName |
 				(classNamesInChangeSet includes:clsName) ifTrue:[
@@ -25524,7 +25539,7 @@
 					] ifFalse:[
 					    searchAllLabel := 'Methods referring to the value of ''%1'''.
 					    otherKeysReferringToValue size <= 3 ifTrue:[
-						msg := (otherKeysReferringToValue copyWithoutLast:1) asStringWith:', '.
+						msg := (otherKeysReferringToValue copyButLast:1) asStringWith:', '.
 						msg := msg , ' and ' , otherKeysReferringToValue last.
 						msg := msg , ' also refer to that value. Search those references too ?'.
 					    ] ifFalse:[
@@ -25827,7 +25842,7 @@
 "/                                        ] ifFalse:[
 "/                                            searchAllLabel := 'Methods referring to the value of ''%1'''.
 "/                                            otherKeysReferringToValue size <= 3 ifTrue:[
-"/                                                msg := (otherKeysReferringToValue copyWithoutLast:1) asStringWith:', '.
+"/                                                msg := (otherKeysReferringToValue copyButLast:1) asStringWith:', '.
 "/                                                msg := msg , ' and ' , otherKeysReferringToValue last.
 "/                                                msg := msg , ' also refer to that value. Search those references too ?'.
 "/                                            ] ifFalse:[
@@ -28514,7 +28529,7 @@
 	    (newClassName includes:$:) ifTrue:[
 		idx := newClassName lastIndexOf:$:.
 		ownerName := newClassName copyTo:idx.
-		[ownerName endsWith:$:] whileTrue:[ownerName := ownerName copyWithoutLast:1].
+		[ownerName endsWith:$:] whileTrue:[ownerName := ownerName copyButLast:1].
 		newClassName := newClassName copyFrom:idx+1.
 	    ] ifFalse:[
 		(self confirm:(resources string:'Copy as public class ''%1'' ?' with:newClassName) withCRs)
@@ -33532,7 +33547,7 @@
     "/ need a better solution for that in the long term
     #fixme.
     (manager == CVSSourceCodeManager and:[ rev endsWith:$m ]) ifTrue:[
-	rev := rev copyWithoutLast:1.
+	rev := rev copyButLast:1.
     ].
     self classMenuCompareAgainstVersionInRepository:rev usingManager: manager
 !
@@ -35301,7 +35316,7 @@
 	    varName := varName asLowercaseFirst.
 	].
 	(varName endsWith:'Holder') ifTrue:[
-	    pseudoVarName := varName copyWithoutLast:6.
+	    pseudoVarName := varName copyButLast:6.
 	] ifFalse:[
 	    pseudoVarName := varName.
 	    varName := pseudoVarName , 'Holder'.
@@ -40452,9 +40467,10 @@
 
     |tag|
 
-    tag := Dialog request:'Tag:'.
+    tag := Dialog request:'Tag:' initialAnswer:(CVSSourceCodeManager recentTag).
     tag isEmptyOrNil ifTrue:[^ self].
 
+    CVSSourceCodeManager recentTag:tag.
     self projectMenuFindClassesNotTaggedAs:tag
 !
 
@@ -40583,9 +40599,9 @@
 	package := checkedOutPackageDir := pkg asPackageId directory.
 	(package includesMatchCharacters) ifTrue:[
 	    "if the match-char is not at the end..."
-	    ((package endsWith:'/*') and:[ (package copyWithoutLast:2) includesMatchCharacters not ])
+	    ((package endsWith:'/*') and:[ (package copyButLast:2) includesMatchCharacters not ])
 	    ifTrue:[
-		checkedOutPackageDir := package copyWithoutLast:2
+		checkedOutPackageDir := package copyButLast:2
 	    ] ifFalse:[
 		checkedOutPackageDir := nil.      "/ must check out everything and filter
 	    ]
@@ -40787,7 +40803,7 @@
 	numSkipped ~~ 0 ifTrue:[
 	    (package endsWith:'*') ifTrue:[
 		self information:('Nothing imported. Notice:\You may want to try ''' ,
-				 (package copyWithoutLast:2) , ''' (i.e. not the matching sub-packages).') withCRs
+				 (package copyButLast:2) , ''' (i.e. not the matching sub-packages).') withCRs
 	    ] ifFalse:[
 		self information:'Nothing imported.'
 	    ]
@@ -41643,6 +41659,229 @@
     "Modified: / 12-09-2006 / 14:22:58 / cg"
 !
 
+projectPackageDependencyBrowser
+    "find methods in a particular release of a set of pacakges
+     called by a set of packages from a particular release in another set of packages.
+     Answers the question of which release of the base st/x is required to execute
+     a particular release of a product (such as expecco).
+     Releases are specified by their tag."
+
+    |packagesToFindMissing packagesToFindCalled classesToFindMissing classesToFindCalled projectList1 projectList2 knownTags1 knownTags2
+     projectListView1 projectListView2 dialog releaseHolder1 releaseHolder2 manager
+     methodsImplemented skipAutoloaded cacheTagMappingsHolder
+     missingSelectors packageHull|
+
+    manager := SourceCodeManager.
+    skipAutoloaded := true.
+
+    releaseHolder1 := SourceCodeManager recentTag asValue.
+    releaseHolder2 := 'stable' asValue.
+
+    packagesToFindMissing := self selectedProjectsValue.
+    packagesToFindMissing isEmptyOrNil ifTrue:[^self].
+
+    projectList1 := ProjectList "HierarchicalProjectList" new.
+    projectList1 createBuilder.
+    projectListView1 := ApplicationSubView new client:projectList1.
+
+    projectList2 := ProjectList "HierarchicalProjectList" new.
+    projectList2 createBuilder.
+    projectListView2 := ApplicationSubView new client:projectList2.
+
+    projectList1 selectedProjects value:packagesToFindMissing.
+    projectList2 selectedProjects value:#('stx').
+
+    packageHull := [:packageIDs | Smalltalk allProjectIDs select:[:p | packageIDs
+									contains:[:packageId |
+									    p = packageId
+									    or:[ (p startsWith:packageId,':')
+									    or:[ (p startsWith:packageId,'/') ]]]
+								  ]
+		   ].
+
+    knownTags1 := (self allKnownTagsInClasses:((packageHull value:projectList1 selectedProjects value)
+						collect:[:id | ProjectDefinition definitionClassForPackage:id]
+						thenSelect:[:c | c notNil]))
+			asOrderedCollection reverse.
+
+    knownTags2 := (self allKnownTagsInClasses:((packageHull value:projectList2 selectedProjects value)
+						collect:[:id | ProjectDefinition definitionClassForPackage:id]
+						thenSelect:[:c | c notNil]))
+			asOrderedCollection reverse.
+
+    dialog := Dialog new.
+    dialog addCheckBox:'Cache tag -> revision mappings (speedup)' on:(cacheTagMappingsHolder := true asValue) tabable:true.
+    dialog addMessage:'Find (possible) calls from projects:' centered:false.
+    dialog leftIndent:30.
+    (dialog addComponent:projectListView1) width:1.0.
+    dialog addMessage:'with release:' centered:false.
+    dialog addComboListOn:releaseHolder1 list:knownTags1 tabable:true.
+    dialog leftIndent:0.
+
+    dialog addMessage:'into projects:' centered:false.
+    dialog leftIndent:30.
+    dialog addComponent:projectListView2.
+    dialog addMessage:'with release:' centered:false.
+    dialog addComboListOn:releaseHolder2 list:knownTags2 tabable:true.
+    dialog leftIndent:0.
+
+    dialog addAbortAndOkButtons.
+    dialog extent:400@400.
+    dialog open.
+
+    dialog accepted ifFalse:[ ^ self].
+
+    cacheTagMappingsHolder value ifTrue:[
+	CachedTagToRevisionMapping isNil ifTrue:[
+	    CachedTagToRevisionMapping := Dictionary new
+	].
+    ].
+
+    packagesToFindMissing := projectList1 selectedProjects value.
+    packagesToFindCalled := projectList2 selectedProjects value.
+
+    classesToFindMissing := Smalltalk allClasses select:[:cls |
+				|p|
+
+				p := cls package.
+				p notNil
+				    and:[cls isPrivate not
+				    and:[ packagesToFindMissing contains:[:p2 | (p2 = p)
+										or:[(p startsWith:(p2,'/'))
+										or:[p startsWith:(p2,':')]]]]]
+			    ].
+    classesToFindMissing := classesToFindMissing asOrderedCollection sort:[:a :b | a name < b name].
+
+    classesToFindCalled := Smalltalk allClasses select:[:cls |
+				|p|
+
+				p := cls package.
+				p notNil
+				    and:[cls isPrivate not
+				    and:[ packagesToFindCalled contains:[:p2 | (p2 = p)
+										or:[(p startsWith:(p2,'/'))
+										or:[p startsWith:(p2,':')]]]]]
+			    ].
+    classesToFindCalled := classesToFindCalled asOrderedCollection sort:[:a :b | a name < b name].
+
+"/ CachedMethodsImplemented := methodsImplemented.
+methodsImplemented := CachedMethodsImplemented.
+methodsImplemented isNil ifTrue:[
+    methodsImplemented := Set new.
+    classesToFindCalled do:[:eachClass |
+	|tag stream changeSet|
+
+	(eachClass isLoaded or:[skipAutoloaded not]) ifTrue:[
+	    [
+		|rev|
+
+		tag := releaseHolder2 value.
+		cacheTagMappingsHolder value ifTrue:[
+		    rev := (CachedTagToRevisionMapping at:tag ifAbsentPut:[Dictionary new])
+				at:eachClass name ifAbsent:nil.
+		].
+		rev isNil ifTrue:[
+		    rev := manager utilities
+				revisionForSymbolicName:tag
+				class:eachClass
+				fileName:(eachClass classFilename)
+				directory:(eachClass package asPackageId directory)
+				module:(eachClass package asPackageId module)
+				manager:manager.
+		].
+
+		rev isNil ifTrue:[
+		    Dialog warn:(resources string:'No version of %1 tagged as %2' with:eachClass name with:tag).
+		] ifFalse:[
+		    self activityNotification:'reading ',eachClass name,'...'.
+		    stream := manager getSourceStreamFor:eachClass revision:rev.
+		    stream isNil ifTrue:[
+			"/ class is autoloaded AND does not have a computable class name (would need conultation of abbrev file)
+			Dialog warn:(resources string:'Cannot extract source of %1 (rev %2)' with:eachClass name with:rev).
+		    ] ifFalse:[
+			changeSet := ChangeSet fromStream:stream.
+			methodsImplemented addAll:(changeSet changeSelectors).
+		    ].
+		    cacheTagMappingsHolder value ifTrue:[
+			(CachedTagToRevisionMapping at:tag ifAbsentPut:[Dictionary new])
+				at:eachClass name put:rev.
+		    ].
+		].
+	    ] ensure:[
+		stream notNil ifTrue:[ stream close ].
+	    ].
+	].
+    ].
+].
+
+    classesToFindMissing do:[:eachClass |
+	|tag stream changeSet|
+
+	(eachClass isLoaded or:[skipAutoloaded not]) ifTrue:[
+	    [
+		|rev|
+
+		tag := releaseHolder1 value.
+		cacheTagMappingsHolder value ifTrue:[
+		    rev := (CachedTagToRevisionMapping at:tag ifAbsentPut:[Dictionary new])
+				at:eachClass name ifAbsent:nil.
+		].
+		rev isNil ifTrue:[
+		    rev := manager utilities
+				revisionForSymbolicName:tag
+				class:eachClass
+				fileName:(eachClass classFilename)
+				directory:(eachClass package asPackageId directory)
+				module:(eachClass package asPackageId module)
+				manager:manager.
+		].
+
+		rev isNil ifTrue:[
+		    Dialog warn:(resources string:'No version of %1 tagged as %2' with:eachClass name with:tag).
+		] ifFalse:[
+		    self activityNotification:'reading ',eachClass name,'...'.
+		    stream := manager getSourceStreamFor:eachClass revision:rev.
+		    stream isNil ifTrue:[
+			"/ class is autoloaded AND does not have a computable class name (would need conultation of abbrev file)
+			Dialog warn:(resources string:'Cannot extract source of %1 (rev %2)' with:eachClass name with:rev).
+		    ] ifFalse:[
+			changeSet := ChangeSet fromStream:stream.
+			changeSet do:[:each |
+			    |tree messagesSent|
+
+			    messagesSent := Set new.
+			    each isMethodCodeChange ifTrue:[
+				tree := RBParser parseMethod:(each source) onError:[:aString :pos | nil].
+				tree notNil ifTrue:[
+				    tree nodesDo:[:eachNode |
+					eachNode isMessage ifTrue:[
+					    messagesSent add:( eachNode selector ).
+self halt.
+					] ifFalse:[
+					    eachNode isVariable ifTrue:[
+self halt.
+					    ]
+					]
+				    ].
+				].
+
+				tree halt.
+			    ].
+			]
+		    ].
+		    cacheTagMappingsHolder value ifTrue:[
+			(CachedTagToRevisionMapping at:tag ifAbsentPut:[Dictionary new])
+				at:eachClass name put:rev.
+		    ].
+		].
+	    ] ensure:[
+		stream notNil ifTrue:[ stream close ].
+	    ].
+	].
+    ].
+    self halt.
+!
+
 selectedProjectsDo:aBlock
     |selectedProjects allProjects|
 
@@ -47083,8 +47322,7 @@
 	    ]
 	].
     ].
-    allNames := allNames asOrderedCollection sort.
-    allNames isEmpty ifTrue:[ allNames := nil ].
+    allNames := allNames asOrderedCollection sort asNilIfEmpty.
 
     box := self enterBoxForVariableSearch:boxTitle list:allNames.
     box action:[:enteredString | varNames := enteredString].
@@ -50953,7 +51191,7 @@
 
     str := aString.
     (aString endsWith:' class') ifTrue:[
-	str := aString copyWithoutLast:6.
+	str := aString copyButLast:6.
     ].
 
     theClass := self findClassNamed:str.
@@ -53689,7 +53927,7 @@
     nm := aClassName.
     (nm endsWith:' class') ifTrue:[
 	meta := true.
-	nm := nm copyWithoutLast:6.
+	nm := nm copyButLast:6.
     ].
     nameSym := nm asSymbol.
 
@@ -53932,9 +54170,9 @@
 	    changedSource := aNavigationState codeView contentsAsString asStringCollection.
 	].
     changedSource := changedSource collect:[:line | line string withoutTrailingSeparators withTabsExpanded].
-    changedSource := changedSource collect:[:line | line isEmpty ifTrue:[nil] ifFalse:[line]].
+    changedSource := changedSource collect:[:line | line asNilIfEmpty].
     [changedSource size > 0 and:[changedSource last isNil]] whileTrue:[
-	changedSource := changedSource copyWithoutLast:1
+	changedSource := changedSource copyButLast:1
     ].
     changedSource := changedSource asString.
 
@@ -53958,7 +54196,7 @@
 	originalSource := originalSource collect:[:line | line string withoutTrailingSeparators withTabsExpanded].
 	originalSource := originalSource collect:[:line | line isEmpty ifTrue:[nil] ifFalse:[line]].
 	[originalSource size > 0 and:[originalSource last isNil]] whileTrue:[
-	    originalSource := originalSource copyWithoutLast:1
+	    originalSource := originalSource copyButLast:1
 	].
 
 	s1 := originalSource asString.
@@ -59675,6 +59913,23 @@
     The codeview does not really know that it is not dealing with non-text,
     as I mimicry some of the string protocol to make it happy.
     (duck typing is cool!!)
+
+    to show pre-assigned per-user colors, do something like:
+	UserPreferences current
+	    at:#preferredOwnerColorMapping
+	    put:(
+		Dictionary new
+		    at:'cg' put:(Color green);
+		    at:'claus' put:(Color green);
+		    at:'sv' put:(Color blue);
+		    at:'ab' put:(Color orange);
+		    at:'ca' put:(Color cyan);
+		    at:'mb' put:(Color red);
+		    at:'sr' put:(Color yellow);
+		    at:'vrany' put:(Color orange lightened);
+		    yourself
+	    )
+
 "
 ! !
 
@@ -59700,7 +59955,7 @@
 !NewSystemBrowser::OwnershipGraph methodsFor:'displaying'!
 
 generateFormFor:aGC
-    |maxNumLines xRun hGraph wCol colorsPerOwner colorsToUse
+    |maxNumLines xRun hGraph wCol colorsPerOwner colorsToUse preferredColors
      y yLine font sepAgenda lastInfo form
      maxWRevString maxWAuthorString maxWDateString|
 
@@ -59710,6 +59965,8 @@
     colorsPerOwner := OrderedDictionary new.
     colorsToUse := self ownerColorsToUse copy.
 
+    preferredColors := UserPreferences current at:#preferredOwnerColorMapping ifAbsent:nil.
+
     hGraph := self graphHeight.
     wCol := self columnWidth.
     font := form font.
@@ -59732,6 +59989,29 @@
 	maxWRevString := maxWRevString max:(font widthOf:rev).
 	maxWAuthorString := maxWAuthorString max:(font widthOf:author).
 	maxWDateString := maxWDateString max:(font widthOf:(date printStringFormat:self class dateFormat)).
+
+	"/ pre determine color here
+	colorsPerOwner
+	    at:author
+	    ifAbsentPut:[
+		|clr|
+
+		(preferredColors notNil
+		and:[ (preferredColors includesKey:author) ]) ifTrue:[
+		    clr := preferredColors at:author.
+		    colorsToUse remove:clr ifAbsent:[].
+		] ifFalse:[
+		    colorsToUse isEmpty ifTrue:[
+			clr := Color
+				redByte:(Random nextIntegerBetween:0 and:255)
+				greenByte:(Random nextIntegerBetween:0 and:255)
+				blueByte:(Random nextIntegerBetween:0 and:255).
+		    ] ifFalse:[
+			clr := colorsToUse removeFirst
+		    ]
+		].
+		clr
+	    ].
     ].
 
     ownershipInfo do:[:revInfo |
@@ -59866,7 +60146,7 @@
 !NewSystemBrowser::OwnershipGraph methodsFor:'string protocol (list entry)'!
 
 asString
-    ^ ''
+    ^ ' '
 !
 
 asStringWithoutEmphasis
@@ -59881,6 +60161,10 @@
     ^ '' emphasis
 !
 
+emphasisAt:colNr
+    ^ nil
+!
+
 hasChangeOfEmphasis
     ^ false
 !
@@ -59902,29 +60186,27 @@
     colorsToUse add:(Color brown).
     colorsToUse add:(Color orange).
 
-    colorsToUse add:(Color green lightened).
-    colorsToUse add:(Color blue lightened).
-    colorsToUse add:(Color yellow lightened).
-    colorsToUse add:(Color red lightened).
-    colorsToUse add:(Color cyan lightened).
-    colorsToUse add:(Color magenta lightened).
+    colorsToUse add:(Color green lightened lightened).
+    colorsToUse add:(Color blue lightened lightened).
+    colorsToUse add:(Color yellow lightened lightened).
+    colorsToUse add:(Color red lightened lightened).
+    colorsToUse add:(Color cyan lightened lightened).
+    colorsToUse add:(Color magenta lightened lightened).
     colorsToUse add:(Color brown lightened).
     colorsToUse add:(Color orange lightened).
 
-    colorsToUse add:(Color green darkened).
-    colorsToUse add:(Color blue darkened).
-    colorsToUse add:(Color yellow darkened).
-    colorsToUse add:(Color red darkened).
-    colorsToUse add:(Color cyan darkened).
-    colorsToUse add:(Color magenta darkened).
-    colorsToUse add:(Color brown darkened).
-    colorsToUse add:(Color orange darkened).
+    colorsToUse add:(Color grey).
+    colorsToUse add:(Color darkGrey).
+    colorsToUse add:(Color lightGrey).
+    colorsToUse add:(Color veryLightGrey).
+    colorsToUse add:(Color red darkened lightened).
+    colorsToUse add:(Color blue darkened lightened).
 
     ^ colorsToUse
 !
 
 string
-    ^ ''
+    ^ ' '
 !
 
 withoutTrailingSeparators
@@ -59978,11 +60260,11 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1933 2013-07-07 12:13:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1940 2013-07-15 09:44:11 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1933 2013-07-07 12:13:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1940 2013-07-15 09:44:11 cg Exp $'
 !
 
 version_HG
@@ -59991,7 +60273,7 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__NewSystemBrowser.st,v 1.1933 2013-07-07 12:13:58 cg Exp $'
+    ^ '$Id: Tools__NewSystemBrowser.st,v 1.1940 2013-07-15 09:44:11 cg Exp $'
 ! !
 
 
--- a/Tools__SearchDialog.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__SearchDialog.st	Tue Jul 16 17:18:09 2013 +0100
@@ -275,7 +275,7 @@
                     (sel startsWith:'#''') ifTrue:[
                         sel := sel copyFrom:3.
                         (sel endsWith:$') ifTrue:[
-                            sel := sel copyWithoutLast:1.
+                            sel := sel copyButLast:1.
                         ].
                     ].
                 ]
--- a/Tools__Tag.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__Tag.st	Tue Jul 16 17:18:09 2013 +0100
@@ -422,7 +422,7 @@
     lnr := 0.
 
 "/        (pat endsWith:'/;"') ifTrue:[
-"/            pat := pat copyWithoutLast:3.
+"/            pat := pat copyButLast:3.
 "/        ].
     (pat startsWith:$^) ifTrue:[
         pat := pat copyFrom:2.
--- a/Tools__TagList.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__TagList.st	Tue Jul 16 17:18:09 2013 +0100
@@ -2434,6 +2434,77 @@
     "Modified: / 05-05-2011 / 15:45:55 / cg"
 ! !
 
+!TagList methodsFor:'tag generation - helpers'!
+
+plainTextBetweenHTMLElement:startElement andElementWithTag:endTag
+    "applied to an <h1>-tag element, passing '/h1' as endTag,
+     this retrieves the plain text of the headline. Used by the tag list."
+
+    |el collector hasSpace txt|
+
+    collector := WriteStream on:(String new:100).
+    el := startElement next.
+
+    hasSpace := true.
+    [ el notNil and:[el tag ~= endTag] ] whileTrue:[
+        el isTextElement ifTrue:[
+            hasSpace ifFalse:[
+                collector space.
+                hasSpace := true.
+            ].
+            txt := el text withoutSeparators.
+            txt notEmpty ifTrue:[
+                collector nextPutAll:txt.
+                hasSpace := txt endsWith:' '.
+            ]
+        ].
+        el := el next
+    ].
+    ^ collector contents
+
+    "Created: / 12-09-2012 / 12:38:01 / cg"
+!
+
+tagsForLinesStartingWithIdentifierAndColon:aFilePath
+    "helper for yacc tags (and maybe others in the future):
+     naive, q&d scan for lines matching:
+        <anything>:
+    "
+
+    |targets line l lineNr nm s words w|
+
+    Tag autoload.
+
+    targets := OrderedCollection new.
+    s := aFilePath asFilename readStream.
+    s notNil ifTrue:[
+        s := LineNumberReadStream readingFrom:s.
+        [s atEnd] whileFalse:[
+            line := s nextLine.
+            l := line withoutSeparators.
+            words := l asCollectionOfWords.
+
+            words size >= 1 ifTrue:[
+                w := words first.
+                (w endsWith:$:) ifTrue:[
+                    nm := w copyButLast:1.
+
+                    lineNr := s lineNumber - 1.
+                    targets add:(Tag::TLabel
+                                    label:nm 
+                                    pattern:nil
+                                    type:nil
+                                    lineNumber:lineNr).
+                ].
+            ]
+        ].
+        s close
+    ].
+    ^ targets
+
+    "Created: / 28-09-2012 / 14:45:35 / cg"
+! !
+
 !TagList methodsFor:'tag generation - simple'!
 
 assemblerTagsInFile:aFilePath
@@ -2692,7 +2763,7 @@
 
 htmlTagsInFile:aFilePath
     "hatml tags:
-     naive, q&d scan for lines containing with:
+     naive, q&d scan for lines containing:
         <textarea>
         <input>
         <table>
@@ -3222,35 +3293,6 @@
     ^ targets
 !
 
-plainTextBetweenHTMLElement:startElement andElementWithTag:endTag
-    "applied to an <h1>-tag element, passing '/h1' as endTag,
-     this retrieves the plain text of the headline. Used by the tag list."
-
-    |el collector hasSpace txt|
-
-    collector := WriteStream on:(String new:100).
-    el := startElement next.
-
-    hasSpace := true.
-    [ el notNil and:[el tag ~= endTag] ] whileTrue:[
-        el isTextElement ifTrue:[
-            hasSpace ifFalse:[
-                collector space.
-                hasSpace := true.
-            ].
-            txt := el text withoutSeparators.
-            txt notEmpty ifTrue:[
-                collector nextPutAll:txt.
-                hasSpace := txt endsWith:' '.
-            ]
-        ].
-        el := el next
-    ].
-    ^ collector contents
-
-    "Created: / 12-09-2012 / 12:38:01 / cg"
-!
-
 prologTagsInFile:aFilePath
     "prolog tags:
      naive, q&d scan for lines matching:
@@ -3510,46 +3552,6 @@
     "Created: / 05-01-2012 / 10:56:26 / cg"
 !
 
-tagsForLinesStartingWithIdentifierAndColon:aFilePath
-    "helper for yacc tags (and maybe others in the future):
-     naive, q&d scan for lines matching:
-        <anything>:
-    "
-
-    |targets line l lineNr nm s words w|
-
-    Tag autoload.
-
-    targets := OrderedCollection new.
-    s := aFilePath asFilename readStream.
-    s notNil ifTrue:[
-        s := LineNumberReadStream readingFrom:s.
-        [s atEnd] whileFalse:[
-            line := s nextLine.
-            l := line withoutSeparators.
-            words := l asCollectionOfWords.
-
-            words size >= 1 ifTrue:[
-                w := words first.
-                (w endsWith:$:) ifTrue:[
-                    nm := w copyButLast:1.
-
-                    lineNr := s lineNumber - 1.
-                    targets add:(Tag::TLabel
-                                    label:nm 
-                                    pattern:nil
-                                    type:nil
-                                    lineNumber:lineNr).
-                ].
-            ]
-        ].
-        s close
-    ].
-    ^ targets
-
-    "Created: / 28-09-2012 / 14:45:35 / cg"
-!
-
 tclTagsInFile:aFilePath
     "tcl tags:
      naive, q&d scan for lines matching:
@@ -3659,11 +3661,11 @@
 !TagList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.27 2013-05-07 15:28:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.28 2013-07-10 08:39:01 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.27 2013-05-07 15:28:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.28 2013-07-10 08:39:01 cg Exp $'
 !
 
 version_HG
@@ -3672,6 +3674,6 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__TagList.st,v 1.27 2013-05-07 15:28:52 cg Exp $'
+    ^ '$Id: Tools__TagList.st,v 1.28 2013-07-10 08:39:01 cg Exp $'
 ! !
 
--- a/Tools__VariableList.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/Tools__VariableList.st	Tue Jul 16 17:18:09 2013 +0100
@@ -13,7 +13,7 @@
 
 "{ NameSpace: Tools }"
 
-Tools::BrowserList subclass:#VariableList
+BrowserList subclass:#VariableList
 	instanceVariableNames:'variableList classHolder showClassVars sortVariablesByName
 		selectedVariableEntries showWarningAboutMissingEntryInXmlSpec'
 	classVariableNames:''
@@ -50,7 +50,6 @@
 "
 ! !
 
-
 !VariableList class methodsFor:'interface specs'!
 
 windowSpec
@@ -102,7 +101,6 @@
       )
 ! !
 
-
 !VariableList class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -134,7 +132,6 @@
       ).
 ! !
 
-
 !VariableList methodsFor:'aspects'!
 
 classHolder
@@ -245,7 +242,6 @@
 
 ! !
 
-
 !VariableList methodsFor:'change & update'!
 
 delayedUpdate:something with:aParameter from:changedObject
@@ -419,7 +415,6 @@
     "Modified: / 20-07-2011 / 18:52:44 / cg"
 ! !
 
-
 !VariableList methodsFor:'generators'!
 
 makeGenerator
@@ -428,7 +423,6 @@
 
 ! !
 
-
 !VariableList methodsFor:'private'!
 
 commonPostBuild
@@ -533,7 +527,7 @@
 
 listOfVariables
 
-    |nameList numClasses classes class commonSubclass showingClassVars
+    |nameList numClasses classes class commonSubclass commonSuperclass showingClassVars
      sortByName classesAlreadyProcessed hasSmallSense smallSenseManager info |
 
     classHolder isNil ifTrue:[
@@ -560,6 +554,12 @@
             classes := Array with:(commonSubclass).
             numClasses := 1.
         ].
+"/        commonSuperclass := Behavior commonSuperclassOf:classes.
+"/        commonSuperclass notNil ifTrue:[
+"/            "/ yes - treat like a single class
+"/            classes := Array with:(commonSuperclass).
+"/            numClasses := 1.
+"/        ].
     ].
 
     numClasses > 1 ifTrue:[
@@ -567,7 +567,14 @@
         "/ unless there is a common subclass ...
         nameList := Set new.
         classesAlreadyProcessed := IdentitySet new.
-        classes do:[:class |
+        classes do:[:eachClass |
+            |class|
+
+           class := eachClass.
+"/            showingClassVars ifTrue:[
+"/                class := class theNonMetaclass 
+"/            ].
+
             hasSmallSense ifTrue:[
                 info := smallSenseManager infoForClassOrNil: class.
             ].                            
@@ -593,7 +600,7 @@
                     class withAllSuperclassesDo:[:cls|
                         (classesAlreadyProcessed includes:cls) ifFalse:[
                             nameList addAll:
-                                    (cls classVarNames collect:[:nm|self listEntryForClass: cls name: nm info: info ]).                            
+                                    (cls instVarNames collect:[:nm|self listEntryForClass: cls name: nm info: info ]).                            
                             classesAlreadyProcessed add:cls.
                         ]
                     ]
@@ -708,7 +715,6 @@
     "Modified: / 23-03-2012 / 15:55:47 / cg"
 ! !
 
-
 !VariableList::VariableEntry class methodsFor:'instance creation'!
 
 application: app class: aClass name: aString
@@ -725,7 +731,6 @@
     "Created: / 12-04-2011 / 15:39:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-
 !VariableList::VariableEntry methodsFor:'accessing'!
 
 application: anObject
@@ -808,7 +813,6 @@
     "Modified (format): / 16-12-2011 / 00:41:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-
 !VariableList::VariableEntry methodsFor:'displaying'!
 
 displayOn:aGC x:x y:y opaque: opaque
@@ -823,7 +827,6 @@
     "Created: / 12-04-2011 / 15:47:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-
 !VariableList::VariableEntry methodsFor:'queries'!
 
 widthOn:aGC
@@ -834,11 +837,10 @@
     "Created: / 16-12-2011 / 01:04:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-
 !VariableList class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__VariableList.st,v 1.20 2013-03-10 14:18:47 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__VariableList.st,v 1.21 2013-07-10 12:04:18 cg Exp $'
 !
 
 version_HG
--- a/VersionDiffBrowser.st	Mon Jul 15 13:16:46 2013 +0100
+++ b/VersionDiffBrowser.st	Tue Jul 16 17:18:09 2013 +0100
@@ -28,7 +28,8 @@
 !
 
 HierarchicalItem subclass:#ClassChangeSet
-	instanceVariableNames:'classBeingCompared labelA labelB diffSet versionA versionB'
+	instanceVariableNames:'class1BeingCompared class2BeingCompared labelA labelB diffSet
+		versionA versionB'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:VersionDiffBrowser
@@ -830,8 +831,7 @@
 !
 
 classBeingCompared
-    "
-    gets the class from the change set which is compared.
+    "returns the class from the change set which is compared.
 
     <return: Class>
     "
@@ -1758,7 +1758,10 @@
 
     |m changeClassName classOrMetaString useChangesString selectorString
      singleComparedClass singleComparedClassesName singleComparedMetaclassesName
-     printString|
+     printString class1 class2|
+
+    class1 := self classChangeSet class1BeingCompared.
+    class2 := self classChangeSet class2BeingCompared.
 
     (singleComparedClass := self classBeingCompared) notNil ifTrue:[
         singleComparedClassesName := singleComparedClass name.
@@ -1783,16 +1786,22 @@
     useChangesString := false.
     classOrMetaString := ''.
 
-    (changeClassName = singleComparedClassesName) ifTrue:[
-        "/ changeClassName := ''.
-        useChangesString := true.
+    (class1 notNil 
+    and:[ class2 notNil
+    and:[ class1 ~= class2 ]]) ifTrue:[
+        changeClassName := ''.
     ] ifFalse:[
-        (changeClassName = singleComparedMetaclassesName) ifTrue:[
-            "/ classOrMetaString := ' class'.
+        (changeClassName = singleComparedClassesName) ifTrue:[
+            "/ changeClassName := ''.
             useChangesString := true.
         ] ifFalse:[
-            ((changeClassName includes:$:) and:[ changeClassName startsWith:((singleComparedClassesName ? ''),'::') ]) ifTrue:[
-                changeClassName := changeClassName copyFrom:(singleComparedClassesName,'::') size+1.
+            (changeClassName = singleComparedMetaclassesName) ifTrue:[
+                "/ classOrMetaString := ' class'.
+                useChangesString := true.
+            ] ifFalse:[
+                ((changeClassName includes:$:) and:[ changeClassName startsWith:((singleComparedClassesName ? ''),'::') ]) ifTrue:[
+                    changeClassName := changeClassName copyFrom:(singleComparedClassesName,'::') size+1.
+                ].
             ].
         ].
     ].
@@ -1800,6 +1809,7 @@
     selectorString := ''.
     (aChange isMethodChange) ifTrue:[
         selectorString := aChange selector.
+
         aChange changeClass notNil ifTrue:[
             m := aChange changeMethod.
             m notNil ifTrue:[
@@ -1897,6 +1907,10 @@
 !
 
 updateLists
+    "walk over the changeSet and setup the 3 lists:
+     onlyInA, changed, onlyInB,
+     Optionally filter extensions, categoryChanges and versionMethods"
+
     |classChangeSet listOnlyInA listOnlyInB listChanged
      printStringGenerator sortBlockForChangeLists filteredList
      isIgnoredChange numIgnoredExtensions numIgnoredVersionMethods 
@@ -2152,7 +2166,7 @@
     |aStream sourceA sourceB theChangeSetA theChangeSetB theClassChangeSet|
 
     theClassChangeSet := self new.
-    theClassChangeSet classBeingCompared:classA.
+    theClassChangeSet class1BeingCompared:classA class2BeingCompared:classB.
     theClassChangeSet labelA:aLabelA.
     theClassChangeSet labelB:aLabelB.
 
@@ -2169,25 +2183,25 @@
     theChangeSetA:=self changeSetForClass:classA andSource:sourceA.
     theChangeSetB:=self changeSetForClass:classB andSource:sourceB.
     theChangeSetA isNil
-	ifTrue: [theChangeSetA := ChangeSet new].
+        ifTrue: [theChangeSetA := ChangeSet new].
     theChangeSetB isNil
-	ifTrue: [theChangeSetB := ChangeSet new].
+        ifTrue: [theChangeSetB := ChangeSet new].
 
     "/ just in case (if comparing a class against another),
     "/ unify the classes of the changes (to avoid that all changes are detected as different)
 
     theChangeSetB do:[:eachChange |
-	eachChange isMethodChange ifTrue:[
-	    eachChange changeClass isMeta ifTrue:[
-		eachChange changeClass ~~ classA theMetaclass ifTrue:[
-		    eachChange changeClass:classA theMetaclass.
-		]
-	    ] ifFalse:[
-		eachChange changeClass ~~ classA theNonMetaclass ifTrue:[
-		    eachChange changeClass:classA theNonMetaclass.
-		]
-	    ].
-	].
+        eachChange isMethodChange ifTrue:[
+            eachChange changeClass isMeta ifTrue:[
+                eachChange changeClass ~~ classA theMetaclass ifTrue:[
+                    eachChange changeClass:classA theMetaclass.
+                ]
+            ] ifFalse:[
+                eachChange changeClass ~~ classA theNonMetaclass ifTrue:[
+                    eachChange changeClass:classA theNonMetaclass.
+                ]
+            ].
+        ].
     ].
     "/ remove all #initialize doIts
     theChangeSetA := theChangeSetA select:[:eachChange | eachChange isDoIt not or:[eachChange isInitialize not]].
@@ -2300,16 +2314,35 @@
 
 !VersionDiffBrowser::ClassChangeSet methodsFor:'accessing'!
 
+class1BeingCompared
+    "returns the class which is compared"
+
+    ^ class1BeingCompared
+!
+
+class1BeingCompared:class1 class2BeingCompared:class2
+    "returns the class which is compared"
+
+    class1BeingCompared := class1.
+    class2BeingCompared := class2
+!
+
+class2BeingCompared
+    "returns the class which is compared"
+
+    ^ class2BeingCompared
+!
+
 classBeingCompared
-    "returns the value of the class which is compared"
-
-    ^ classBeingCompared
+    "returns the class which is compared"
+
+    ^ class1BeingCompared
 !
 
 classBeingCompared:something
     "set the value of the class which is compared"
 
-    classBeingCompared := something.
+    class1BeingCompared := class2BeingCompared := something.
 !
 
 diffSet
@@ -2448,11 +2481,11 @@
 !VersionDiffBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.113 2013-06-06 17:12:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.115 2013-07-09 21:53:31 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.113 2013-06-06 17:12:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.115 2013-07-09 21:53:31 cg Exp $'
 !
 
 version_HG
--- a/resources/de.rs	Mon Jul 15 13:16:46 2013 +0100
+++ b/resources/de.rs	Tue Jul 16 17:18:09 2013 +0100
@@ -1,6 +1,6 @@
 #encoding utf8
 
-; $Header: /cvs/stx/stx/libtool/resources/de.rs,v 1.223 2013-06-27 15:38:08 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/de.rs,v 1.226 2013-07-09 13:25:03 cg Exp $
 ;
 ; German Workspace (and other tools) resources
 ;
@@ -685,7 +685,8 @@
 ; 'Trace'                  'Aufruf protokollieren'
 'Trace Sender'           'Aufrufer protokollieren'
 'Trace Full Walkback'    'Aufrufkette komplett protokollieren'
-'Start Counting'         'Aufrufzhler an'
+'Start Counting'                    'Aufrufzhler an'
+'Start Counting by Receiver Class'  'Aufrufzhler an (per Receiverklasse)'
 'Start Mem Usage'        'Speicherzhler an'
 'Stop Counting'          'Aufrufzhler aus'
 'Stop Mem Usage'         'Speicherzhler aus'
@@ -934,7 +935,9 @@
 'Undo Recent'          'Rckgngig'
 'Redo: %1'             'Rck-rckgngig: %1'
 'Redo'                 'Rck-rckgngig'
-'Set Undo Count'    'Anzahl gemerkter Operationen setzen'
+'Set Undo Count'        'Anzahl gemerkter Operationen setzen'
+'Set Undo Count'        'Anzahl gemerkter Operationen setzen'
+'Remove Class from ChangeSet'   'Klasse aus ChangeSet entfernen'
 
 'Defining variable'                    'Mit Variable'
 'Defining Variable'                    'Mit Variable'
@@ -1177,8 +1180,9 @@
 'SubclassResponsibility here'               'SubclassResponsibility hier'
 'Templates in Subclasses'                       'Methodenskelette in Subklassen'
 'Templates in all Subclasses'                   'Methodenskelette in allen Subklassen'
+'Redefinition in Subclass'                      'Redefinition in Subklasse'
 'SubclassResponsibility in direct Subclasses'   'SubclassResponsibility in direkten Subklassen'
-'SubclassResponsibility in all Subclasses'      'SubclassResponsibility in all Subklassen'
+'SubclassResponsibility in all Subclasses'      'SubclassResponsibility in allen Subklassen'
 'Corresponding Instance Creation in Class'  'Zugehrige Instanzierung auf Klassen-Seite'
 'Forwarding Method in Instance Protocol'    'Weiterleitende Methode auf Instanz-Seite'
 
@@ -1475,7 +1479,7 @@
 'Update Method Template'                                    'Update Methodenvorlage'
 'Visitor Method'                                            'Visitor Methode'
 'Visitor && Visited Methods'                                'Visitor && Visited Methoden'
-'Visitor and Visited Methods'                               'Visitor and Visited Methoden'
+'Visitor and Visited Methods'                               'Visitor und Visited Methoden'
 'Visitor Pattern Support'                                   'Visitor Pattern'
 'Classtype Test Methods'                                    'Typ-Prf-Methoden (isXXX)'
 'Classtype Test Methods for all Subclass(es) (isXXX)'       'Typ-Prf-Methoden fr alle Subklassen (isXXX)'