DebugView.st
changeset 11210 83e08cc8ce48
parent 11209 202af72b0a90
child 11303 28e758994349
child 12123 4bde08cebd48
--- a/DebugView.st	Fri Jan 27 11:13:48 2012 +0100
+++ b/DebugView.st	Fri Jan 27 11:50:31 2012 +0100
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -12,35 +12,36 @@
 "{ Package: 'stx:libtool' }"
 
 StandardSystemView subclass:#DebugView
-	instanceVariableNames:'busy haveControl exitAction canContinue contextView codeView
-		receiverInspector contextInspector contextArray selectedContext
-		catchBlock grabber mayProceed traceView tracing bigStep
-		skipLineNr steppedContextAddress abortButton terminateButton
-		continueButton stepButton nextButton nextOverButton nextOutButton
-		sendButton returnButton restartButton exclusive inspecting
-		nChainShown inspectedProcess updateProcess stopButton
-		updateButton defineButton monitorToggle stepping
-		steppedContextLineno stepForReturn actualContext inWrap
-		stackInspector steppedContext wrapperContext verboseBacktrace
-		firstContext stepHow cachable currentMethod ignoreBreakpoints
-		stepUntilEntering lastStepUntilEntering
-		lastSelectionInReceiverInspector lastSelectionInContextInspector
-		canShowMore exitAbort reportButton setOfHiddenCallingSelectors
-		isStoppedAtHaltOrBreakPoint exceptionInfoLabel methodCodeToggle
-		methodCodeToggleSelectionHolder'
-	classVariableNames:'CachedDebugger CachedExclusive OpenDebuggers MoreDebuggingDetail
-		DebuggingDebugger DefaultDebuggerBackgroundColor
-		InitialNChainShown IgnoredHalts ShowThreadID LastIgnoreHaltNTimes
-		LastIgnoreHaltDuration LastExtent LastOrigin'
-	poolDictionaries:''
-	category:'Interface-Debugger'
+        instanceVariableNames:'busy haveControl exitAction canContinue contextView codeView
+                receiverInspector contextInspector contextArray selectedContext
+                catchBlock grabber mayProceed traceView tracing bigStep
+                skipLineNr steppedContextAddress abortButton terminateButton
+                continueButton stepButton nextButton nextOverButton nextOutButton
+                sendButton returnButton restartButton exclusive inspecting
+                nChainShown inspectedProcess updateProcess stopButton
+                updateButton defineButton monitorToggle stepping
+                steppedContextLineno stepForReturn actualContext inWrap
+                stackInspector steppedContext wrapperContext verboseBacktrace
+                firstContext stepHow cachable currentMethod ignoreBreakpoints
+                stepUntilEntering lastStepUntilEntering
+                lastSelectionInReceiverInspector lastSelectionInContextInspector
+                canShowMore exitAbort reportButton setOfHiddenCallingSelectors
+                isStoppedAtHaltOrBreakPoint exceptionInfoLabel methodCodeToggle
+                methodCodeToggleSelectionHolder'
+        classVariableNames:'CachedDebugger CachedExclusive OpenDebuggers MoreDebuggingDetail
+                DebuggingDebugger DefaultDebuggerBackgroundColor
+                InitialNChainShown IgnoredHalts ShowThreadID LastIgnoreHaltNTimes
+                LastIgnoreHaltDuration LastExtent LastOrigin'
+        poolDictionaries:''
+        category:'Interface-Debugger'
 !
 
 Object subclass:#IgnoredHalt
-	instanceVariableNames:'weakMethodHolder lineNumber ignoreEndTime ignoreCount'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:DebugView
+        instanceVariableNames:'weakMethodHolder lineNumber ignoreEndTime ignoreCount
+                ignoreUntilShiftKeyPressed'
+        classVariableNames:''
+        poolDictionaries:''
+        privateIn:DebugView
 !
 
 !DebugView class methodsFor:'documentation'!
@@ -48,7 +49,7 @@
 copyright
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -84,25 +85,25 @@
     See additional information in 'doc/misc/debugger.doc'.
 
     Notice:
-	the DebugView class caches the last used debugger in a class
-	variable. It may happen, that a malfunctioning debugger (for example,
-	a halfway destroyed one) is kept there. You will notice this, if a
-	debugger comes up without showing any contents. In this case, close
-	(or destroy) the broken debugView, and execute
-	    Debugger newDebugger
-	which removes the cached debugger and forces creation of a new one the
-	next time. This is a temporary workaround - the debugger will be fixed to
-	avoid this problem.
-	You also have to remove the cached debugger, if you change the debugger's
-	initialization code (buttons, menu, etc.) and you want the new code to become
-	effective.
+        the DebugView class caches the last used debugger in a class
+        variable. It may happen, that a malfunctioning debugger (for example,
+        a halfway destroyed one) is kept there. You will notice this, if a
+        debugger comes up without showing any contents. In this case, close
+        (or destroy) the broken debugView, and execute
+            Debugger newDebugger
+        which removes the cached debugger and forces creation of a new one the
+        next time. This is a temporary workaround - the debugger will be fixed to
+        avoid this problem.
+        You also have to remove the cached debugger, if you change the debugger's
+        initialization code (buttons, menu, etc.) and you want the new code to become
+        effective.
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 
     [see also:]
-	Exception Signal
-	Process
+        Exception Signal
+        Process
 "
 ! !
 
@@ -148,7 +149,7 @@
     OpenDebuggers := nil.
 
     (Debugger isBehavior and:[Debugger name = #DebugView]) ifTrue:[
-	Debugger := self
+        Debugger := self
     ].
 
     "
@@ -207,9 +208,9 @@
     IgnoredHalts isNil ifTrue:[^ nil].
 
     IgnoredHalts do:[:ign |
-	(ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
-	    ^ ign
-	].
+        (ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
+            ^ ign
+        ].
     ].
     ^ nil.
 !
@@ -219,7 +220,7 @@
     ^ IgnoredHalts notEmptyOrNil
 !
 
-ignoreHaltIn:haltingMethod at:lineNrOfHalt forCount:countOrNil orTimeDuration:dTOrNil
+ignoreHaltIn:haltingMethod at:lineNrOfHalt forCount:countOrNil orTimeDuration:dTOrNil orUntilShiftKey:untilShiftKey
     "remember to ignore a halt in some method for some number of invocations
      or until some time has elapsed.
      With nil count and time arguments, such an ignored halt is reactivated"
@@ -227,32 +228,35 @@
     |oldEntry ign|
 
     IgnoredHalts notNil ifTrue:[
-	self removeInactiveIgnores.
-	oldEntry := IgnoredHalts
-			detect:[:ign | ign isForMethod:haltingMethod line:lineNrOfHalt]
-			ifNone:nil.
-	oldEntry notNil ifTrue:[
-	    IgnoredHalts remove:oldEntry ifAbsent:[].
-	]
-    ].
-
-    (countOrNil notNil or:[dTOrNil notNil]) ifTrue:[
-	IgnoredHalts isNil ifTrue:[
-	    IgnoredHalts := OrderedCollection new.
-	].
-	ign := IgnoredHalt new method:haltingMethod lineNumber:lineNrOfHalt.
-
-	(countOrNil notNil and:[countOrNil > 0]) ifTrue:[
-	    ign ignoreCount:countOrNil.
-	].
-	(dTOrNil notNil) ifTrue:[
-	    ign ignoreEndTime:(Timestamp now + dTOrNil).
-	].
-	IgnoredHalts add:ign.
+        self removeInactiveIgnores.
+        oldEntry := IgnoredHalts
+                        detect:[:ign | ign isForMethod:haltingMethod line:lineNrOfHalt]
+                        ifNone:nil.
+        oldEntry notNil ifTrue:[
+            IgnoredHalts remove:oldEntry ifAbsent:[].
+        ]
+    ].
+
+    (countOrNil notNil or:[dTOrNil notNil or:[untilShiftKey == true]]) ifTrue:[
+        IgnoredHalts isNil ifTrue:[
+            IgnoredHalts := OrderedCollection new.
+        ].
+        ign := IgnoredHalt new method:haltingMethod lineNumber:lineNrOfHalt.
+
+        (countOrNil notNil and:[countOrNil > 0]) ifTrue:[
+            ign ignoreCount:countOrNil.
+        ].
+        (dTOrNil notNil) ifTrue:[
+            ign ignoreEndTime:(Timestamp now + dTOrNil).
+        ].
+        untilShiftKey == true ifTrue:[
+            ign ignoreUntilShiftKeyPressed:true.
+        ].
+        IgnoredHalts add:ign.
     ].
     Smalltalk changed:#ignoredHalts.
 
-    "Modified: / 22-10-2010 / 13:52:02 / cg"
+    "Created: / 27-01-2012 / 11:33:38 / cg"
 !
 
 isHaltToBeIgnored
@@ -317,9 +321,9 @@
 
 isHaltToBeIgnoredIn:haltingMethod atLineNr:lineNrInHaltingMethod
     ^ self
-	isHaltToBeIgnoredIn:haltingMethod
-	atLineNr:lineNrInHaltingMethod
-	modifyEntryCount:false
+        isHaltToBeIgnoredIn:haltingMethod
+        atLineNr:lineNrInHaltingMethod
+        modifyEntryCount:false
 !
 
 isHaltToBeIgnoredIn:haltingMethod atLineNr:lineNrInHaltingMethod modifyEntryCount:modifyCount
@@ -329,33 +333,34 @@
 
     "/ Transcript showCR:'halt/break in ',haltingMethod printString,' at ',lineNrInHaltingMethod printString.
     IgnoredHalts do:[:ign |
-	(ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
-	    Transcript showCR:'Debugger [info]: halt ignored in ', haltingMethod whoString.
-	    modifyCount ifTrue:[ ign decrementIgnoreCount ].
-	    ign isHaltIgnored ifFalse:[
-		Transcript showCR:'Debugger [info]: no longer ignore halt in ', haltingMethod whoString.
-		IgnoredHalts remove:ign ifAbsent:[].
-	    ].
-	    ^ true.
-	].
+        (ign isHaltIgnoredInMethod:haltingMethod line:lineNrInHaltingMethod) ifTrue:[
+            Transcript show:'Debugger [info]: halt ignored in ', haltingMethod whoString.
+            Transcript show:' ('; show:ign; showCR:')'.
+            modifyCount ifTrue:[ ign decrementIgnoreCount ].
+            ign isHaltIgnored ifFalse:[
+                Transcript showCR:'Debugger [info]: no longer ignore halt in ', haltingMethod whoString.
+                IgnoredHalts remove:ign ifAbsent:[].
+            ].
+            ^ true.
+        ].
     ].
 
     IgnoredHalts := IgnoredHalts
-	select:[:ign |
-	    ign isActive and:[ (ign isForMethod:haltingMethod line:lineNrInHaltingMethod) not ]
-	].
+        select:[:ign |
+            ign isActive and:[ (ign isForMethod:haltingMethod line:lineNrInHaltingMethod) not ]
+        ].
     IgnoredHalts isEmpty ifTrue:[
-	IgnoredHalts := nil.
+        IgnoredHalts := nil.
     ].
 
     ^ false.
 
-    "Modified: / 22-10-2010 / 13:51:45 / cg"
+    "Modified: / 27-01-2012 / 11:41:19 / cg"
 !
 
 removeInactiveIgnores
     IgnoredHalts notNil ifTrue:[
-	IgnoredHalts := IgnoredHalts select:[:i | i isActive].
+        IgnoredHalts := IgnoredHalts select:[:i | i isActive].
     ].
 !
 
@@ -374,9 +379,9 @@
     <context: #return>
 
     ^ self
-	enter:thisContext sender
-	withMessage:'debugger entered'
-	mayProceed:true.
+        enter:thisContext sender
+        withMessage:'debugger entered'
+        mayProceed:true.
 !
 
 enter:aContext withMessage:aString
@@ -385,9 +390,9 @@
     <context: #return>
 
     ^ self
-	enter:aContext
-	withMessage:aString
-	mayProceed:true
+        enter:aContext
+        withMessage:aString
+        mayProceed:true
 !
 
 enter:aContext withMessage:aString mayProceed:mayProceed
@@ -402,32 +407,32 @@
 
     StepInterruptPending := nil.
     ControlInterrupt handle:[:ex |
-	'DebugView [info]: breakpoint in debugger setup ignored [enter.]' infoPrintCR.
-	('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
-	ex proceed
+        'DebugView [info]: breakpoint in debugger setup ignored [enter.]' infoPrintCR.
+        ('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
+        ex proceed
     ] do:[
-	"
-	 well, it could be a stepping or sending debugger up there;
-	 in this case, return to it. This happens, when a stepping process
-	 runs into an error (for example, a halt). In this case, we want the
-	 stepping debugger to come up again instead of a new one.
-	"
-	OpenDebuggers notNil ifTrue:[
-	    active := Processor activeProcess.
-	    OpenDebuggers do:[:aDebugger |
-		(aDebugger notNil and:[aDebugger ~~ 0]) ifTrue:[
-		    (aDebugger inspectedProcess == active) ifTrue:[
-			aDebugger device isOpen ifTrue:[
-			    "/ 'entering stepping debugger again' printNL.
-			    aDebugger unstep.
-			    aDebugger setLabelFor:aString in:active.
-			    aDebugger mayProceed:mayProceed.
-			    ^ aDebugger enter:aContext select:nil.
-			]
-		    ]
-		]
-	    ]
-	].
+        "
+         well, it could be a stepping or sending debugger up there;
+         in this case, return to it. This happens, when a stepping process
+         runs into an error (for example, a halt). In this case, we want the
+         stepping debugger to come up again instead of a new one.
+        "
+        OpenDebuggers notNil ifTrue:[
+            active := Processor activeProcess.
+            OpenDebuggers do:[:aDebugger |
+                (aDebugger notNil and:[aDebugger ~~ 0]) ifTrue:[
+                    (aDebugger inspectedProcess == active) ifTrue:[
+                        aDebugger device isOpen ifTrue:[
+                            "/ 'entering stepping debugger again' printNL.
+                            aDebugger unstep.
+                            aDebugger setLabelFor:aString in:active.
+                            aDebugger mayProceed:mayProceed.
+                            ^ aDebugger enter:aContext select:nil.
+                        ]
+                    ]
+                ]
+            ]
+        ].
     ].
     ^ self enterUnconditional:aContext withMessage:aString mayProceed:mayProceed
 
@@ -441,9 +446,9 @@
      sent from error- and halt messages."
 
     ^ self
-	enter:ex returnableSuspendedContext
-	withMessage:ex descriptionForDebugger
-	mayProceed:(ex mayProceed).
+        enter:ex returnableSuspendedContext
+        withMessage:ex descriptionForDebugger
+        mayProceed:(ex mayProceed).
 !
 
 enterUnconditional:aContext withMessage:aString mayProceed:mayProceed
@@ -458,27 +463,27 @@
     "/ ignore halts & breakpoints while setting up the debugger
     "/ to avoid recursive debugging ...
     ControlInterrupt handle:[:ex |
-	'DebugView [info]: breakpoint in debugger setup ignored [enterUncond.]' infoPrintCR.
-	('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
-	ex proceed
+        'DebugView [info]: breakpoint in debugger setup ignored [enterUncond.]' infoPrintCR.
+        ('DebugView [info]: breakpoint on:' , ex suspendedContext printString) infoPrintCR.
+        ex proceed
     ] do:[
-	aDebugger := self new.
+        aDebugger := self new.
     ].
 
     aDebugger isNil ifTrue:[
-	'DebugView [error]: cannot open debugger' errorPrintCR.
-	'DebugView [error]: Exception: ' errorPrint. aString errorPrintCR.
-	mayProceed ifTrue:[
-	    (Dialog confirm:'Error/Breakpoint cought.\\Press Continue or Abort.' withCRs
-		   yesLabel:'Continue' noLabel:'Abort')
-	    ifTrue:[
-		^ nil
-	    ].
-	] ifFalse:[
-	    self information:'Error cought.\\Press OK to abort the operation.' withCRs.
-	].
-	AbortOperationRequest raise.
-	"not reached"
+        'DebugView [error]: cannot open debugger' errorPrintCR.
+        'DebugView [error]: Exception: ' errorPrint. aString errorPrintCR.
+        mayProceed ifTrue:[
+            (Dialog confirm:'Error/Breakpoint cought.\\Press Continue or Abort.' withCRs
+                   yesLabel:'Continue' noLabel:'Abort')
+            ifTrue:[
+                ^ nil
+            ].
+        ] ifFalse:[
+            self information:'Error cought.\\Press OK to abort the operation.' withCRs.
+        ].
+        AbortOperationRequest raise.
+        "not reached"
     ].
 
     aDebugger mayProceed:mayProceed.
@@ -487,7 +492,7 @@
     ^ nil.
 
     "
-	nil halt
+        nil halt
     "
 
     "Modified: / 18.11.2001 / 00:29:23 / cg"
@@ -499,9 +504,9 @@
     <context: #return>
 
     ^ self
-	enter:(thisContext sender)
-	withMessage:message
-	mayProceed:true.
+        enter:(thisContext sender)
+        withMessage:message
+        mayProceed:true.
 !
 
 new
@@ -515,14 +520,14 @@
     currentScreen := Screen current.
 
     currentScreen notNil ifTrue:[
-	(currentScreen suppressDebugger) ifTrue:[
-	    "/ no debuggers with that device - show an alertBox which aborts...
-	    ^ nil.
-	].
-	(currentScreen mayOpenDebugger) ifFalse:[
-	    "/ no debugger on that device - but on the main screen
-	    currentScreen := Screen default.
-	].
+        (currentScreen suppressDebugger) ifTrue:[
+            "/ no debuggers with that device - show an alertBox which aborts...
+            ^ nil.
+        ].
+        (currentScreen mayOpenDebugger) ifFalse:[
+            "/ no debugger on that device - but on the main screen
+            currentScreen := Screen default.
+        ].
     ].
 
     "
@@ -531,46 +536,46 @@
      (because otherwise we would not get any events here ...
     "
     Processor activeProcessIsSystemProcess ifTrue:[
-	((debugger := CachedExclusive) isNil
-	or:[debugger device ~~ currentScreen
-	or:[currentScreen isNil
-	or:[currentScreen isOpen not]]]) ifTrue:[
-	    debugger := self newExclusive
-	].
-	CachedExclusive := nil.
+        ((debugger := CachedExclusive) isNil
+        or:[debugger device ~~ currentScreen
+        or:[currentScreen isNil
+        or:[currentScreen isOpen not]]]) ifTrue:[
+            debugger := self newExclusive
+        ].
+        CachedExclusive := nil.
     ] ifFalse:[
-	CachedDebugger notNil ifTrue:[
-	    (CachedDebugger device ~~ currentScreen
-	    or:[currentScreen isNil
-	    or:[currentScreen isOpen not
-	    or:[CachedDebugger class ~~ self]]]) ifTrue:[
-		CachedDebugger := nil
-	    ]
-	].
-
-	(debugger := CachedDebugger) notNil ifTrue:[
-	    CachedDebugger := nil.
-	] ifFalse:[
-	    debuggerDevice := currentScreen.
-	    debuggerDevice isNil ifTrue:[
-		"/ use the default display
-		debuggerDevice := Screen default.
-	    ].
-	    (debuggerDevice isNil
-	    or:[debuggerDevice isOpen not
-	    "/ or:[debuggerDevice mayOpenDebugger not]
-	    ]) ifTrue:[
-		"/ no debugger
-		^ nil.
-	    ].
-
-	    Screen currentScreenQuerySignal answer:debuggerDevice
-	    do:[
-		debugger := super new.
-	    ].
-	    debugger label:'Debugger'.
-	    debugger icon:self defaultIcon.
-	]
+        CachedDebugger notNil ifTrue:[
+            (CachedDebugger device ~~ currentScreen
+            or:[currentScreen isNil
+            or:[currentScreen isOpen not
+            or:[CachedDebugger class ~~ self]]]) ifTrue:[
+                CachedDebugger := nil
+            ]
+        ].
+
+        (debugger := CachedDebugger) notNil ifTrue:[
+            CachedDebugger := nil.
+        ] ifFalse:[
+            debuggerDevice := currentScreen.
+            debuggerDevice isNil ifTrue:[
+                "/ use the default display
+                debuggerDevice := Screen default.
+            ].
+            (debuggerDevice isNil
+            or:[debuggerDevice isOpen not
+            "/ or:[debuggerDevice mayOpenDebugger not]
+            ]) ifTrue:[
+                "/ no debugger
+                ^ nil.
+            ].
+
+            Screen currentScreenQuerySignal answer:debuggerDevice
+            do:[
+                debugger := super new.
+            ].
+            debugger label:'Debugger'.
+            debugger icon:self defaultIcon.
+        ]
     ].
     ^ debugger
 
@@ -600,15 +605,15 @@
     aDebugger := super new.
     aDebugger icon:self defaultIcon.
     aProcess notNil ifTrue:[
-	nm := aProcess name.
-	nm notNil ifTrue:[
-	    nm := (nm contractTo:17) , '-' , aProcess id printString
-	] ifFalse:[
-	    nm := aProcess id printString
-	].
-	label := 'Debugger [' , nm , ']'.
+        nm := aProcess name.
+        nm notNil ifTrue:[
+            nm := (nm contractTo:17) , '-' , aProcess id printString
+        ] ifFalse:[
+            nm := aProcess id printString
+        ].
+        label := 'Debugger [' , nm , ']'.
     ] ifFalse:[
-	label := 'no process'
+        label := 'no process'
     ].
     aDebugger label:label iconLabel:'Debugger'.
     aDebugger openOn:aProcess.
@@ -635,386 +640,398 @@
 
     ^
      #(Menu
-	(
-	 (MenuItem
-	    label: 'File'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  enabled: canSendEmail
-		  label: 'Report a Bug via eMail...'
-		  itemValue: doOpenReportMailApp
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Exit'
-		  itemValue: closeRequest
-		  translateLabel: true
-		  isVisible: isInspecting
-		)
-	       (MenuItem
-		  label: 'Close Debugger and Abort'
-		  itemValue: closeRequest
-		  translateLabel: true
-		  isVisible: isNotInspecting
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'View'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  enabled: canShowMore
-		  label: 'Show More WalkBack'
-		  itemValue: showMore
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Show Verbose WalkBack'
-		  itemValue: toggleVerboseWalkback
-		  translateLabel: true
-		  isVisible: showingDenseWalkback
-		)
-	       (MenuItem
-		  label: 'Show Dense WalkBack'
-		  itemValue: toggleVerboseWalkback
-		  translateLabel: true
-		  isVisible: showingVerboseWalkback
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Raise Debugger when Entering'
-		  itemValue: autoRaiseView:
-		  translateLabel: true
-		  indication: autoRaiseView
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Settings...'
-		  itemValue: openSettingsDialog
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'Process'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  label: 'Continue'
-		  itemValue: doContinue
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Next (Line-Step)'
-		  itemValue: doNext
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Step'
-		  itemValue: doStep
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Abort'
-		  itemValue: doAbort
-		  translateLabel: true
-		)
-	       (MenuItem
-		  enabled: abortAllIsHandled
-		  label: 'Abort All'
-		  itemValue: doAbortAll
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Terminate'
-		  itemValue: doTerminate
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'Context'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  enabled: canReturn
-		  label: 'Return'
-		  itemValue: doReturn
-		  translateLabel: true
-		)
-	       (MenuItem
-		  enabled: canRestart
-		  label: 'Restart'
-		  itemValue: doRestart
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  enabled: hasContextSelected
-		  label: 'Inspect'
-		  itemValue: inspectContext
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Copy WalkBack Text'
-		  itemValue: copyWalkbackText
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Bookmark Method in SystemBrowser'
-		  itemValue: addBrowserBookmark
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'Class'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  enabled: canBrowseImplementingClass
-		  label: 'Browse Implementing Class'
-		  itemValue: browseImplementingClass
-		  translateLabel: true
-		)
-	       (MenuItem
-		  enabled: canBrowseReceiversClass
-		  label: 'Browse Receivers Class'
-		  itemValue: browseReceiversClass
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  enabled: canBrowseClassHierarchy
-		  label: 'Browse Receivers Class Hierarchy'
-		  itemValue: browseClassHierarchy
-		  translateLabel: true
-		)
-	       (MenuItem
-		  enabled: canBrowseFullClassProtocol
-		  label: 'Browse Receivers Full Protocol'
-		  itemValue: browseFullClassProtocol
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  enabled: canBrowseProcessesApplication
-		  label: 'Browse Application Class'
-		  itemValue: browseProcessesApplication
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'Selector'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  label: 'Browse Implementors...'
-		  itemValue: browseImplementorsOf
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Browse Senders...'
-		  itemValue: browseSendersOf
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  enabled: canDefineMethod
-		  label: 'Define Missing Method'
-		  itemValue: doDefineMethod
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'Breakpoint'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  enabled: canRemoveBreakpoint
-		  label: 'Remove Breakpoint'
-		  itemValue: removeBreakpoint
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Remove all Breakpoints'
-		  itemValue: removeAllBreakpoints
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  enabled: canAddBreakpoint
-		  label: 'Add Breakpoint'
-		  itemValue: addBreakpoint
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Ignore this Halt/BreakPoint'
-		  translateLabel: true
-		  submenu:
-		 (Menu
-		    (
-		     (MenuItem
-			enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
-			label: 'For Some Time...'
-			itemValue: openIgnoreHaltUntilTimeElapsedDialog
-			translateLabel: true
-		      )
-		     (MenuItem
-			enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
-			label: 'For the Next N Times...'
-			itemValue: openIgnoreHaltNTimesDialog
-			translateLabel: true
-		      )
-		     (MenuItem
-			enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
-			label: 'Forever (Until Ignoring is Stopped)'
-			itemValue: ignoreHaltForever
-			translateLabel: true
-		      )
-		     )
-		    nil
-		    nil
-		  )
-		)
-	       (MenuItem
-		  label: 'Ignore all Halts/BreakPoints'
-		  translateLabel: true
-		  submenu:
-		 (Menu
-		    (
-		     (MenuItem
-			label: 'For Some Time...'
-			itemValue: openIgnoreAllHaltsUntilTimeElapsedDialog
-			translateLabel: true
-		      )
-		     (MenuItem
-			label: 'Forever (Until Ignoring is Stopped)'
-			itemValue: ignoreAllHaltsForever
-			translateLabel: true
-		      )
-		     )
-		    nil
-		    nil
-		  )
-		)
-	       (MenuItem
-		  enabled: hasHaltsToIgnore
-		  label: 'Stop Ignoring'
-		  itemValue: stopIgnoringHalts
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Manage Breakpoints'
-		  itemValue: openBreakPointBrowser
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Allow Breakpoints in Debugger'
-		  itemValue: allowBreakPointsInDebugger:
-		  translateLabel: true
-		  indication: allowBreakPointsInDebugger
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'Help'
-	    translateLabel: true
-	    startGroup: right
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  label: 'Debuggers Documentation'
-		  itemValue: openHTMLDocument:
-		  translateLabel: true
-		  argument: 'tools/debugger/TOP.html'
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'About DebugView...'
-		  itemValue: openAboutThisApplication
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            label: 'File'
+            translateLabel: true
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  enabled: canSendEmail
+                  label: 'Report a Bug via eMail...'
+                  itemValue: doOpenReportMailApp
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Exit'
+                  itemValue: closeRequest
+                  translateLabel: true
+                  isVisible: isInspecting
+                )
+               (MenuItem
+                  label: 'Close Debugger and Abort'
+                  itemValue: closeRequest
+                  translateLabel: true
+                  isVisible: isNotInspecting
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'View'
+            translateLabel: true
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  enabled: canShowMore
+                  label: 'Show More WalkBack'
+                  itemValue: showMore
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Show Verbose WalkBack'
+                  itemValue: toggleVerboseWalkback
+                  translateLabel: true
+                  isVisible: showingDenseWalkback
+                )
+               (MenuItem
+                  label: 'Show Dense WalkBack'
+                  itemValue: toggleVerboseWalkback
+                  translateLabel: true
+                  isVisible: showingVerboseWalkback
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Raise Debugger when Entering'
+                  itemValue: autoRaiseView:
+                  translateLabel: true
+                  indication: autoRaiseView
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Settings...'
+                  itemValue: openSettingsDialog
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Process'
+            translateLabel: true
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  label: 'Continue'
+                  itemValue: doContinue
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Next (Line-Step)'
+                  itemValue: doNext
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Step'
+                  itemValue: doStep
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Abort'
+                  itemValue: doAbort
+                  translateLabel: true
+                )
+               (MenuItem
+                  enabled: abortAllIsHandled
+                  label: 'Abort All'
+                  itemValue: doAbortAll
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Terminate'
+                  itemValue: doTerminate
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Context'
+            translateLabel: true
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  enabled: canReturn
+                  label: 'Return'
+                  itemValue: doReturn
+                  translateLabel: true
+                )
+               (MenuItem
+                  enabled: canRestart
+                  label: 'Restart'
+                  itemValue: doRestart
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasContextSelected
+                  label: 'Inspect'
+                  itemValue: inspectContext
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Copy WalkBack Text'
+                  itemValue: copyWalkbackText
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Bookmark Method in SystemBrowser'
+                  itemValue: addBrowserBookmark
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Class'
+            translateLabel: true
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  enabled: canBrowseImplementingClass
+                  label: 'Browse Implementing Class'
+                  itemValue: browseImplementingClass
+                  translateLabel: true
+                )
+               (MenuItem
+                  enabled: canBrowseReceiversClass
+                  label: 'Browse Receivers Class'
+                  itemValue: browseReceiversClass
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: canBrowseClassHierarchy
+                  label: 'Browse Receivers Class Hierarchy'
+                  itemValue: browseClassHierarchy
+                  translateLabel: true
+                )
+               (MenuItem
+                  enabled: canBrowseFullClassProtocol
+                  label: 'Browse Receivers Full Protocol'
+                  itemValue: browseFullClassProtocol
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: canBrowseProcessesApplication
+                  label: 'Browse Application Class'
+                  itemValue: browseProcessesApplication
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Selector'
+            translateLabel: true
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  label: 'Browse Implementors...'
+                  itemValue: browseImplementorsOf
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Browse Senders...'
+                  itemValue: browseSendersOf
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: canDefineMethod
+                  label: 'Define Missing Method'
+                  itemValue: doDefineMethod
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Breakpoint'
+            translateLabel: true
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  enabled: canRemoveBreakpoint
+                  label: 'Remove Breakpoint'
+                  itemValue: removeBreakpoint
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Remove all Breakpoints'
+                  itemValue: removeAllBreakpoints
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: canAddBreakpoint
+                  label: 'Add Breakpoint'
+                  itemValue: addBreakpoint
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Ignore this Halt/BreakPoint'
+                  translateLabel: true
+                  submenu:
+                 (Menu
+                    (
+                     (MenuItem
+                        enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
+                        label: 'For Some Time...'
+                        itemValue: openIgnoreHaltUntilTimeElapsedDialog
+                        translateLabel: true
+                      )
+                     (MenuItem
+                        enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
+                        label: 'For the Next N Times...'
+                        itemValue: openIgnoreHaltNTimesDialog
+                        translateLabel: true
+                      )
+                     (MenuItem
+                        label: 'Until Shift-Key is Pressed'
+                        itemValue: ignoreHaltUntilShiftKeyIsPressed
+                        translateLabel: true
+                      )
+                     (MenuItem
+                        enabled: isStoppedAtHaltOrBreakPointOrSelectedContextIsWrapped
+                        label: 'Forever (Until Ignoring is Stopped)'
+                        itemValue: ignoreHaltForever
+                        translateLabel: true
+                      )
+                     )
+                    nil
+                    nil
+                  )
+                )
+               (MenuItem
+                  label: 'Ignore all Halts/BreakPoints'
+                  translateLabel: true
+                  submenu:
+                 (Menu
+                    (
+                     (MenuItem
+                        label: 'For Some Time...'
+                        itemValue: openIgnoreAllHaltsUntilTimeElapsedDialog
+                        translateLabel: true
+                      )
+                     (MenuItem
+                        label: 'Until Shift-Key is Pressed'
+                        itemValue: ignoreAllHaltsUntilShiftKeyIsPressed
+                        translateLabel: true
+                      )
+                     (MenuItem
+                        label: 'Forever (Until Ignoring is Stopped)'
+                        itemValue: ignoreAllHaltsForever
+                        translateLabel: true
+                      )
+                     )
+                    nil
+                    nil
+                  )
+                )
+               (MenuItem
+                  enabled: hasHaltsToIgnore
+                  label: 'Stop Ignoring'
+                  itemValue: stopIgnoringHalts
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Manage Breakpoints'
+                  itemValue: openBreakPointBrowser
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Allow Breakpoints in Debugger'
+                  itemValue: allowBreakPointsInDebugger:
+                  translateLabel: true
+                  indication: allowBreakPointsInDebugger
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Help'
+            translateLabel: true
+            startGroup: right
+            submenu:
+           (Menu
+              (
+               (MenuItem
+                  label: 'Debuggers Documentation'
+                  itemValue: openHTMLDocument:
+                  translateLabel: true
+                  argument: 'tools/debugger/TOP.html'
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'About DebugView...'
+                  itemValue: openAboutThisApplication
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
       )
+
+    "Modified: / 27-01-2012 / 11:29:45 / cg"
 ! !
 
 !DebugView class methodsFor:'misc'!
@@ -1032,9 +1049,9 @@
     con := aContext.
     idx := 1.
     [(idx <= someContexts size) and:[con notNil]] whileTrue:[
-	someContexts at:idx put:con.
-	con := con sender.
-	idx := idx + 1.
+        someContexts at:idx put:con.
+        con := con sender.
+        idx := idx + 1.
     ].
     idx := self interestingContextIndexIn:someContexts.
     ^ someContexts at:idx.
@@ -1284,30 +1301,30 @@
 
     m := contextView middleButtonMenu.
     m notNil ifTrue:[
-	self updateMenuItems.
-
-	(inspecting or:[AbortOperationRequest isHandled]) ifTrue:[
-	    abortButton enable.
-	    m enable:#doAbort.
-	] ifFalse:[
-	    abortButton disable.
-	    m disable:#doAbort.
-	].
-	exclusive ifTrue:[
-	    terminateButton disable.
-	    m disable:#doTerminate.
-	] ifFalse:[
-	    terminateButton enable.
-	    m enable:#doTerminate.
-	]
+        self updateMenuItems.
+
+        (inspecting or:[AbortOperationRequest isHandled]) ifTrue:[
+            abortButton enable.
+            m enable:#doAbort.
+        ] ifFalse:[
+            abortButton disable.
+            m disable:#doAbort.
+        ].
+        exclusive ifTrue:[
+            terminateButton disable.
+            m disable:#doTerminate.
+        ] ifFalse:[
+            terminateButton enable.
+            m enable:#doTerminate.
+        ]
     ].
 
     mayProceed == false ifTrue:[
-	continueButton disable.
-	m notNil ifTrue:[m disable:#doContinue].
+        continueButton disable.
+        m notNil ifTrue:[m disable:#doContinue].
     ] ifFalse:[
-	continueButton enable.
-	m notNil ifTrue:[m enable:#doContinue]
+        continueButton enable.
+        m notNil ifTrue:[m enable:#doContinue]
     ].
 
     "Created: / 16.11.2001 / 17:40:51 / cg"
@@ -1322,46 +1339,46 @@
     |con m enteredByInterrupt sel iAmNew foundNoByteCodeContext foundExitContext c|
 
     DebuggingDebugger == true ifTrue:[
-	'==> enter: (' print. aContext print.
-	') select: ' print. initialSelectionOrNil printCR.
+        '==> enter: (' print. aContext print.
+        ') select: ' print. initialSelectionOrNil printCR.
     ].
     thisContext isRecursive ifTrue:[
-	"/ care for the special case, were the Debugger was autoloaded.
-	"/ in this case, thisContext IS recursive, but thats no error
-	"/ condition.
-	foundNoByteCodeContext := false.
-	foundExitContext := false.
-
-	c := thisContext findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
-	[
-	 foundNoByteCodeContext not
-	 and:[ foundExitContext not
-	 and:[c notNil
-	 and:[c selector ~~ #enter:withMessage:mayProceed:
-	]]]]
-	whileTrue:[
-	    c selector == #exit_unwindThenDo: ifTrue:[
-		foundExitContext := true
-	    ].
-	    c selector == #noByteCode ifTrue:[
-		foundNoByteCodeContext := true
-	    ].
-	    c := c findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
-	].
-
-	(foundNoByteCodeContext not
-	and:[ foundExitContext not]) ifFalse:[
-	    ('DebugView [warning]: reentered') errorPrintCR.
-
-	    ^ MiniDebugger
-		enter:aContext
-		withMessage:'DebugView [error]: recursive error (in debugger)'
-		mayProceed:mayProceed.
-	].
-	foundExitContext ifTrue:[
-	    'DebugView [error]: recursive error (in debugger) ignored' printCR.
-	    ^ self.
-	].
+        "/ care for the special case, were the Debugger was autoloaded.
+        "/ in this case, thisContext IS recursive, but thats no error
+        "/ condition.
+        foundNoByteCodeContext := false.
+        foundExitContext := false.
+
+        c := thisContext findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
+        [
+         foundNoByteCodeContext not
+         and:[ foundExitContext not
+         and:[c notNil
+         and:[c selector ~~ #enter:withMessage:mayProceed:
+        ]]]]
+        whileTrue:[
+            c selector == #exit_unwindThenDo: ifTrue:[
+                foundExitContext := true
+            ].
+            c selector == #noByteCode ifTrue:[
+                foundNoByteCodeContext := true
+            ].
+            c := c findNextContextWithSelector:#enter:withMessage:mayProceed: or:#noByteCode or:#exit_unwindThenDo:.
+        ].
+
+        (foundNoByteCodeContext not
+        and:[ foundExitContext not]) ifFalse:[
+            ('DebugView [warning]: reentered') errorPrintCR.
+
+            ^ MiniDebugger
+                enter:aContext
+                withMessage:'DebugView [error]: recursive error (in debugger)'
+                mayProceed:mayProceed.
+        ].
+        foundExitContext ifTrue:[
+            'DebugView [error]: recursive error (in debugger) ignored' printCR.
+            ^ self.
+        ].
     ].
 
     "/'entering: ' print. aContext printCR.
@@ -1369,7 +1386,7 @@
     thisContext sender fixAllLineNumbers. "/ _CONTEXTLINENOS(s)
 
     self class isHaltToBeIgnored ifTrue:[
-	^ self.
+        ^ self.
     ].
 
     iAmNew := drawableId isNil.
@@ -1392,45 +1409,45 @@
     "/    but not for multi-user development, where the debugger is entered often.
     "/    What is a good solution to this dilemma ?
     Screen allScreens do:[:aScreen |
-	aScreen ungrabPointer.
-	aScreen ungrabKeyboard.
+        aScreen ungrabPointer.
+        aScreen ungrabKeyboard.
     ].
 
     ("inspectedProcess suspendedContext isNil
     or:["inspectedProcess isSystemProcess"]") ifTrue:[
-	terminateButton disable.
+        terminateButton disable.
     ] ifFalse:[
-	terminateButton enable.
-	abortButton enable.
+        terminateButton enable.
+        abortButton enable.
     ].
 
     iAmNew ifFalse:[
-	"/ not the first time - disable buttons & menus
-	"/ from the previous life
-	self turnOffAllButtons.
-
-	m := contextView middleButtonMenu.
-	m notNil ifTrue:[
-	    m disableAll:#(showMore "skip skipForReturn" inspectContext).
-	].
-	verboseBacktrace
-	    ifTrue:[self showVerboseWalkback]
-	    ifFalse:[self showDenseWalkback].
+        "/ not the first time - disable buttons & menus
+        "/ from the previous life
+        self turnOffAllButtons.
+
+        m := contextView middleButtonMenu.
+        m notNil ifTrue:[
+            m disableAll:#(showMore "skip skipForReturn" inspectContext).
+        ].
+        verboseBacktrace
+            ifTrue:[self showVerboseWalkback]
+            ifFalse:[self showDenseWalkback].
     ].
     self iconLabel:'Debugger'.
 
     windowGroup isNil ifTrue:[
-	self windowGroup: WindowGroup new.
-	windowGroup addTopView:self.
+        self windowGroup: WindowGroup new.
+        windowGroup addTopView:self.
     ].
     exclusive ifFalse:[
-	"/ create a (modal) windowGroup for myself
-
-	windowGroup setModal:true.
+        "/ create a (modal) windowGroup for myself
+
+        windowGroup setModal:true.
     ] ifTrue:[
-	"/ create a windowGroup with a synchronous sensor for me
-
-	windowGroup beSynchronous.
+        "/ create a windowGroup with a synchronous sensor for me
+
+        windowGroup beSynchronous.
     ].
     windowGroup setProcess:Processor activeProcess.
     "
@@ -1450,14 +1467,14 @@
      position again
     "
     iAmNew ifFalse:[
-	self remap.
+        self remap.
     ] ifTrue:[
-	self realize.
+        self realize.
     ].
     self setForegroundWindow.
 
     exclusive ifTrue:[
-	self showError:'
+        self showError:'
 Debugging system process `' , (inspectedProcess nameOrId) printString , '''.
 
 This is a modal debugger - all event processing is stopped..
@@ -1468,9 +1485,9 @@
     ].
 
     self autoRaiseView ifTrue:[
-	"/ self raise.
-	self raiseDeiconified.
-	self topView activate; setForegroundWindow; activate.
+        "/ self raise.
+        self raiseDeiconified.
+        self topView activate; setForegroundWindow; activate.
     ].
 
     canContinue := true.
@@ -1480,10 +1497,10 @@
     "/ when any button was pressed which requires continuation of the debuggee or
     "/ closedown of the debugger.
     [self controlLoop] ifCurtailed:[
-	windowGroup notNil ifTrue:[
-	    windowGroup setProcess:nil.
-	].
-	self destroy
+        windowGroup notNil ifTrue:[
+            windowGroup setProcess:nil.
+        ].
+        self destroy
     ].
 
     "/ here after my own control loop is finished.
@@ -1497,31 +1514,31 @@
     codeView doItAction:nil.
 
     ObjectMemory stepInterruptHandler == self ifTrue:[
-	ObjectMemory stepInterruptHandler:nil.
+        ObjectMemory stepInterruptHandler:nil.
     ].
 
     (exitAction ~~ #step) ifTrue:[
-	"/ not stepping - close window
-	lastSelectionInReceiverInspector := receiverInspector selectedKeyName.
-	lastSelectionInContextInspector := contextInspector selectedKeyName.
-	receiverInspector release.
-	contextInspector release.
-
-	self unmap.
-	device flush.
-
-	(exitAction == #abort) ifTrue:[ self exit_abort. "does not return" ].
-	(exitAction == #abortAll) ifTrue:[ self exit_abortAll. "does not return" ].
-	(exitAction == #return) ifTrue:[ self exit_return. "does not return" ].
-	(exitAction == #restart) ifTrue:[ self exit_restart. "does not return" ].
-	(exitAction == #quickTerminate) ifTrue:[ self exit_quickTerminate. "does not return" ].
-	(exitAction == #terminate) ifTrue:[ self exit_terminate. "does not return" ].
-	exitAction isBlock ifTrue:[
-	    self exit_unwindThenDo:exitAction.
-	    "does not return"
-	].
-	"not reached"
-	^ self
+        "/ not stepping - close window
+        lastSelectionInReceiverInspector := receiverInspector selectedKeyName.
+        lastSelectionInContextInspector := contextInspector selectedKeyName.
+        receiverInspector release.
+        contextInspector release.
+
+        self unmap.
+        device flush.
+
+        (exitAction == #abort) ifTrue:[ self exit_abort. "does not return" ].
+        (exitAction == #abortAll) ifTrue:[ self exit_abortAll. "does not return" ].
+        (exitAction == #return) ifTrue:[ self exit_return. "does not return" ].
+        (exitAction == #restart) ifTrue:[ self exit_restart. "does not return" ].
+        (exitAction == #quickTerminate) ifTrue:[ self exit_quickTerminate. "does not return" ].
+        (exitAction == #terminate) ifTrue:[ self exit_terminate. "does not return" ].
+        exitAction isBlock ifTrue:[
+            self exit_unwindThenDo:exitAction.
+            "does not return"
+        ].
+        "not reached"
+        ^ self
     ].
 
     "/ stepping - window stays open
@@ -1529,96 +1546,96 @@
 
     "/ restore the previous pointer grab
     grabber notNil ifTrue:[
-	device grabPointerInView:grabber.
-	grabber := nil.
+        device grabPointerInView:grabber.
+        grabber := nil.
     ].
 
     (exitAction == #step) ifTrue:[
-	"
-	 schedule another stepInterrupt
-	 - must enter myself into the collection of open debuggers,
-	   in case the stepping process comes back again via a halt or signal
-	   before the step is finished. In this case, the stepping debugger should
-	   come up (instead of a new one)
-	 - must flush caches since optimized methods not always
-	   look for pending interrupts
-	"
-
-	"/
-	"/ also must care for stepping into a return
-	"/
-	steppedContext notNil ifTrue:[
-	    Processor activeProcess forceInterruptOnReturnOf:steppedContext.
-	].
-
-	OpenDebuggers isNil ifTrue:[
-	    OpenDebuggers := WeakIdentitySet new.
-	].
-	OpenDebuggers add:self.
-
-	self label:'single stepping - please wait ...'.
-	stepping := true.
-
-	ObjectMemory stepInterruptHandler:self.
-	Processor activeProcess stepInterruptHandler:self.
-	ObjectMemory flushCaches.
-
-	Context singleStepInterruptRequest isHandled ifTrue:[
-	    Context singleStepInterruptRequest
-		raiseWith:
-		    (("bigStep" steppedContextLineno notNil)
-			ifTrue:[#next]
-			ifFalse:[#step])
-	] ifFalse:[
-	    "/ see if we came here through an interrupt-action
-	    "/ (i.e. aProcess interruptWith:...)
-
-	    enteredByInterrupt := false.
-	    con := thisContext findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
-	    [enteredByInterrupt not
-	     and:[con notNil
-	     and:[con ~~ aContext]]] whileTrue:[
-		((sel := con selector) == #timerInterrupt
-		or:[sel == #ioInterrupt]) ifTrue:[
-		    enteredByInterrupt := true.
-		] ifFalse:[
-		    con := con findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
-		].
-	    ].
-
-	    ObjectMemory flushInlineCaches.
-
-	    DebuggingDebugger == true ifTrue:[
-		enteredByInterrupt printCR.
-	    ].
-	    enteredByInterrupt ifTrue:[
-		"/ dont want to step through all intermediate
-		"/ (scheduler-) contexts; place a return-trap on the
-		"/ one right below the interesting one
+        "
+         schedule another stepInterrupt
+         - must enter myself into the collection of open debuggers,
+           in case the stepping process comes back again via a halt or signal
+           before the step is finished. In this case, the stepping debugger should
+           come up (instead of a new one)
+         - must flush caches since optimized methods not always
+           look for pending interrupts
+        "
+
+        "/
+        "/ also must care for stepping into a return
+        "/
+        steppedContext notNil ifTrue:[
+            Processor activeProcess forceInterruptOnReturnOf:steppedContext.
+        ].
+
+        OpenDebuggers isNil ifTrue:[
+            OpenDebuggers := WeakIdentitySet new.
+        ].
+        OpenDebuggers add:self.
+
+        self label:'single stepping - please wait ...'.
+        stepping := true.
+
+        ObjectMemory stepInterruptHandler:self.
+        Processor activeProcess stepInterruptHandler:self.
+        ObjectMemory flushCaches.
+
+        Context singleStepInterruptRequest isHandled ifTrue:[
+            Context singleStepInterruptRequest
+                raiseWith:
+                    (("bigStep" steppedContextLineno notNil)
+                        ifTrue:[#next]
+                        ifFalse:[#step])
+        ] ifFalse:[
+            "/ see if we came here through an interrupt-action
+            "/ (i.e. aProcess interruptWith:...)
+
+            enteredByInterrupt := false.
+            con := thisContext findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
+            [enteredByInterrupt not
+             and:[con notNil
+             and:[con ~~ aContext]]] whileTrue:[
+                ((sel := con selector) == #timerInterrupt
+                or:[sel == #ioInterrupt]) ifTrue:[
+                    enteredByInterrupt := true.
+                ] ifFalse:[
+                    con := con findNextContextWithSelector:#timerInterrupt or:#ioInterrupt or:nil.
+                ].
+            ].
+
+            ObjectMemory flushInlineCaches.
+
+            DebuggingDebugger == true ifTrue:[
+                enteredByInterrupt printCR.
+            ].
+            enteredByInterrupt ifTrue:[
+                "/ dont want to step through all intermediate
+                "/ (scheduler-) contexts; place a return-trap on the
+                "/ one right below the interesting one
 
 "/                'special unwind return' printCR.
-		con unwindThenDo:[
-				  Processor activeProcess stepInterruptHandler:self.
-				  ObjectMemory stepInterruptHandler:self.
-				  InStepInterrupt := nil.
-				  StepInterruptPending := 1.
-				  InterruptPending := 1].
-	    ] ifFalse:[
+                con unwindThenDo:[
+                                  Processor activeProcess stepInterruptHandler:self.
+                                  ObjectMemory stepInterruptHandler:self.
+                                  InStepInterrupt := nil.
+                                  StepInterruptPending := 1.
+                                  InterruptPending := 1].
+            ] ifFalse:[
 "/                'normal step return' printCR.
-		skipLineNr ~~ #return ifTrue:[
-		    StepInterruptPending := 1.
-		    InterruptPending := 1.
-		] ifFalse:[
+                skipLineNr ~~ #return ifTrue:[
+                    StepInterruptPending := 1.
+                    InterruptPending := 1.
+                ] ifFalse:[
 "/                    'step for return' printCR.
-		]
-	    ].
-	    InStepInterrupt := nil
-	]
+                ]
+            ].
+            InStepInterrupt := nil
+        ]
     ] ifFalse:[
-	OpenDebuggers notNil ifTrue:[
-	    OpenDebuggers remove:self ifAbsent:[].
-	].
-	self cacheMyself.
+        OpenDebuggers notNil ifTrue:[
+            OpenDebuggers remove:self ifAbsent:[].
+        ].
+        self cacheMyself.
     ]
 
     "Modified: / 17-04-1997 / 13:01:32 / stefan"
@@ -1663,19 +1680,19 @@
     |con|
 
     selectedContext notNil ifTrue:[
-	con := selectedContext.
-	self cacheMyself.
-	"
-	 have to catch errors occuring in unwind-blocks
-	"
-	Error handle:[:ex |
-	    'DebugView [info]: ignored error while unwinding: ' infoPrint.
-	    ex description infoPrintCR.
-	    ex proceed
-	] do:[
-	    con unwindAndRestart.
-	].
-	'DebugView [warning]: cannot restart selected context' errorPrintCR
+        con := selectedContext.
+        self cacheMyself.
+        "
+         have to catch errors occuring in unwind-blocks
+        "
+        Error handle:[:ex |
+            'DebugView [info]: ignored error while unwinding: ' infoPrint.
+            ex description infoPrintCR.
+            ex proceed
+        ] do:[
+            con unwindAndRestart.
+        ].
+        'DebugView [warning]: cannot restart selected context' errorPrintCR
     ]
 
     "Created: / 16.11.2001 / 17:23:17 / cg"
@@ -1686,10 +1703,10 @@
     |con retVal|
 
     selectedContext notNil ifTrue:[
-	"
-	 if there is a selection in the codeView,
-	 evaluate it and use the result as return value
-	"
+        "
+         if there is a selection in the codeView,
+         evaluate it and use the result as return value
+        "
 "/ disabled for now, there is almost always a selection (the current line)
 "/ and that is syntactically incorrect ...
 "/ ... leading to a popup warning from the codeView
@@ -1707,19 +1724,19 @@
 "/                    ].
 "/                ].
 
-	con := selectedContext.
-	self cacheMyself.
-	"
-	 have to catch errors occuring in unwind-blocks
-	"
-	Error handle:[:ex |
-	    'DebugView [info]: ignored error while unwinding: ' infoPrint.
-	    ex description infoPrintCR.
-	    ex proceed
-	] do:[
-	    con unwind:retVal.
-	].
-	'DebugView [warning]: cannot return from selected context' errorPrintCR
+        con := selectedContext.
+        self cacheMyself.
+        "
+         have to catch errors occuring in unwind-blocks
+        "
+        Error handle:[:ex |
+            'DebugView [info]: ignored error while unwinding: ' infoPrint.
+            ex description infoPrintCR.
+            ex proceed
+        ] do:[
+            con unwind:retVal.
+        ].
+        'DebugView [warning]: cannot return from selected context' errorPrintCR
     ]
 
     "Created: / 16.11.2001 / 17:22:24 / cg"
@@ -1732,12 +1749,12 @@
      have to catch errors occuring in unwind-blocks
     "
     Error handle:[:ex |
-	'DebugView [info]: ignored error while unwinding: ' infoPrint.
-	ex description infoPrintCR.
-	ex proceed
+        'DebugView [info]: ignored error while unwinding: ' infoPrint.
+        ex description infoPrintCR.
+        ex proceed
     ] do:[
-	self cacheMyself.
-	Processor activeProcess terminate.
+        self cacheMyself.
+        Processor activeProcess terminate.
     ].
     'DebugView [warning]: cannot terminate process' errorPrintCR
 
@@ -1762,31 +1779,31 @@
     self cacheMyself.
 
     Error handle:[:ex |
-	'DebugView [info]: ignored error while unwinding: ' infoPrint.
-	ex description infoPrintCR.
-
-	ex proceed
+        'DebugView [info]: ignored error while unwinding: ' infoPrint.
+        ex description infoPrintCR.
+
+        ex proceed
     ] do:[
-	"/ find the enter:select context.
-	con := thisContext sender.
-	[
-	    (con selector == #enter:select:)
-	    and:[con receiver == self]
-	]
-	whileFalse:[ con := con sender ].
-
-	"/ must skip over its caller (because this one has a ControlInterrupt handler too)
-	con sender receiver == self class ifTrue:[
-	    con := con sender.
-	    con sender receiver == self class ifTrue:[
-		con := con sender.
-		con isBlockContext ifTrue:[
-		    con := con methodHome.
-		]
-	    ].
-	].
-
-	con unwindThenDo:aBlock.
+        "/ find the enter:select context.
+        con := thisContext sender.
+        [
+            (con selector == #enter:select:)
+            and:[con receiver == self]
+        ]
+        whileFalse:[ con := con sender ].
+
+        "/ must skip over its caller (because this one has a ControlInterrupt handler too)
+        con sender receiver == self class ifTrue:[
+            con := con sender.
+            con sender receiver == self class ifTrue:[
+                con := con sender.
+                con isBlockContext ifTrue:[
+                    con := con methodHome.
+                ]
+            ].
+        ].
+
+        con unwindThenDo:aBlock.
     ].
     'DebugView [warning]: abort failed' errorPrintCR
 
@@ -1798,7 +1815,7 @@
     |selection con1 con2 h|
 
     initialSelectionOrNil notNil ifTrue:[
-	^ initialSelectionOrNil
+        ^ initialSelectionOrNil
     ].
 
     "
@@ -1813,54 +1830,54 @@
     con2 := (contextArray at:2 ifAbsent:nil).
 
     exitAction == #step ifTrue:[
-	selection := 1.
-	steppedContext notNil ifTrue:[
-
-	    "
-	     if we came here by a big-step, show the method where we are
-	    "
-	    con1 == steppedContext ifTrue:[
-		selection := 1
-	    ] ifFalse:[
-		con2 == steppedContext ifTrue:[
-		    selection := 2
-		]
-	    ].
-	    "
-	     for bigStep, we could also be in a block below the actual method ...
-	    "
-	    ((h := con1 home) notNil
-	     and:[h == steppedContext]) ifTrue:[
-		selection := 1
-	    ] ifFalse:[
-		(con2 notNil
-		and:[(h := con2 home) notNil
-		and:[h == steppedContext]]) ifTrue:[
-		    selection := 2
-		]
-	    ].
-	    h := nil.
-	]
+        selection := 1.
+        steppedContext notNil ifTrue:[
+
+            "
+             if we came here by a big-step, show the method where we are
+            "
+            con1 == steppedContext ifTrue:[
+                selection := 1
+            ] ifFalse:[
+                con2 == steppedContext ifTrue:[
+                    selection := 2
+                ]
+            ].
+            "
+             for bigStep, we could also be in a block below the actual method ...
+            "
+            ((h := con1 home) notNil
+             and:[h == steppedContext]) ifTrue:[
+                selection := 1
+            ] ifFalse:[
+                (con2 notNil
+                and:[(h := con2 home) notNil
+                and:[h == steppedContext]]) ifTrue:[
+                    selection := 2
+                ]
+            ].
+            h := nil.
+        ]
     ] ifFalse:[
-	steppedContext isNil ifTrue:[
-	    "
-	     preselect a more interesting context, (where halt/raise was ...)
-	    "
-	    "/ selection := self class interestingContextIndexFrom:aContext.
-	    selection := self class interestingContextIndexIn:contextArray.
-	    selection := selection min:(contextArray size).
-	] ifFalse:[
-	    "
-	     if we came here by a big-step, show the method where we are
-	    "
-	    con1 == steppedContext ifTrue:[
-		selection := 1
-	    ] ifFalse:[
-		con2 == steppedContext ifTrue:[
-		    selection := 2.
-		]
-	    ]
-	]
+        steppedContext isNil ifTrue:[
+            "
+             preselect a more interesting context, (where halt/raise was ...)
+            "
+            "/ selection := self class interestingContextIndexFrom:aContext.
+            selection := self class interestingContextIndexIn:contextArray.
+            selection := selection min:(contextArray size).
+        ] ifFalse:[
+            "
+             if we came here by a big-step, show the method where we are
+            "
+            con1 == steppedContext ifTrue:[
+                selection := 1
+            ] ifFalse:[
+                con2 == steppedContext ifTrue:[
+                    selection := 2.
+                ]
+            ]
+        ]
     ].
     ^ selection
 
@@ -1905,17 +1922,17 @@
     continueButton preferredExtent:(w @ continueButton preferredHeight).
 
     aProcess state == #run ifTrue:[
-	device hasColors ifTrue:[
-	    continueButton foregroundColor:Color red darkened.
-	].
-	continueButton label:(resources string:'Stop').
-	continueButton action:[self doStop].
+        device hasColors ifTrue:[
+            continueButton foregroundColor:Color red darkened.
+        ].
+        continueButton label:(resources string:'Stop').
+        continueButton action:[self doStop].
     ] ifFalse:[
-	device hasColors ifTrue:[
-	    continueButton foregroundColor:Color green darkened darkened.
-	].
-	continueButton label:(resources string:'Continue').
-	continueButton action:[self doContinue].
+        device hasColors ifTrue:[
+            continueButton foregroundColor:Color green darkened darkened.
+        ].
+        continueButton label:(resources string:'Continue').
+        continueButton action:[self doContinue].
     ].
     continueButton preferredExtent:(w @ continueButton preferredHeight).
 
@@ -1929,9 +1946,9 @@
 "/    sendButton destroy.
 
     updateButton := Button
-			label:(resources string:'Update')
-			action:[self updateContext]
-			in:bpanel.
+                        label:(resources string:'Update')
+                        action:[self updateContext]
+                        in:bpanel.
     monitorToggle := Toggle in:bpanel.
     monitorToggle label:(resources string:'Monitor').
     monitorToggle pressAction:[self autoUpdateOn].
@@ -1950,33 +1967,33 @@
     nextOutButton notNil ifTrue:[nextOutButton disable; beInvisible].
 
     aProcess isNil ifTrue:[
-	terminateButton disable.
-	abortButton disable.
-	continueButton disable.
-	returnButton disable.
-	restartButton disable.
+        terminateButton disable.
+        abortButton disable.
+        continueButton disable.
+        returnButton disable.
+        restartButton disable.
     ] ifFalse:[
-	(aProcess suspendedContext isNil
-	or:[aProcess isSystemProcess]) ifTrue:[
-	    terminateButton disable.
-	].
-
-	self setContextSkippingInterruptContexts:aProcess suspendedContext.
-
-	catchBlock := [
-	    catchBlock := nil.
-	    contextArray := nil.
-	    selectedContext := actualContext := firstContext := nil.
-	    steppedContext := wrapperContext := nil.
-
-	    (exitAction == #terminate) ifTrue:[
-		aProcess terminate.
-	    ].
-	    (exitAction == #quickTerminate) ifTrue:[
-		aProcess terminateNoSignal.
-	    ].
-	    super destroy
-	].
+        (aProcess suspendedContext isNil
+        or:[aProcess isSystemProcess]) ifTrue:[
+            terminateButton disable.
+        ].
+
+        self setContextSkippingInterruptContexts:aProcess suspendedContext.
+
+        catchBlock := [
+            catchBlock := nil.
+            contextArray := nil.
+            selectedContext := actualContext := firstContext := nil.
+            steppedContext := wrapperContext := nil.
+
+            (exitAction == #terminate) ifTrue:[
+                aProcess terminate.
+            ].
+            (exitAction == #quickTerminate) ifTrue:[
+                aProcess terminateNoSignal.
+            ].
+            super destroy
+        ].
     ].
     self open
 
@@ -1989,11 +2006,11 @@
 
     selection := self initialSelectionOnEntry:initialSelectionOrNil context:aContext.
     selection notNil ifTrue:[
-	self showSelection:selection.
-	contextView setSelection:selection.
-	selection > 1 ifTrue:[
-	    contextView scrollToLine:(selection - 1)
-	]
+        self showSelection:selection.
+        contextView setSelection:selection.
+        selection > 1 ifTrue:[
+            contextView scrollToLine:(selection - 1)
+        ]
     ].
 
     "Created: / 16.11.2001 / 17:28:07 / cg"
@@ -2026,50 +2043,50 @@
     |s|
 
     aComponent == abortButton ifTrue:[
-	s := 'Abort (unwind to eventLoop)'
+        s := 'Abort (unwind to eventLoop)'
     ].
     aComponent == terminateButton ifTrue:[
-	s := 'Terminate process (close view)'
+        s := 'Terminate process (close view)'
     ].
     aComponent == continueButton ifTrue:[
-	continueButton label = (resources string:'Stop') ifTrue:[
-	    s := 'Stop'
-	] ifFalse:[
-	    s := 'Continue execution'
-	]
+        continueButton label = (resources string:'Stop') ifTrue:[
+            s := 'Stop'
+        ] ifFalse:[
+            s := 'Continue execution'
+        ]
     ].
     aComponent == stepButton ifTrue:[
-	s := 'Step to next send (don''t enter into called methods)'
+        s := 'Step to next send (don''t enter into called methods)'
     ].
     aComponent == nextButton ifTrue:[
-	s := 'Step to next line (don''t enter into called methods)'
+        s := 'Step to next line (don''t enter into called methods)'
     ].
     aComponent == nextOverButton ifTrue:[
-	s := 'Step over to cursor-line'
+        s := 'Step over to cursor-line'
     ].
     aComponent == nextOutButton ifTrue:[
-	s := 'Step out to caller'
+        s := 'Step out to caller'
     ].
     aComponent == sendButton ifTrue:[
-	s := 'Send next message (enter into called methods)'
+        s := 'Send next message (enter into called methods)'
     ].
     aComponent == returnButton ifTrue:[
-	s := 'Return from selected method'
+        s := 'Return from selected method'
     ].
     aComponent == restartButton ifTrue:[
-	s := 'Restart selected method'
+        s := 'Restart selected method'
     ].
     aComponent == monitorToggle ifTrue:[
-	s := 'Toggle monitoring'
+        s := 'Toggle monitoring'
     ].
     aComponent == updateButton ifTrue:[
-	s := 'Update'
+        s := 'Update'
     ].
     aComponent == reportButton ifTrue:[
-	s := 'Send a defect report via eMail'
+        s := 'Send a defect report via eMail'
     ].
     s notNil ifTrue:[
-	^ resources string:s
+        ^ resources string:s
     ].
     ^ nil
 
@@ -2092,47 +2109,47 @@
     interval := pos to:pos.
 
     self
-	withNodeValueAtInterval:interval
-	do:[:value :description |
-	    |valueClassOrSizeString valueString|
-
-	    valueClassOrSizeString := valueString := ''.
-
-	    "/ some heuristics as when to show the class name (a purely subjective preference)
-	    value isString ifTrue:[
-		value isText ifTrue:[
-		    valueString := '"',(value contractTo:80),'"'.
-		] ifFalse:[
-		    valueString := value storeString contractTo:80.
-		].
-	    ] ifFalse:[
-		(value isBoolean
-		or:[ value isInteger
-		or:[ value isSymbol ]]) ifTrue:[
-		    valueString := value printString.
-		] ifFalse:[
-		    valueClassOrSizeString := ' (',value class name,')'.
-
-		    (value isArray
-		    or:[ value isOrderedCollection ]) ifTrue:[
-			valueClassOrSizeString := ' (size=',value size printString,')'.
-		    ].
-
-		    Error handle:[:ex |
-			valueString := '??? (',ex description,')'
-		    ] do:[
-			[
-			    valueString := value printString contractTo:80.
-			] valueWithWatchDog:[ valueString := value classNameWithArticle ] afterMilliseconds:30.
-		    ]
-		]
-	    ].
-	    description isEmptyOrNil ifTrue:[
-		s := valueString , valueClassOrSizeString
-	    ] ifFalse:[
-		s := description , ': ', valueString, valueClassOrSizeString
-	    ].
-	].
+        withNodeValueAtInterval:interval
+        do:[:value :description |
+            |valueClassOrSizeString valueString|
+
+            valueClassOrSizeString := valueString := ''.
+
+            "/ some heuristics as when to show the class name (a purely subjective preference)
+            value isString ifTrue:[
+                value isText ifTrue:[
+                    valueString := '"',(value contractTo:80),'"'.
+                ] ifFalse:[
+                    valueString := value storeString contractTo:80.
+                ].
+            ] ifFalse:[
+                (value isBoolean
+                or:[ value isInteger
+                or:[ value isSymbol ]]) ifTrue:[
+                    valueString := value printString.
+                ] ifFalse:[
+                    valueClassOrSizeString := ' (',value class name,')'.
+
+                    (value isArray
+                    or:[ value isOrderedCollection ]) ifTrue:[
+                        valueClassOrSizeString := ' (size=',value size printString,')'.
+                    ].
+
+                    Error handle:[:ex |
+                        valueString := '??? (',ex description,')'
+                    ] do:[
+                        [
+                            valueString := value printString contractTo:80.
+                        ] valueWithWatchDog:[ valueString := value classNameWithArticle ] afterMilliseconds:30.
+                    ]
+                ]
+            ].
+            description isEmptyOrNil ifTrue:[
+                s := valueString , valueClassOrSizeString
+            ] ifFalse:[
+                s := description , ': ', valueString, valueClassOrSizeString
+            ].
+        ].
     "/ Transcript showCR:s.
     ^ s
 
@@ -2143,66 +2160,66 @@
     |s|
 
     aComponent == abortButton ifTrue:[
-	s := 'HELP_ABORT'
+        s := 'HELP_ABORT'
     ].
     aComponent == terminateButton ifTrue:[
-	s := 'HELP_TERMINATE'
+        s := 'HELP_TERMINATE'
     ].
     aComponent == continueButton ifTrue:[
-	continueButton label = (resources string:'Stop') ifTrue:[
-	    s := 'HELP_STOP'
-	] ifFalse:[
-	    s := 'HELP_CONTINUE'
-	]
+        continueButton label = (resources string:'Stop') ifTrue:[
+            s := 'HELP_STOP'
+        ] ifFalse:[
+            s := 'HELP_CONTINUE'
+        ]
     ].
     aComponent == stepButton ifTrue:[
-	s := 'HELP_STEP'
+        s := 'HELP_STEP'
     ].
     aComponent == nextButton ifTrue:[
-	s := 'HELP_NEXT'
+        s := 'HELP_NEXT'
     ].
     aComponent == nextOverButton ifTrue:[
-	s := 'HELP_NEXTOVER'
+        s := 'HELP_NEXTOVER'
     ].
     aComponent == nextOutButton ifTrue:[
-	s := 'HELP_NEXTOUT'
+        s := 'HELP_NEXTOUT'
     ].
     aComponent == stepButton ifTrue:[
-	s := 'HELP_STEP'
+        s := 'HELP_STEP'
     ].
     aComponent == sendButton ifTrue:[
-	s := 'HELP_SEND'
+        s := 'HELP_SEND'
     ].
     aComponent == returnButton ifTrue:[
-	s := 'HELP_RETURN'
+        s := 'HELP_RETURN'
     ].
     aComponent == restartButton ifTrue:[
-	s := 'HELP_RESTART'
+        s := 'HELP_RESTART'
     ].
     aComponent == contextView ifTrue:[
-	s := 'HELP_WALKBACK'
+        s := 'HELP_WALKBACK'
     ].
     aComponent == codeView ifTrue:[
-	s := 'HELP_CODEVIEW'
+        s := 'HELP_CODEVIEW'
     ].
     aComponent == monitorToggle ifTrue:[
-	s := 'HELP_MONITOR'
+        s := 'HELP_MONITOR'
     ].
     aComponent == updateButton ifTrue:[
-	s := 'HELP_UPDATE'
+        s := 'HELP_UPDATE'
     ].
 "/    aComponent == stopButton ifTrue:[
 "/        s := 'HELP_STOP'
 "/    ].
     (aComponent isComponentOf:receiverInspector) ifTrue:[
-	s := 'HELP_REC_INSP'
+        s := 'HELP_REC_INSP'
     ].
     (aComponent isComponentOf:contextInspector) ifTrue:[
-	s := 'HELP_CON_INSP'
+        s := 'HELP_CON_INSP'
     ].
 
     s notNil ifTrue:[
-	^ resources string:s
+        ^ resources string:s
     ].
     ^ nil
 
@@ -2224,45 +2241,45 @@
     |m|
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - exit anyway ?'))
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - exit anyway ?'))
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     self autoUpdateOff.
 
     (m := contextView middleButtonMenu) notNil ifTrue:[m hide].
     inspecting ifFalse:[
-	"I am running on top of a process, abort or continue it"
-
-	windowGroup notNil ifTrue:[
-	    windowGroup setProcess:nil.
-	].
-	self uncacheMyself.
-
-	"/
-	"/ catch invalid return;
-	"/ this happens, when my process has somehow died (quickterminate)
-	"/ and I am a leftOver view, which gets terminated via the launchers
-	"/ #destroy-window function.
-	"/
-	Context cannotReturnSignal handle:[:ex |
-	    'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
-	    self uncacheMyself.
-	    Debugger newDebugger.
-	    ex return.
-	] do:[
-	    AbortOperationRequest isHandled ifTrue:[
-		self doAbort.
-	    ] ifFalse:[
-		self doContinue
-	    ]
-	].
-	"/ We don't reach this point normally
-	'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
-	Debugger newDebugger.
-	self uncacheMyself.
+        "I am running on top of a process, abort or continue it"
+
+        windowGroup notNil ifTrue:[
+            windowGroup setProcess:nil.
+        ].
+        self uncacheMyself.
+
+        "/
+        "/ catch invalid return;
+        "/ this happens, when my process has somehow died (quickterminate)
+        "/ and I am a leftOver view, which gets terminated via the launchers
+        "/ #destroy-window function.
+        "/
+        Context cannotReturnSignal handle:[:ex |
+            'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
+            self uncacheMyself.
+            Debugger newDebugger.
+            ex return.
+        ] do:[
+            AbortOperationRequest isHandled ifTrue:[
+                self doAbort.
+            ] ifFalse:[
+                self doContinue
+            ]
+        ].
+        "/ We don't reach this point normally
+        'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
+        Debugger newDebugger.
+        self uncacheMyself.
     ].
 
     Debugger newDebugger.
@@ -2284,7 +2301,7 @@
 
     verboseBacktrace := UserPreferences current verboseBacktraceInDebugger.
     ignoreBreakpoints := true.    "/ ignore halts/breakpoints in doIts of
-				  "/ the debugger
+                                  "/ the debugger
 
     busy := false.
     exclusive := false.
@@ -2308,94 +2325,94 @@
 
     newLayout := UserPreferences current useNewLayoutInDebugger.
     newLayout ifFalse:[
-	bpanel := HorizontalPanelView in:self.
-
-	self initializeButtonsIn:bpanel.
-
-	bH := bpanel preferredHeight + 5.
-	bpanel origin:(0.0 @ mH)
-	       extent:(1.0 @ bH).
-	panel := VariableVerticalPanel
-			    origin:(0.0 @ (mH + bH))
-			    corner:(1.0 @ 1.0)
-			    in:self.
-
-	v := self initializeContextListViewIn:panel.
-	v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
-
-	codePanel := View in:panel.
-	v := self initializeCodeViewIn:codePanel.
-	v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
-	codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
-
-	v := self initializeInspectorViewsIn:panel.
-	v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
+        bpanel := HorizontalPanelView in:self.
+
+        self initializeButtonsIn:bpanel.
+
+        bH := bpanel preferredHeight + 5.
+        bpanel origin:(0.0 @ mH)
+               extent:(1.0 @ bH).
+        panel := VariableVerticalPanel
+                            origin:(0.0 @ (mH + bH))
+                            corner:(1.0 @ 1.0)
+                            in:self.
+
+        v := self initializeContextListViewIn:panel.
+        v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
+
+        codePanel := View in:panel.
+        v := self initializeCodeViewIn:codePanel.
+        v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
+        codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
+
+        v := self initializeInspectorViewsIn:panel.
+        v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
 
     ] ifTrue:[
-	bpanel1 := HorizontalPanelView in:self.
-	self initializeButtons1In:bpanel1.
-
-	bH1 := bpanel1 preferredHeight + 5.
-	bpanel1 origin:(0.0 @ mH)
-		extent:(1.0 @ bH1).
-	panel := VariableVerticalPanel
-			    origin:(0.0 @ (mH + bH1))
-			    corner:(1.0 @ 1.0)
-				in:self.
-	"/ panel showHandle:true.
-	"/ panel handlePosition:#left.
-
-	v := self initializeContextListViewIn:panel.
-	v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
-
-	codePanel := View in:panel.
-	bpanel2 := HorizontalPanelView in:codePanel.
-	self initializeButtons2In:bpanel2.
-
-	bH2 := bpanel2 preferredHeight + 5.
-	bpanel2 origin:(0.0 @ 0.0)
-		extent:(1.0 @ bH2).
-
-	exceptionInfoLabel := Label label:''.
-	exceptionInfoLabel adjust:#left.
-
-	exceptionAndTogglePanel := HorizontalPanelView in:codePanel.
-	exceptionAndTogglePanel horizontalLayout:#left.
-	exceptionAndTogglePanel
-	    geometryLayout:
-		((LayoutFrame
-		    origin:(0.0 @ 0.0)
-		    corner:(1.0 @ 0.0))
-			topOffset:bH2;
-			bottomOffset:(bH2 + exceptionInfoLabel preferredHeight + 6);
-			rightOffset:-2).
-
-	methodCodeToggleSelectionHolder := 1 asValue.
-	methodCodeToggleSelectionHolder onChangeSend:#methodCodeToggleChanged to:self.
-	methodCodeToggle := PopUpList label:(resources string:'Original Code (Executed)') in:exceptionAndTogglePanel.
-	methodCodeToggle list:(resources array:#( 'Original Code (Executed)' 'Current Code')).
-	methodCodeToggle useIndex:true.
-	methodCodeToggle model:methodCodeToggleSelectionHolder.
-	methodCodeToggle beInvisible.
-
-	exceptionAndTogglePanel add:exceptionInfoLabel.
-
-	v := self initializeCodeViewIn:codePanel.
-	v origin:(0.0 @ (bH2+exceptionInfoLabel preferredHeight+6)) corner:(1.0 @ 1.0).
-	codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
-
-	v := self initializeInspectorViewsIn:panel.
-	v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
+        bpanel1 := HorizontalPanelView in:self.
+        self initializeButtons1In:bpanel1.
+
+        bH1 := bpanel1 preferredHeight + 5.
+        bpanel1 origin:(0.0 @ mH)
+                extent:(1.0 @ bH1).
+        panel := VariableVerticalPanel
+                            origin:(0.0 @ (mH + bH1))
+                            corner:(1.0 @ 1.0)
+                                in:self.
+        "/ panel showHandle:true.
+        "/ panel handlePosition:#left.
+
+        v := self initializeContextListViewIn:panel.
+        v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
+
+        codePanel := View in:panel.
+        bpanel2 := HorizontalPanelView in:codePanel.
+        self initializeButtons2In:bpanel2.
+
+        bH2 := bpanel2 preferredHeight + 5.
+        bpanel2 origin:(0.0 @ 0.0)
+                extent:(1.0 @ bH2).
+
+        exceptionInfoLabel := Label label:''.
+        exceptionInfoLabel adjust:#left.
+
+        exceptionAndTogglePanel := HorizontalPanelView in:codePanel.
+        exceptionAndTogglePanel horizontalLayout:#left.
+        exceptionAndTogglePanel
+            geometryLayout:
+                ((LayoutFrame
+                    origin:(0.0 @ 0.0)
+                    corner:(1.0 @ 0.0))
+                        topOffset:bH2;
+                        bottomOffset:(bH2 + exceptionInfoLabel preferredHeight + 6);
+                        rightOffset:-2).
+
+        methodCodeToggleSelectionHolder := 1 asValue.
+        methodCodeToggleSelectionHolder onChangeSend:#methodCodeToggleChanged to:self.
+        methodCodeToggle := PopUpList label:(resources string:'Original Code (Executed)') in:exceptionAndTogglePanel.
+        methodCodeToggle list:(resources array:#( 'Original Code (Executed)' 'Current Code')).
+        methodCodeToggle useIndex:true.
+        methodCodeToggle model:methodCodeToggleSelectionHolder.
+        methodCodeToggle beInvisible.
+
+        exceptionAndTogglePanel add:exceptionInfoLabel.
+
+        v := self initializeCodeViewIn:codePanel.
+        v origin:(0.0 @ (bH2+exceptionInfoLabel preferredHeight+6)) corner:(1.0 @ 1.0).
+        codePanel origin:(0.0 @ 0.25) corner:(1.0 @ 0.75).
+
+        v := self initializeInspectorViewsIn:panel.
+        v origin:(0.0 @ 0.75) corner:(1.0 @ 1.0).
     ].
 
     DefaultDebuggerBackgroundColor notNil ifTrue:[
-	self allViewBackground:DefaultDebuggerBackgroundColor.
+        self allViewBackground:DefaultDebuggerBackgroundColor.
     ].
     LastExtent notNil ifTrue:[
-	self extent:LastExtent.
+        self extent:LastExtent.
     ].
     LastOrigin notNil ifTrue:[
-	self origin:LastOrigin.
+        self origin:LastOrigin.
     ].
 
     "
@@ -2407,12 +2424,12 @@
 
 initializeAbortButtonIn:bpanel
     abortButton := Button
-		label:(resources string:'Abort')
-		action:[
-		    abortButton turnOffWithoutRedraw.
-		    self doAbort
-		]
-		in:bpanel.
+                label:(resources string:'Abort')
+                action:[
+                    abortButton turnOffWithoutRedraw.
+                    self doAbort
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 20:56:47 / cg"
     "Modified: / 17.11.2001 / 20:57:17 / cg"
@@ -2445,9 +2462,9 @@
 
     self initializeDefineButtonIn:bpanel.
     (UserPreferences current allowSendMailFromDebugger and:[SendMailTool notNil]) ifTrue:[
-	separator := View extent:(10 @ 5) in:bpanel.
-	separator borderWidth:0; level:0.
-	self initializeReportButtonIn:bpanel.
+        separator := View extent:(10 @ 5) in:bpanel.
+        separator borderWidth:0; level:0.
+        self initializeReportButtonIn:bpanel.
     ].
     "Modified: / 17.11.2001 / 21:02:59 / cg"
 !
@@ -2585,7 +2602,7 @@
 
     self initializeDefineButtonIn:bpanel.
     (UserPreferences current allowSendMailFromDebugger and:[SendMailTool notNil]) ifTrue:[
-	self initializeReportButtonIn:bpanel.
+        self initializeReportButtonIn:bpanel.
     ].
 
 
@@ -2622,10 +2639,10 @@
     |v|
 
     v := HVScrollableView
-		for:SelectionInListView
-		miniScrollerH:true
-		miniScrollerV:false
-		in:panel.
+                for:SelectionInListView
+                miniScrollerH:true
+                miniScrollerV:false
+                in:panel.
     v autoHideHorizontalScrollBar:true.
 
     contextView := v scrolledView.
@@ -2646,24 +2663,24 @@
 
 initializeContinueButtonIn:bpanel
     continueButton := Button
-		label:(resources string:'Continue')
-		action:[
-		    continueButton turnOffWithoutRedraw.
-		    self doContinue
-		]
-		in:bpanel.
+                label:(resources string:'Continue')
+                action:[
+                    continueButton turnOffWithoutRedraw.
+                    self doContinue
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 20:57:34 / cg"
 !
 
 initializeDefineButtonIn:bpanel
     defineButton := Button
-		label:(resources string:'Define')
-		action:[
-		    defineButton turnOffWithoutRedraw.
-		    self doDefine
-		]
-		in:bpanel.
+                label:(resources string:'Define')
+                action:[
+                    defineButton turnOffWithoutRedraw.
+                    self doDefine
+                ]
+                in:bpanel.
     defineButton beInvisible
 
     "Created: / 17.11.2001 / 21:02:48 / cg"
@@ -2675,13 +2692,13 @@
     hpanel := VariableHorizontalPanel in:panel.
 
     receiverInspector := InspectorView
-				origin:(0.0 @ 0.0) corner:(0.5 @ 1.0)
-				    in:hpanel.
+                                origin:(0.0 @ 0.0) corner:(0.5 @ 1.0)
+                                    in:hpanel.
     receiverInspector fieldListLabel:'Receiver'.
 
     contextInspector := ContextInspectorView
-				origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
-				    in:hpanel.
+                                origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
+                                    in:hpanel.
     contextInspector fieldListLabel:'Context'.
 
     ^ hpanel
@@ -2689,84 +2706,84 @@
 
 initializeNextButtonIn:bpanel
     nextButton := Button
-		label:(resources string:'Debug_Next')
-		action:[
-		    stepButton turnOff.
-		    self doNext
-		]
-		in:bpanel.
+                label:(resources string:'Debug_Next')
+                action:[
+                    stepButton turnOff.
+                    self doNext
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 20:59:38 / cg"
 !
 
 initializeReportButtonIn:bpanel
     reportButton := Button
-		label:(resources string:'Report by Mail...')
-		action:[
-		    reportButton turnOffWithoutRedraw.
-		    self doOpenReportMailApp.
-		]
-		in:bpanel.
+                label:(resources string:'Report by Mail...')
+                action:[
+                    reportButton turnOffWithoutRedraw.
+                    self doOpenReportMailApp.
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 21:02:20 / cg"
 !
 
 initializeRestartButtonIn:bpanel
     restartButton := Button
-		label:(resources string:'Restart')
-		action:[
-		    restartButton turnOff.
-		    self doRestart
-		]
-		in:bpanel.
+                label:(resources string:'Restart')
+                action:[
+                    restartButton turnOff.
+                    self doRestart
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 20:58:52 / cg"
 !
 
 initializeReturnButtonIn:bpanel
     returnButton := Button
-		label:(resources string:'Return')
-		action:[
-		    returnButton turnOff.
-		    self doReturn
-		]
-		in:bpanel.
+                label:(resources string:'Return')
+                action:[
+                    returnButton turnOff.
+                    self doReturn
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 20:58:22 / cg"
 !
 
 initializeSendButtonIn:bpanel
     sendButton := Button
-		label:(resources string:'Send')
-		action:[
-		    sendButton turnOff.
-		    self doSend
-		]
-		in:bpanel.
+                label:(resources string:'Send')
+                action:[
+                    sendButton turnOff.
+                    self doSend
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 21:01:20 / cg"
 !
 
 initializeStepButtonIn:bpanel
     stepButton := Button
-		label:(resources string:'Debug_Step')
-		action:[
-		    stepButton turnOff.
-		    self doStep
-		]
-		in:bpanel.
+                label:(resources string:'Debug_Step')
+                action:[
+                    stepButton turnOff.
+                    self doStep
+                ]
+                in:bpanel.
 
     "Created: / 17.11.2001 / 21:00:13 / cg"
 !
 
 initializeTerminateButtonIn:bpanel
     terminateButton := Button
-		label:(resources string:'Debug_Terminate')
-		action:[
-		    terminateButton turnOffWithoutRedraw.
-		    self doTerminate
-		]
-		in:bpanel.
+                label:(resources string:'Debug_Terminate')
+                action:[
+                    terminateButton turnOffWithoutRedraw.
+                    self doTerminate
+                ]
+                in:bpanel.
 
     terminateButton backgroundColor:Color red lightened.
     "/ terminateButton foregroundColor:Color red.
@@ -2778,14 +2795,14 @@
     super postRealize.
 
     inspecting ifTrue:[
-	inspectedProcess notNil ifTrue:[
-	    "
-	     set prio somewhat higher (by 2, to allow walkBack-update process
-	     to run between mine and the debugged processes prio)
-	    "
-	    Processor activeProcess
-		priority:(((inspectedProcess priority + 2) min:(Processor highIOPriority)) max:(Processor userSchedulingPriority+1)).
-	]
+        inspectedProcess notNil ifTrue:[
+            "
+             set prio somewhat higher (by 2, to allow walkBack-update process
+             to run between mine and the debugged processes prio)
+            "
+            Processor activeProcess
+                priority:(((inspectedProcess priority + 2) min:(Processor highIOPriority)) max:(Processor userSchedulingPriority+1)).
+        ]
     ].
 
     self sensor addEventListener:self.
@@ -2798,7 +2815,7 @@
     "/ the debuggee, there would be no event loop for me.
 
     drawableId notNil ifTrue:[
-	^ self
+        ^ self
     ].
     "physically create the view & subviews"
     self recreate.
@@ -2810,37 +2827,37 @@
 
     lines := aMessage asStringCollection.
     lines size > 1 ifTrue:[
-	l := lines first
+        l := lines first
     ] ifFalse:[
-	l := aMessage.
+        l := aMessage.
     ].
 
     l := l , ' ('.
     Error handle:[:ex |
-	l := l , '???'
+        l := l , '???'
     ] do:[
-	processNameOrNil := aProcess name.
-	processNameOrNil notNil ifTrue:[
-	    l := l , (processNameOrNil contractTo:20) , ''.
-	].
-	pidOrNil := aProcess id printString.
-	l := l , '[' , pidOrNil , ']'.
+        processNameOrNil := aProcess name.
+        processNameOrNil notNil ifTrue:[
+            l := l , (processNameOrNil contractTo:20) , ''.
+        ].
+        pidOrNil := aProcess id printString.
+        l := l , '[' , pidOrNil , ']'.
     ].
     l := l , ')'.
     self label:l.
 
     ((ShowThreadID == true) and:[OperatingSystem isMSDOSlike]) ifTrue:[
-	osPidString := ' {threadID: ',OperatingSystem getThreadId printString,'}'.
+        osPidString := ' {threadID: ',OperatingSystem getThreadId printString,'}'.
     ].
 
     exceptionInfoLabel notNil ifTrue:[
-	exceptionInfoLabel
-	    label:(resources
-		    string:'Exception: %1 in process %2 [%3]%4'
-		    with:(lines first colorizeAllWith:Color red)
-		    with:(processNameOrNil ? '')
-		    with:(pidOrNil ? '')
-		    with:(osPidString ? ''))
+        exceptionInfoLabel
+            label:(resources
+                    string:'Exception: %1 in process %2 [%3]%4'
+                    with:(lines first colorizeAllWith:Color red)
+                    with:(processNameOrNil ? '')
+                    with:(pidOrNil ? '')
+                    with:(osPidString ? ''))
     ].
 
     "Modified: / 06-07-2006 / 12:43:19 / cg"
@@ -2850,8 +2867,8 @@
 
 contextInterrupt
     DebuggingDebugger == true ifTrue:[
-	'contextIRQ' printCR.
-	thisContext sender fullPrint.
+        'contextIRQ' printCR.
+        thisContext sender fullPrint.
     ].
     self stepOrNext
 
@@ -2860,8 +2877,8 @@
 
 stepInterrupt
     DebuggingDebugger == true ifTrue:[
-	'stepIRQ' printCR.
-	thisContext sender fullPrint.
+        'stepIRQ' printCR.
+        thisContext sender fullPrint.
     ].
     Processor yield.
     self stepOrNext
@@ -2881,20 +2898,20 @@
     processName := (Processor activeProcess nameOrId),' [',Processor activeProcess id printString,']'.
 
     skipLineNr == #return ifTrue:[
-	self label:('stepping context returned ' , ' (process: ' , processName , ')').
-	here := thisContext sender sender.
-	here setLineNumber:nil.
-	here := nil.
-	con := thisContext sender sender sender.
-
-	HaltInterrupt handle:[:ex |
-	    ('DebugView [info]: halt/breakpoint in debugger at %1 ignored [stepOrNext]' bindWith:ex suspendedContext) infoPrintCR.
-	    ex proceed
-	] do:[
-	    self enter:con select:nil.
-	].
-	con := nil.
-	^ self
+        self label:('stepping context returned ' , ' (process: ' , processName , ')').
+        here := thisContext sender sender.
+        here setLineNumber:nil.
+        here := nil.
+        con := thisContext sender sender sender.
+
+        HaltInterrupt handle:[:ex |
+            ('DebugView [info]: halt/breakpoint in debugger at %1 ignored [stepOrNext]' bindWith:ex suspendedContext) infoPrintCR.
+            ex proceed
+        ] do:[
+            self enter:con select:nil.
+        ].
+        con := nil.
+        ^ self
     ].
 
 "/    "/
@@ -2907,8 +2924,8 @@
 "/    ].
 
     Processor activeProcess ~~ inspectedProcess ifTrue:[
-	'DebugView [info]: stray step interrupt' infoPrintCR.
-	^ self
+        'DebugView [info]: stray step interrupt' infoPrintCR.
+        ^ self
     ].
 
     here := thisContext.        "stepInterrupt"
@@ -2916,73 +2933,73 @@
     here := here sender.        "the interrupted context"
 
     DebuggingDebugger == true ifTrue:[
-	'*******' printCR.
-	'here in ' print.
-	inWrap ifTrue:['(wrap) ' print.].
-	((ObjectMemory addressOf:here) printStringRadix:16) print. ' ' print.
-	here selector printCR.
+        '*******' printCR.
+        'here in ' print.
+        inWrap ifTrue:['(wrap) ' print.].
+        ((ObjectMemory addressOf:here) printStringRadix:16) print. ' ' print.
+        here selector printCR.
     ].
 
     "/ kludge an bug-workaround;
     "/ I should not see those ...
 
     here selector == #ioInterrupt ifTrue:[
-	DebuggingDebugger == true ifTrue:[
-	    'oops - should not get that one' printCR.
-	].
-	Processor ioInterrupt.
-	StepInterruptPending := 1.
-	InterruptPending := 1.
-	where := nil. here := nil.
-	InStepInterrupt := nil.
-	^ self
+        DebuggingDebugger == true ifTrue:[
+            'oops - should not get that one' printCR.
+        ].
+        Processor ioInterrupt.
+        StepInterruptPending := 1.
+        InterruptPending := 1.
+        where := nil. here := nil.
+        InStepInterrupt := nil.
+        ^ self
     ].
 
     stepUntilEntering notNil ifTrue:[
-	DebuggingDebugger == true ifTrue:[
-	    'check if entering ' print. stepUntilEntering printCR.
-	].
-	(stepUntilEntering match:here selector) ifTrue:[
-	    DebuggingDebugger == true ifTrue:[
-		'entering...' printCR.
-	    ].
-	    self label:('arrived at ' , stepUntilEntering , ' (process: ' , processName , ')').
-
-	    lastStepUntilEntering := stepUntilEntering.
-	    stepUntilEntering := nil.
-	    self enter:here select:nil.
-	    con := nil.
-	    ^ self
-	].
-	"/ see if stepping context is still active ...
-
-	con := here.
-
-	DebuggingDebugger == true ifTrue:[
-	    'start searching at: ' print.
-	    con fullPrint.
-	].
-	[con notNil and:[con ~~ steppedContext]] whileTrue:[
-	    con := con sender
-	].
-	con notNil ifTrue:[
-	    DebuggingDebugger == true ifTrue:[
-		'steppingContext still active - continue stepping' printCR.
-	    ].
-	    con := nil.
-	    where := nil. here := nil.
-	    StepInterruptPending := 1.
-	    InterruptPending := 1.
-	    InStepInterrupt := nil.
-	    ^ self
-	].
-	stepUntilEntering := nil.
+        DebuggingDebugger == true ifTrue:[
+            'check if entering ' print. stepUntilEntering printCR.
+        ].
+        (stepUntilEntering match:here selector) ifTrue:[
+            DebuggingDebugger == true ifTrue:[
+                'entering...' printCR.
+            ].
+            self label:('arrived at ' , stepUntilEntering , ' (process: ' , processName , ')').
+
+            lastStepUntilEntering := stepUntilEntering.
+            stepUntilEntering := nil.
+            self enter:here select:nil.
+            con := nil.
+            ^ self
+        ].
+        "/ see if stepping context is still active ...
+
+        con := here.
+
+        DebuggingDebugger == true ifTrue:[
+            'start searching at: ' print.
+            con fullPrint.
+        ].
+        [con notNil and:[con ~~ steppedContext]] whileTrue:[
+            con := con sender
+        ].
+        con notNil ifTrue:[
+            DebuggingDebugger == true ifTrue:[
+                'steppingContext still active - continue stepping' printCR.
+            ].
+            con := nil.
+            where := nil. here := nil.
+            StepInterruptPending := 1.
+            InterruptPending := 1.
+            InStepInterrupt := nil.
+            ^ self
+        ].
+        stepUntilEntering := nil.
     ].
 
     "
      kludge to hide breakpoint wrappers in the context list:
-	 check if we are in a wrapper methods hidden setup-sequence
-	 if so, ignore the interrupt and continue single sending
+         check if we are in a wrapper methods hidden setup-sequence
+         if so, ignore the interrupt and continue single sending
     "
     isWrap := false.
     left := false.
@@ -2990,70 +3007,70 @@
 
     where := here.
     inWrap ifTrue:[
-	wrappedMethod := nil.
-	5 timesRepeat:[
-	    (where notNil and:[where isBlockContext not]) ifTrue:[
-		method := where method.
-		(method notNil and:[method isWrapped]) ifTrue:[
-		    "
-		     in a wrapper method
-		    "
-		    wrappedMethod ~~ method ifTrue:[
-			wrappedMethod := method.
-			lastWrappedContext := where.
-			where sender receiver == method originalMethod ifFalse:[
-			    isWrap := true.
-			]
-		    ] ifFalse:[
-			where == steppedContext ifTrue:[
-
-			    DebuggingDebugger == true ifTrue:[
-				'change stepCon from: ' print.
-				steppedContext print.
-				' to lastWrapped: ' print.
-				lastWrappedContext printCR.
-			    ].
-
-			    inWrap := false.
-			    leftWrap := true.
-			    wrapperContext := steppedContext.
-			    steppedContext := lastWrappedContext
-			]
-		    ]
-		].
-		where := where sender
-	    ]
-	].
+        wrappedMethod := nil.
+        5 timesRepeat:[
+            (where notNil and:[where isBlockContext not]) ifTrue:[
+                method := where method.
+                (method notNil and:[method isWrapped]) ifTrue:[
+                    "
+                     in a wrapper method
+                    "
+                    wrappedMethod ~~ method ifTrue:[
+                        wrappedMethod := method.
+                        lastWrappedContext := where.
+                        where sender receiver == method originalMethod ifFalse:[
+                            isWrap := true.
+                        ]
+                    ] ifFalse:[
+                        where == steppedContext ifTrue:[
+
+                            DebuggingDebugger == true ifTrue:[
+                                'change stepCon from: ' print.
+                                steppedContext print.
+                                ' to lastWrapped: ' print.
+                                lastWrappedContext printCR.
+                            ].
+
+                            inWrap := false.
+                            leftWrap := true.
+                            wrapperContext := steppedContext.
+                            steppedContext := lastWrappedContext
+                        ]
+                    ]
+                ].
+                where := where sender
+            ]
+        ].
     ].
 
     isWrap ifTrue:[
-	DebuggingDebugger == true ifTrue:[
-	    'ignore wrap' printCR.
-	].
-
-	"/
-	"/ ignore, while in wrappers hidden setup
-	"/
-	where := nil. here := nil.
-	ObjectMemory flushInlineCaches.
-
-	skipLineNr == #return ifTrue:[
-	    DebuggingDebugger == true ifTrue:[
-		'skipRet in wrap' printCR.
-	    ]
-	].
-
-	StepInterruptPending := 1.
-	InterruptPending := 1.
-	InStepInterrupt := nil.
-	^ self
+        DebuggingDebugger == true ifTrue:[
+            'ignore wrap' printCR.
+        ].
+
+        "/
+        "/ ignore, while in wrappers hidden setup
+        "/
+        where := nil. here := nil.
+        ObjectMemory flushInlineCaches.
+
+        skipLineNr == #return ifTrue:[
+            DebuggingDebugger == true ifTrue:[
+                'skipRet in wrap' printCR.
+            ]
+        ].
+
+        StepInterruptPending := 1.
+        InterruptPending := 1.
+        InStepInterrupt := nil.
+        ^ self
     ].
 
     inBlock := inBlockBelow := anyStepBlocks := false.
 
     DebuggingDebugger == true ifTrue:[
-	'bigStep is: ' print. bigStep printCR.
-	'steppedContext is: ' print. steppedContext printCR.
+        'bigStep is: ' print. bigStep printCR.
+        'steppedContext is: ' print. steppedContext printCR.
     ].
 
     "/
@@ -3061,31 +3078,31 @@
     "/
     (bigStep
     and:[steppedContext notNil]) ifTrue:[
-	"
-	 a step or next - ignore all contexts below the interesting one
-	"
-	where := here.      "the interrupted context"
-	contextBelow := nil.
-
-	where home notNil ifTrue:[
-	    "/
-	    "/ in a block called by 'our' context ?
-	    "/
-	    where home == steppedContext ifTrue:[
+        "
+         a step or next - ignore all contexts below the interesting one
+        "
+        where := here.      "the interrupted context"
+        contextBelow := nil.
+
+        where home notNil ifTrue:[
+            "/
+            "/ in a block called by 'our' context ?
+            "/
+            where home == steppedContext ifTrue:[
 "/ '*block*' printCR.
-		inBlock := true
-	    ]
-	].
-
-	where == steppedContext ifFalse:[
-	    where := where sender.
-
-	    where notNil ifTrue:[
-		where home == steppedContext ifTrue:[
+                inBlock := true
+            ]
+        ].
+
+        where == steppedContext ifFalse:[
+            where := where sender.
+
+            where notNil ifTrue:[
+                where home == steppedContext ifTrue:[
 "/ '*block*' printCR.
-		    inBlock := true.
-		]
-	    ].
+                    inBlock := true.
+                ]
+            ].
 
 "/ 'looking for ' print.
 "/  (steppedContextAddress printStringRadix:16)print. '' printCR.
@@ -3093,282 +3110,282 @@
 "/where print. ' ' print. ((ObjectMemory addressOf:where)printStringRadix:16) printCR.
 "/steppedContext print. ' ' print. ((ObjectMemory addressOf:steppedContext)printStringRadix:16) printCR.
 
-	    where == steppedContext ifFalse:[
-
-		"/ check if we are in a context below steppedContext
-		"/ (i.e. if steppedContext can be reached from
-		"/  interrupted context. Not using context-ref but its
-		"/  address to avoid creation of many useless contexts.)
-
-		inBlock ifFalse:[
-		    [where notNil] whileTrue:[
-
-			"/ if either the receiver or any arg of this context
-			"/ is a block of the steppedContext, we must really
-			"/ do a single step. Otherwise, stepping through a
-			"/ do:-loop would be very difficult.
-			receiver := where receiver.
-			(receiver isBlock
-			and:[(receiver isKindOf:Block)
-			and:[receiver home == steppedContext]])
-			ifTrue:[
-			    anyStepBlocks := true.
-			] ifFalse:[
-			    where args do:[:arg |
-				(arg isBlock
-				and:[(arg isKindOf:Block)
-				and:[arg home == steppedContext]])
-				ifTrue:[
-				    anyStepBlocks := true.
-				]
-			    ]
-			].
-
-			DebuggingDebugger == true ifTrue:[
-			    ((ObjectMemory addressOf:where) printStringRadix:16)print. ' ' print.
-			    where selector printCR.
-			].
-
-			where == steppedContext ifTrue:[
+            where == steppedContext ifFalse:[
+
+                "/ check if we are in a context below steppedContext
+                "/ (i.e. if steppedContext can be reached from
+                "/  interrupted context. Not using context-ref but its
+                "/  address to avoid creation of many useless contexts.)
+
+                inBlock ifFalse:[
+                    [where notNil] whileTrue:[
+
+                        "/ if either the receiver or any arg of this context
+                        "/ is a block of the steppedContext, we must really
+                        "/ do a single step. Otherwise, stepping through a
+                        "/ do:-loop would be very difficult.
+                        receiver := where receiver.
+                        (receiver isBlock
+                        and:[(receiver isKindOf:Block)
+                        and:[receiver home == steppedContext]])
+                        ifTrue:[
+                            anyStepBlocks := true.
+                        ] ifFalse:[
+                            where args do:[:arg |
+                                (arg isBlock
+                                and:[(arg isKindOf:Block)
+                                and:[arg home == steppedContext]])
+                                ifTrue:[
+                                    anyStepBlocks := true.
+                                ]
+                            ]
+                        ].
+
+                        DebuggingDebugger == true ifTrue:[
+                            ((ObjectMemory addressOf:where) printStringRadix:16)print. ' ' print.
+                            where selector printCR.
+                        ].
+
+                        where == steppedContext ifTrue:[
 "/ 'found it - below; ignore' printCR.
-			    "
-			     found the interesting context somwehere up in the
-			     chain. We seem to be still below the interesting one ...
-			    "
-			    tracing == true ifTrue:[
-				here printString printCR
-			    ].
-			    "
-			      yes, a context below
-			      - continue and schedule another stepInterrupt.
-			      Must flush caches since optimized methods not always
-			      look for pending interrupts
-			    "
-
-			    contextBelow notNil ifTrue:[
+                            "
+                             found the interesting context somwehere up in the
+                             chain. We seem to be still below the interesting one ...
+                            "
+                            tracing == true ifTrue:[
+                                here printString printCR
+                            ].
+                            "
+                              yes, a context below
+                              - continue and schedule another stepInterrupt.
+                              Must flush caches since optimized methods not always
+                              look for pending interrupts
+                            "
+
+                            contextBelow notNil ifTrue:[
 "/ 'prepare for unwind-catch' printCR.
 "/ 'con= ' print. contextBelow printCR.
 "/                                contextBelow selector notNil ifTrue:[
 "/                                    self label:'single stepping - please wait ...(' , contextBelow selector , ')'.
 "/                                ].
 
-				DebuggingDebugger == true ifTrue:[
-				    'below stepCon; continue until unwind of: ' print.
-				    contextBelow printCR.
-				].
-				Processor activeProcess forceInterruptOnReturnOf:contextBelow.
-				StepInterruptPending := nil.
-			    ] ifFalse:[
-				ObjectMemory flushInlineCaches.
+                                DebuggingDebugger == true ifTrue:[
+                                    'below stepCon; continue until unwind of: ' print.
+                                    contextBelow printCR.
+                                ].
+                                Processor activeProcess forceInterruptOnReturnOf:contextBelow.
+                                StepInterruptPending := nil.
+                            ] ifFalse:[
+                                ObjectMemory flushInlineCaches.
 
 "/                                here selector notNil ifTrue:[
 "/                                    self label:'single stepping - please wait ...(' , here selector , ')'.
 "/                                ].
 
-				DebuggingDebugger == true ifTrue:[
-				    'in stepCon; continue single stepping' printCR.
-				].
-				StepInterruptPending := 1.
-				InterruptPending := 1.
-			    ].
-			    where := nil. here := nil.
-			    InStepInterrupt := nil.
-
-			    ^ self
-			].
-
-			(steppedContext notNil and:[
-			 where methodHome == steppedContext methodHome]) ifTrue:[
-			    inBlockBelow := true.
-			].
-
-			anyStepBlocks ifFalse:[
-			    inBlock ifFalse:[
+                                DebuggingDebugger == true ifTrue:[
+                                    'in stepCon; continue single stepping' printCR.
+                                ].
+                                StepInterruptPending := 1.
+                                InterruptPending := 1.
+                            ].
+                            where := nil. here := nil.
+                            InStepInterrupt := nil.
+
+                            ^ self
+                        ].
+
+                        (steppedContext notNil and:[
+                         where methodHome == steppedContext methodHome]) ifTrue:[
+                            inBlockBelow := true.
+                        ].
+
+                        anyStepBlocks ifFalse:[
+                            inBlock ifFalse:[
 "/ workaround a VM bug,
 "/ which does not honor interrupt-on-return of block contexts
 "/ sigh
 where isBlockContext ifFalse:[
-				contextBelow := where
+                                contextBelow := where
 ].
-			    ]
-			].
-			where := where sender
-		    ].
-		    s := 'context returned'.
-		    left := true.
-		].
-	    ] ifTrue:[
+                            ]
+                        ].
+                        where := where sender
+                    ].
+                    s := 'context returned'.
+                    left := true.
+                ].
+            ] ifTrue:[
 "/ 'found it right in sender' printCR.
-		s := 'after step'
-	    ].
-	] ifTrue:[
+                s := 'after step'
+            ].
+        ] ifTrue:[
 "/ 'found it right away' printCR.
-	    s := 'after step'
-	].
+            s := 'after step'
+        ].
     ] ifFalse:[
 "/ ' send' printCR.
-	"
-	 a send
-	"
-	DebuggingDebugger == true ifTrue:[
-	    'clear steppedContext' printCR.
-	].
-	steppedContext := nil.
-	s := 'after send'
+        "
+         a send
+        "
+        DebuggingDebugger == true ifTrue:[
+            'clear steppedContext' printCR.
+        ].
+        steppedContext := nil.
+        s := 'after send'
     ].
 
     ignore := false.
     (inBlock and:[stepHow == #nextOver or:[stepHow == #nextOut]]) ifTrue:[
-	ignore := true.
+        ignore := true.
     ].
 
     "/ handle the case, when a subBlock leaves;
     "/ continue stepping in the home context.
 
     left ifTrue:[
-	steppedContext home notNil ifTrue:[
-	    steppedContext := steppedContext home.
-	    s := 'after step'.
-	    left := false.
+        steppedContext home notNil ifTrue:[
+            steppedContext := steppedContext home.
+            s := 'after step'.
+            left := false.
 "/ DebugView enterUnconditional:thisContext withMessage:'debug'.
 
-	]
+        ]
     ].
 
     "
      kludge to hide breakpoint wrappers in the context list:
-	 check if we are in a wrapper methods hidden exit-sequence
-	 if so, ignore the interrupt and continue single sending
+         check if we are in a wrapper methods hidden exit-sequence
+         if so, ignore the interrupt and continue single sending
     "
     (where isNil
     and:[wrapperContext notNil])
     ifTrue:[
-	"/ did not find our steppedContext along the chain;
-	"/ could be in a wrappedMethods exitBlock ...
-
-	leftWrap ifFalse:[
-	    where := here.
-	    wrappedMethod := nil.
-	    5 timesRepeat:[
-		where notNil ifTrue:[
-		    where isBlockContext ifFalse:[
-			method := where method.
-			(method notNil and:[method isWrapped]) ifTrue:[
-			    where == wrapperContext ifTrue:[
-				DebuggingDebugger == true ifTrue:[
-				    'change stepCon fromWrapped: ' print.
-				    steppedContext print.
-				    ' to: ' print.
-				    wrapperContext printCR.
-				].
-
-				inWrap := true.
-				enteredWrap := true.
-				steppedContext := wrapperContext.
-				wrapperContext := nil.
-			    ]
-			].
-		    ].
-		    where := where sender
-		]
-	    ].
-	].
-	enteredWrap ifTrue:[
-	    ignore := true
-	]
+        "/ did not find our steppedContext along the chain;
+        "/ could be in a wrappedMethods exitBlock ...
+
+        leftWrap ifFalse:[
+            where := here.
+            wrappedMethod := nil.
+            5 timesRepeat:[
+                where notNil ifTrue:[
+                    where isBlockContext ifFalse:[
+                        method := where method.
+                        (method notNil and:[method isWrapped]) ifTrue:[
+                            where == wrapperContext ifTrue:[
+                                DebuggingDebugger == true ifTrue:[
+                                    'change stepCon fromWrapped: ' print.
+                                    steppedContext print.
+                                    ' to: ' print.
+                                    wrapperContext printCR.
+                                ].
+
+                                inWrap := true.
+                                enteredWrap := true.
+                                steppedContext := wrapperContext.
+                                wrapperContext := nil.
+                            ]
+                        ].
+                    ].
+                    where := where sender
+                ]
+            ].
+        ].
+        enteredWrap ifTrue:[
+            ignore := true
+        ]
     ].
 
     "/
 
     left ifTrue:[
-	"/ special care for stepInterrupt in send,
-	"/ when created a dummy context (lineNr == 1)
-
-	steppedContext lineNumber isNil ifTrue:[
-	    steppedContext selector == here sender selector ifTrue:[
-		left := false.
-		s := 'after step'.
-		steppedContext := here sender.
-	    ].
-	].
-	oneMore := true
+        "/ special care for stepInterrupt in send,
+        "/ when created a dummy context (lineNr == 1)
+
+        steppedContext lineNumber isNil ifTrue:[
+            steppedContext selector == here sender selector ifTrue:[
+                left := false.
+                s := 'after step'.
+                steppedContext := here sender.
+            ].
+        ].
+        oneMore := true
     ].
 
     inBlock ifTrue:[
 "/ 'inBlock' printCR.
-	s := 'in block'.
+        s := 'in block'.
     ].
     inBlockBelow ifTrue:[
-	ignore := true
+        ignore := true
     ].
 
     DebuggingDebugger == true ifTrue:[
-	where notNil ifTrue:[
-	    '(' print. steppedContextLineno print. ') ' print.
-	    where printCR.
-	].
+        where notNil ifTrue:[
+            '(' print. steppedContextLineno print. ') ' print.
+            where printCR.
+        ].
     ].
 
     ignore ifFalse:[
-	(bigStep
-	and:[steppedContextLineno notNil
-	and:[where notNil
-	and:[where lineNumber == steppedContextLineno]]]) ifTrue:[
-	    (here isBlockContext
-	    and:[(here methodHome == steppedContext)
-		 or:[here home == steppedContext]]) ifTrue:[
-		DebuggingDebugger == true ifTrue:[
-		    'same line but in block' printCR.
-		].
-
-		steppedContext := actualContext := here.
-		steppedContextLineno := here lineNumber.
-	    ] ifFalse:[
-		"/ kludge - I only have the info for up to 255 lines
-		steppedContextLineno ~~ 255 ifTrue:[
-		    DebuggingDebugger == true ifTrue:[
-			'same line - ignored' printCR.
-		    ].
-		    ignore := true
-		].
-	    ].
-	].
-
-	(left not
-	and:[skipLineNr notNil
-	and:[where notNil
-	and:[where lineNumber notNil
-	and:[where lineNumber < skipLineNr]]]]) ifTrue:[
-	    DebuggingDebugger == true ifTrue:[
-		'skip (' print. skipLineNr print. ' unreached - ignored' printCR.
-	    ].
-	    ignore := true
-	].
-
-	(steppedContextLineno isNil
-	and:[skipLineNr isNil
-	and:[thisContext sender selector == #contextInterrupt]]) ifTrue:[
-	    DebuggingDebugger == true ifTrue:[
-		'same line2 (after conIRQ) - ignored' printCR.
-	    ].
-	    ignore := true
-	].
+        (bigStep
+        and:[steppedContextLineno notNil
+        and:[where notNil
+        and:[where lineNumber == steppedContextLineno]]]) ifTrue:[
+            (here isBlockContext
+            and:[(here methodHome == steppedContext)
+                 or:[here home == steppedContext]]) ifTrue:[
+                DebuggingDebugger == true ifTrue:[
+                    'same line but in block' printCR.
+                ].
+
+                steppedContext := actualContext := here.
+                steppedContextLineno := here lineNumber.
+            ] ifFalse:[
+                "/ kludge - I only have the info for up to 255 lines
+                steppedContextLineno ~~ 255 ifTrue:[
+                    DebuggingDebugger == true ifTrue:[
+                        'same line - ignored' printCR.
+                    ].
+                    ignore := true
+                ].
+            ].
+        ].
+
+        (left not
+        and:[skipLineNr notNil
+        and:[where notNil
+        and:[where lineNumber notNil
+        and:[where lineNumber < skipLineNr]]]]) ifTrue:[
+            DebuggingDebugger == true ifTrue:[
+                'skip (' print. skipLineNr print. ' unreached - ignored' printCR.
+            ].
+            ignore := true
+        ].
+
+        (steppedContextLineno isNil
+        and:[skipLineNr isNil
+        and:[thisContext sender selector == #contextInterrupt]]) ifTrue:[
+            DebuggingDebugger == true ifTrue:[
+                'same line2 (after conIRQ) - ignored' printCR.
+            ].
+            ignore := true
+        ].
     ].
 
     ignore ifTrue:[
 "/' ' printCR.
-	where := nil. here := nil.
-	"
-	 yes, a context below
-	  - continue and schedule another stepInterrupt.
-	  Must flush caches since optimized methods not always
-	  look for pending interrupts
-	"
-	ObjectMemory flushInlineCaches.
-	StepInterruptPending := 1.
-	InterruptPending := 1.
-	InStepInterrupt := nil.
-	^ self
+        where := nil. here := nil.
+        "
+         yes, a context below
+          - continue and schedule another stepInterrupt.
+          Must flush caches since optimized methods not always
+          look for pending interrupts
+        "
+        ObjectMemory flushInlineCaches.
+        StepInterruptPending := 1.
+        InterruptPending := 1.
+        InStepInterrupt := nil.
+        ^ self
     ].
 
 "/ ' ' printCR.
@@ -3383,24 +3400,24 @@
 "/'enter' printCR.
 
     DebuggingDebugger == true ifTrue:[
-	'==> enter on: ' print. thisContext sender sender printCR.
+        '==> enter on: ' print. thisContext sender sender printCR.
     ].
 
     initiallyShown := nil.
     (oneMore == true) ifTrue:[
-	(thisContext sender sender lineNumber ? 0) <= 1 ifTrue:[
-	    initiallyShown := 2
-	] ifFalse:[
-	    initiallyShown := 1
-	]
+        (thisContext sender sender lineNumber ? 0) <= 1 ifTrue:[
+            initiallyShown := 2
+        ] ifFalse:[
+            initiallyShown := 1
+        ]
     ].
     con := thisContext sender sender.
 
     HaltInterrupt handle:[:ex |
-	'DebugView [info]: halt/breakpoint in debugger ignored [stepOpNext 2]' infoPrintCR.
-	ex proceed
+        'DebugView [info]: halt/breakpoint in debugger ignored [stepOpNext 2]' infoPrintCR.
+        ex proceed
     ] do:[
-	self enter:con select:initiallyShown
+        self enter:con select:initiallyShown
     ].
     con := nil
 
@@ -3416,18 +3433,18 @@
     |implementorClass method|
 
     selectedContext isNil ifTrue:[
-	^ self showError:'** select a context first **'
+        ^ self showError:'** select a context first **'
     ].
     (MessageTracer isNil or:[MessageTracer isLoaded not]) ifTrue:[
-	^ self
+        ^ self
     ].
 
     implementorClass := selectedContext methodClass.
     implementorClass notNil ifTrue:[
-	method := implementorClass compiledMethodAt:selectedContext selector.
-	(method notNil and:[method isBreakpointed not]) ifTrue:[
-	    method setBreakPoint
-	]
+        method := implementorClass compiledMethodAt:selectedContext selector.
+        (method notNil and:[method isBreakpointed not]) ifTrue:[
+            method setBreakPoint
+        ]
     ].
     contextView middleButtonMenu disable:#addBreakpoint.
     contextView middleButtonMenu enable:#removeBreakpoint.
@@ -3445,7 +3462,7 @@
     cls := selectedContext receiver class.
     sel := selectedContext selector.
     (cls includesSelector:sel) ifFalse:[
-	sel := nil
+        sel := nil
     ].
     Tools::NewSystemBrowser addToBookMarks:cls selector:sel
 !
@@ -3476,9 +3493,9 @@
     "stop the update process"
 
     updateProcess notNil ifTrue:[
-	monitorToggle lampColor:(Color yellow).
-	updateProcess terminate.
-	updateProcess := nil
+        monitorToggle lampColor:(Color yellow).
+        updateProcess terminate.
+        updateProcess := nil
     ]
 !
 
@@ -3486,25 +3503,25 @@
     "fork a subprocess which updates the contextList in regular intervals"
 
     updateProcess isNil ifTrue:[
-	updateProcess :=
-	    [
-		[true] whileTrue:[
-		    monitorToggle showLamp ifTrue:[
-			monitorToggle lampColor:(Color yellow).
-		    ] ifFalse:[
-			monitorToggle activeForegroundColor:Color black.
-		    ].
-		    (Delay forSeconds:0.25) wait.
-		    self updateContext.
-		    monitorToggle showLamp ifTrue:[
-			monitorToggle lampColor:(Color red).
-		    ] ifFalse:[
-			monitorToggle activeForegroundColor:Color red.
-		    ].
-		    (Delay forSeconds:0.25) wait.
-		    self updateContext.
-		]
-	    ] forkAt:(Processor activePriority - 1)
+        updateProcess :=
+            [
+                [true] whileTrue:[
+                    monitorToggle showLamp ifTrue:[
+                        monitorToggle lampColor:(Color yellow).
+                    ] ifFalse:[
+                        monitorToggle activeForegroundColor:Color black.
+                    ].
+                    (Delay forSeconds:0.25) wait.
+                    self updateContext.
+                    monitorToggle showLamp ifTrue:[
+                        monitorToggle lampColor:(Color red).
+                    ] ifFalse:[
+                        monitorToggle activeForegroundColor:Color red.
+                    ].
+                    (Delay forSeconds:0.25) wait.
+                    self updateContext.
+                ]
+            ] forkAt:(Processor activePriority - 1)
     ]
 
 !
@@ -3519,7 +3536,7 @@
     cls := selectedContext receiver class.
     sel := selectedContext selector.
     (cls includesSelector:sel) ifFalse:[
-	sel := nil
+        sel := nil
     ].
     cls browserClass openInClass:cls selector:sel.
 
@@ -3535,11 +3552,11 @@
 
     mthd := selectedContext method.
     mthd notNil ifTrue:[
-	cls := mthd containingClass.
-	"/ still nil if unbound - then use receivers class
+        cls := mthd containingClass.
+        "/ still nil if unbound - then use receivers class
     ].
     cls isNil ifTrue:[
-	cls := selectedContext receiver class
+        cls := selectedContext receiver class
     ].
     cls browserClass browseClassHierarchy:cls.
 
@@ -3555,11 +3572,11 @@
 
     mthd := selectedContext method.
     mthd notNil ifTrue:[
-	cls := mthd containingClass.
-	"/ still nil if unbound - then use receivers class
+        cls := mthd containingClass.
+        "/ still nil if unbound - then use receivers class
     ].
     cls isNil ifTrue:[
-	cls := selectedContext receiver class
+        cls := selectedContext receiver class
     ].
     cls browserClass browseFullClassProtocol:cls.
 
@@ -3575,15 +3592,15 @@
 
     mthd := selectedContext method.
     mthd notNil ifTrue:[
-	who := selectedContext method who.
-	who notNil ifTrue:[
-	    cls := who methodClass.
-	    sel := who methodSelector.
-	]
+        who := selectedContext method who.
+        who notNil ifTrue:[
+            cls := who methodClass.
+            sel := who methodSelector.
+        ]
     ].
     cls isNil ifTrue:[
-	"/ class not found - try receiver
-	cls := selectedContext receiver class
+        "/ class not found - try receiver
+        cls := selectedContext receiver class
     ].
 
     cls browserClass openInClass:cls selector:sel.
@@ -3596,11 +3613,11 @@
     "open a browser on the implementors of the selected method's selector"
 
     selectedContext isNil ifTrue:[
-	^ self showError:'** select a context first **'
+        ^ self showError:'** select a context first **'
     ].
     "/ selectedContext receiver class browserClass
     UserPreferences systemBrowserClass
-	 browseImplementorsOf:selectedContext selector.
+         browseImplementorsOf:selectedContext selector.
 !
 
 browseImplementorsOf
@@ -3609,19 +3626,19 @@
     |initial selector sel|
 
     (sel := codeView selection) notNil ifTrue:[
-	initial := SystemBrowser extractSelectorFrom:sel
+        initial := SystemBrowser extractSelectorFrom:sel
     ].
     initial isNil ifTrue:[
-	initial := selectedContext isNil
-			    ifTrue:[nil]
-			    ifFalse:[selectedContext selector].
+        initial := selectedContext isNil
+                            ifTrue:[nil]
+                            ifFalse:[selectedContext selector].
     ].
     selector := Dialog
-		    requestSelector:'Selector to browse implementors of:'
-		    initialAnswer:initial.
+                    requestSelector:'Selector to browse implementors of:'
+                    initialAnswer:initial.
     selector size == 0 ifFalse:[
-	UserPreferences systemBrowserClass
-	    browseImplementorsMatching:selector.
+        UserPreferences systemBrowserClass
+            browseImplementorsMatching:selector.
     ]
 
     "Modified: / 6.2.2000 / 01:05:14 / cg"
@@ -3634,13 +3651,13 @@
 
     p := inspectedProcess ? Processor activeProcess.
     (p notNil and:[p isGUIProcess]) ifTrue:[
-	WindowGroup scheduledWindowGroups do:[:wg |
-	    wg process == p ifTrue:[
-		appClass := wg application class.
-		appClass browserClass openInClass:appClass selector:nil.
-		^ self
-	    ]
-	]
+        WindowGroup scheduledWindowGroups do:[:wg |
+            wg process == p ifTrue:[
+                appClass := wg application class.
+                appClass browserClass openInClass:appClass selector:nil.
+                ^ self
+            ]
+        ]
     ].
 !
 
@@ -3654,7 +3671,7 @@
     cls := selectedContext receiver class.
     sel := selectedContext selector.
     (cls includesSelector:sel) ifFalse:[
-	sel := nil
+        sel := nil
     ].
     cls browserClass openInClass:cls selector:sel.
 
@@ -3665,10 +3682,10 @@
     "open a browser on the senders of the selected method's selector"
 
     selectedContext isNil ifTrue:[
-	^ self showError:'** select a context first **'
+        ^ self showError:'** select a context first **'
     ].
     UserPreferences systemBrowserClass
-	browseAllCallsOn:selectedContext selector.
+        browseAllCallsOn:selectedContext selector.
 !
 
 browseSendersOf
@@ -3677,19 +3694,19 @@
     |initial selector sel|
 
     (sel := codeView selection) notNil ifTrue:[
-	initial := SystemBrowser extractSelectorFrom:sel
+        initial := SystemBrowser extractSelectorFrom:sel
     ].
     initial isNil ifTrue:[
-	initial := selectedContext isNil
-			    ifTrue:[nil]
-			    ifFalse:[selectedContext selector].
+        initial := selectedContext isNil
+                            ifTrue:[nil]
+                            ifFalse:[selectedContext selector].
     ].
     selector := Dialog
-		    requestSelector:'Selector to browse senders of:'
-		    initialAnswer:initial.
+                    requestSelector:'Selector to browse senders of:'
+                    initialAnswer:initial.
     selector size == 0 ifFalse:[
-	UserPreferences systemBrowserClass
-	    browseAllCallsOn:selector asSymbol.
+        UserPreferences systemBrowserClass
+            browseAllCallsOn:selector asSymbol.
     ]
 
     "Modified: / 6.2.2000 / 01:05:29 / cg"
@@ -3726,23 +3743,23 @@
      from whatever the process is doing, but does not terminate it."
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - abort anyway ?'))
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - abort anyway ?'))
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     inspecting ifTrue:[
-	inspectedProcess isDead ifTrue:[
-	    self showTerminated.
-	    ^ self
-	].
-	(AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
-	    self showError:'** the process does not handle the abort signal **'
-	] ifTrue:[
-	    self interruptProcessWith:[AbortOperationRequest raise].
-	].
-	^ self
+        inspectedProcess isDead ifTrue:[
+            self showTerminated.
+            ^ self
+        ].
+        (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
+            self showError:'** the process does not handle the abort signal **'
+        ] ifTrue:[
+            self interruptProcessWith:[AbortOperationRequest raise].
+        ].
+        ^ self
     ].
 
     steppedContext := wrapperContext := nil.
@@ -3751,11 +3768,11 @@
 
     "exit private event-loop"
     catchBlock notNil ifTrue:[
-	abortButton turnOff.
-	catchBlock value.
-
-	"/ not reached
-	'DebugView [warning]: abort failed' errorPrintCR.
+        abortButton turnOff.
+        catchBlock value.
+
+        "/ not reached
+        'DebugView [warning]: abort failed' errorPrintCR.
     ].
 
     ^ self.
@@ -3769,23 +3786,23 @@
      from whatever the process is doing, but does not terminate it."
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - abort anyway ?'))
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - abort anyway ?'))
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     inspecting ifTrue:[
-	inspectedProcess isDead ifTrue:[
-	    self showTerminated.
-	    ^ self
-	].
-	(AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
-	    self showError:'** the process does not handle the abort signal **'
-	] ifTrue:[
-	    self interruptProcessWith:[AbortAllOperationRequest raise].
-	].
-	^ self
+        inspectedProcess isDead ifTrue:[
+            self showTerminated.
+            ^ self
+        ].
+        (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
+            self showError:'** the process does not handle the abort signal **'
+        ] ifTrue:[
+            self interruptProcessWith:[AbortAllOperationRequest raise].
+        ].
+        ^ self
     ].
 
     steppedContext := wrapperContext := nil.
@@ -3794,11 +3811,11 @@
 
     "exit private event-loop"
     catchBlock notNil ifTrue:[
-	abortButton turnOff.
-	catchBlock value.
-
-	"/ not reached
-	'DebugView [warning]: abort failed' errorPrintCR.
+        abortButton turnOff.
+        catchBlock value.
+
+        "/ not reached
+        'DebugView [warning]: abort failed' errorPrintCR.
     ].
 
     ^ self.
@@ -3812,59 +3829,59 @@
     |proc exContext ex answer|
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - continue anyway ?')) ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - continue anyway ?')) ifFalse:[
+            ^ self
+        ]
     ].
 
     inspecting ifTrue:[
-	device hasColors ifTrue:[
-	    continueButton foregroundColor:Color red darkened.
-	].
-	continueButton label:(resources string:'Stop').
-	continueButton action:[self doStop].
-
-	self processPerform:#resume.
-
-	^ self
+        device hasColors ifTrue:[
+            continueButton foregroundColor:Color red darkened.
+        ].
+        continueButton label:(resources string:'Stop').
+        continueButton action:[self doStop].
+
+        self processPerform:#resume.
+
+        ^ self
     ].
     canContinue ifTrue:[
-	exContext := thisContext findSpecialHandle:false raise:true.
-
-	(exContext notNil
-	and:[ (ex := exContext receiver) isLazyValue not
-	and:[ ex isException
-	and:[ ex signal == NoHandlerError
-	and:[ ex parameter signal == RecursionError]]]])
-	ifTrue:[
-	    "/ debug due to unhandled recursionInterrupt.
-	    "/ ask if we should proceed with more stack.
-
-	    answer := self confirm:'Debugger entered due to a stack overflow.\\Continue with more stack ?' withCRs.
-	    answer == true ifTrue:[
-		proc := Processor activeProcess.
-		proc setMaximumStackSize:(proc maximumStackSize * 2).
-	    ].
-	].
-
-	steppedContext := wrapperContext := nil.
-	tracing := false.
-	haveControl := false.
-	exitAction := #continue.
-
-	"exit private event-loop"
-	catchBlock value.
-
-	"/ not reached.
-	'DebugView [warning]: continue failed' errorPrintCR.
-	continueButton turnOff.
+        exContext := thisContext findSpecialHandle:false raise:true.
+
+        (exContext notNil
+        and:[ (ex := exContext receiver) isLazyValue not
+        and:[ ex isException
+        and:[ ex signal == NoHandlerError
+        and:[ ex parameter signal == RecursionError]]]])
+        ifTrue:[
+            "/ debug due to unhandled recursionInterrupt.
+            "/ ask if we should proceed with more stack.
+
+            answer := self confirm:'Debugger entered due to a stack overflow.\\Continue with more stack ?' withCRs.
+            answer == true ifTrue:[
+                proc := Processor activeProcess.
+                proc setMaximumStackSize:(proc maximumStackSize * 2).
+            ].
+        ].
+
+        steppedContext := wrapperContext := nil.
+        tracing := false.
+        haveControl := false.
+        exitAction := #continue.
+
+        "exit private event-loop"
+        catchBlock value.
+
+        "/ not reached.
+        'DebugView [warning]: continue failed' errorPrintCR.
+        continueButton turnOff.
 
     ] ifFalse:[
-	inspecting ifFalse:[
-	    'DebugView [info]: resuming top context' infoPrintCR.
-	    self showSelection:1.
-	    self doReturn
-	]
+        inspecting ifFalse:[
+            'DebugView [info]: resuming top context' infoPrintCR.
+            self showSelection:1.
+            self doReturn
+        ]
     ]
 
     "Modified: / 5.10.1998 / 13:03:47 / cg"
@@ -3881,34 +3898,34 @@
     selector := actualContext selector.
     implClass := actualContext receiver class whichClassIncludesSelector:selector.
     implClass notNil ifTrue:[
-	"/ must be a subclassResponsibility
-
-	idx := contextArray identityIndexOf:actualContext.
-	idx > 1 ifTrue:[
-	    callee := contextArray at:idx-1.
-
-	    callee selector == #subclassResponsibility ifTrue:[
-		restart := false.
-	    ]
-	].
+        "/ must be a subclassResponsibility
+
+        idx := contextArray identityIndexOf:actualContext.
+        idx > 1 ifTrue:[
+            callee := contextArray at:idx-1.
+
+            callee selector == #subclassResponsibility ifTrue:[
+                restart := false.
+            ]
+        ].
     ].
 
     "generate nice argument names"
     bagOfClassNames := (actualContext args collect:[:eachArg | eachArg class name]) asBag.
     bagOfUsedClassNames := Bag new.
     argNames := actualContext args
-		    collect:
-			[:eachArg |
-			    |nm|
-
-			    nm := eachArg class name.
-			    (bagOfClassNames occurrencesOf:nm) == 1 ifTrue:[
-				nm article , nm
-			    ] ifFalse:[
-				bagOfUsedClassNames add:nm.
-				nm asLowercaseFirst , (bagOfUsedClassNames occurrencesOf:nm) printString
-			    ].
-			].
+                    collect:
+                        [:eachArg |
+                            |nm|
+
+                            nm := eachArg class name.
+                            (bagOfClassNames occurrencesOf:nm) == 1 ifTrue:[
+                                nm article , nm
+                            ] ifFalse:[
+                                bagOfUsedClassNames add:nm.
+                                nm asLowercaseFirst , (bagOfUsedClassNames occurrencesOf:nm) printString
+                            ].
+                        ].
 
     proto := Method methodDefinitionTemplateForSelector:selector andArgumentNames:argNames.
 
@@ -3916,24 +3933,24 @@
     haltStmtFix := '    self halt:''please change %2 as required''.'.
 
     actualContext receiver isNil ifTrue:[
-	(self confirm:'Are you sure you want to add this method (to UndefinedObject) ?')
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:'Are you sure you want to add this method (to UndefinedObject) ?')
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     receiversClass := actualContext receiver class.
 
     (receiversClass instVarNames includes:selector) ifTrue:[
-	code := '%1\' , haltStmtFix , '\    ^ %2'.
-	cat := 'accessing'.
+        code := '%1\' , haltStmtFix , '\    ^ %2'.
+        cat := 'accessing'.
     ].
     (selector numArgs == 1
     and:[(selector endsWith:':')
     and:[receiversClass instVarNames includes:(selector copyWithoutLast:1)]])
     ifTrue:[
-	code := '%1\' , haltStmtFix , '\    %2 := arg.'.
-	cat := 'accessing'.
+        code := '%1\' , haltStmtFix , '\    %2 := arg.'.
+        cat := 'accessing'.
     ].
 
 "/    actualContext receiver isClass ifTrue:[
@@ -3945,19 +3962,19 @@
 "/        ].
 "/    ].
     code isNil ifTrue:[
-	code := '%1\' , haltStmtDef
+        code := '%1\' , haltStmtDef
     ].
 
     self
-	codeAccept:(code bindWith:proto with:selector) withCRs
-	inClass:receiversClass
-	unwind:false
-	category:cat
-	onCancel:[^ self].
+        codeAccept:(code bindWith:proto with:selector) withCRs
+        inClass:receiversClass
+        unwind:false
+        category:cat
+        onCancel:[^ self].
 
     self doShowSelection:selectionIndex.
     restart ifTrue:[
-	self doRestart
+        self doRestart
     ]
 
     "Modified: / 17.11.2001 / 23:43:54 / cg"
@@ -3973,23 +3990,23 @@
     inspecting ifTrue:[^ self].
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - step anyway ?'))
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - step anyway ?'))
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     canContinue ifTrue:[
-	steppedContext := wrapperContext := nil.
-	haveControl := false.
-	exitAction := #step.
-
-	"exit private event-loop"
-	catchBlock value.
-
-	"/ not reached
-	'DebugView [warning]: send failed' errorPrintCR.
-	sendButton turnOff.
+        steppedContext := wrapperContext := nil.
+        haveControl := false.
+        exitAction := #step.
+
+        "exit private event-loop"
+        catchBlock value.
+
+        "/ not reached
+        'DebugView [warning]: send failed' errorPrintCR.
+        sendButton turnOff.
     ]
 
     "Created: / 6.3.1997 / 21:09:36 / cg"
@@ -4027,8 +4044,8 @@
 
 doNoTrace
     traceView notNil ifTrue:[
-	traceView topView destroy.
-	traceView := nil.
+        traceView topView destroy.
+        traceView := nil.
     ].
     tracing := false
 !
@@ -4045,9 +4062,9 @@
     str := '' writeStream.
 
     str nextPutLine:('Error notification from '
-		    , OperatingSystem getLoginName
-		    , '@'
-		    , OperatingSystem getHostName).
+                    , OperatingSystem getLoginName
+                    , '@'
+                    , OperatingSystem getHostName).
     str cr.
 
     str nextPutLine:('Time: ' , Timestamp now printString).
@@ -4060,16 +4077,16 @@
     str cr.
 
     firstContext notNil ifTrue:[
-	firstContext fullPrintAllOn:str.
+        firstContext fullPrintAllOn:str.
     ].
     str cr;cr.
 
     SendMailTool
-	openForMessage:(str contents)
-	withSubject:('STX Error:[', self label, ']')
-	preOpenBlock:[:inst|
-	    inst recipientEntryField value:'error@exept.de'
-	].
+        openForMessage:(str contents)
+        withSubject:('STX Error:[', self label, ']')
+        preOpenBlock:[:inst|
+            inst recipientEntryField value:'error@exept.de'
+        ].
 
     "Modified: / 20-09-2007 / 12:40:40 / cg"
 !
@@ -4078,16 +4095,16 @@
     "restart - the selected context will be restarted"
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - restart anyway ?')) ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - restart anyway ?')) ifFalse:[
+            ^ self
+        ]
     ].
     inspecting ifTrue:[
-	selectedContext isNil ifTrue:[
-	    ^ self showError:'** select a context first **'
-	].
-	self interruptProcessWith:[ selectedContext unwindAndRestart ].
-	^ self
+        selectedContext isNil ifTrue:[
+            ^ self showError:'** select a context first **'
+        ].
+        self interruptProcessWith:[ selectedContext unwindAndRestart ].
+        ^ self
     ].
     steppedContext := wrapperContext := nil.
     haveControl := false.
@@ -4107,18 +4124,18 @@
     "return - the selected context will do a ^nil"
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - return anyway ?'))
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - return anyway ?'))
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     inspecting ifTrue:[
-	selectedContext isNil ifTrue:[
-	    ^ self showError:'** select a context first **'
-	].
-	self interruptProcessWith:[selectedContext unwind:nil].
-	^ self
+        selectedContext isNil ifTrue:[
+            ^ self showError:'** select a context first **'
+        ].
+        self interruptProcessWith:[selectedContext unwind:nil].
+        ^ self
     ].
 
     steppedContext := wrapperContext := nil.
@@ -4178,69 +4195,69 @@
     inspecting ifTrue:[^ self].
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - step anyway ?'))
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - step anyway ?'))
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     canContinue ifTrue:[
-	selectedContext notNil ifTrue:[
-	    con := actualContext. "/ selectedContext.
-	    steppedContextLineno := actualContext lineNumber.
-	] ifFalse:[
-	    con := contextArray at:2.
-	    steppedContextLineno := con lineNumber.
-	].
-
-	skipLineNr := lineNr.
-
-	lineNr == -1 ifTrue:[
-	    steppedContextLineno := skipLineNr := nil.
-	].
-
-	(stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
-	    steppedContext := contextArray at:1.
-	    stepHow := #nextIn.
-	] ifFalse:[
-	    stepHow == #nextOut ifTrue:[
-		steppedContext := con home.
-	    ] ifFalse:[
-		steppedContext := con.
-	    ].
-	].
-	wrapperContext := nil.
+        selectedContext notNil ifTrue:[
+            con := actualContext. "/ selectedContext.
+            steppedContextLineno := actualContext lineNumber.
+        ] ifFalse:[
+            con := contextArray at:2.
+            steppedContextLineno := con lineNumber.
+        ].
+
+        skipLineNr := lineNr.
+
+        lineNr == -1 ifTrue:[
+            steppedContextLineno := skipLineNr := nil.
+        ].
+
+        (stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
+            steppedContext := contextArray at:1.
+            stepHow := #nextIn.
+        ] ifFalse:[
+            stepHow == #nextOut ifTrue:[
+                steppedContext := con home.
+            ] ifFalse:[
+                steppedContext := con.
+            ].
+        ].
+        wrapperContext := nil.
 
 "/ ' step con:' print. (ObjectMemory addressOf:steppedContext) printHex. ' ' print. steppedContext printCR.
 
-	"
-	 if we step in a wrapped method,
-	 prepare to skip the prolog ...
-	"
-
-	inWrap := false.
-	method := con method.
-	(method notNil
-	and:[method isWrapped
-	and:[method originalMethod ~~ method]]) ifTrue:[
-	    inWrap := true
-	].
-
-	lineNr == #return ifTrue:[
-	    Processor activeProcess forceInterruptOnReturnOf:con.
-	].
-
-	con := nil.
-	bigStep := true.
-	haveControl := false.
-	exitAction := #step.
-
-	"exit private event-loop"
-	catchBlock value.
-
-	"/ not reached
-	'DebugView [warning]: step failed' errorPrintCR.
-	stepButton turnOff. nextButton turnOff. sendButton turnOff.
+        "
+         if we step in a wrapped method,
+         prepare to skip the prolog ...
+        "
+
+        inWrap := false.
+        method := con method.
+        (method notNil
+        and:[method isWrapped
+        and:[method originalMethod ~~ method]]) ifTrue:[
+            inWrap := true
+        ].
+
+        lineNr == #return ifTrue:[
+            Processor activeProcess forceInterruptOnReturnOf:con.
+        ].
+
+        con := nil.
+        bigStep := true.
+        haveControl := false.
+        exitAction := #step.
+
+        "exit private event-loop"
+        catchBlock value.
+
+        "/ not reached
+        'DebugView [warning]: step failed' errorPrintCR.
+        stepButton turnOff. nextButton turnOff. sendButton turnOff.
     ]
 
     "Modified: / 29.7.1998 / 21:50:16 / cg"
@@ -4250,15 +4267,15 @@
     "stop the process (if its running, otherwise this is a no-op)"
 
     inspecting ifTrue:[
-	device hasColors ifTrue:[
-	    continueButton foregroundColor:Color green darkened darkened.
-	].
-	continueButton label:(resources string:'Continue').
-	continueButton action:[self doContinue].
-
-	self processPerform:#stop.
-
-	^ self
+        device hasColors ifTrue:[
+            continueButton foregroundColor:Color green darkened darkened.
+        ].
+        continueButton label:(resources string:'Continue').
+        continueButton action:[self doContinue].
+
+        self processPerform:#stop.
+
+        ^ self
     ].
 
     "Modified: 20.10.1996 / 18:30:48 / cg"
@@ -4268,15 +4285,15 @@
     "terminate - the process has a chance for cleanup"
 
     self checkIfCodeIsReallyModified ifTrue:[
-	(self confirm:('Code modified - terminate anyway ?'))
-	ifFalse:[
-	    ^ self
-	]
+        (self confirm:('Code modified - terminate anyway ?'))
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     inspecting ifTrue:[
-	self processPerform:#terminate.
-	^ self
+        self processPerform:#terminate.
+        ^ self
     ].
 
     steppedContext := wrapperContext := nil.
@@ -4288,11 +4305,11 @@
 
     "/ not reached (normally)
     inspecting ifFalse:[
-	'DebugView [warning]: terminate failed' errorPrintCR.
-	(self confirm:'Regular terminate failed - do it the hard way ?') ifTrue:[
-	    Debugger newDebugger.
-	    Processor activeProcess terminate.
-	]
+        'DebugView [warning]: terminate failed' errorPrintCR.
+        (self confirm:'Regular terminate failed - do it the hard way ?') ifTrue:[
+            Debugger newDebugger.
+            Processor activeProcess terminate.
+        ]
     ].
     terminateButton turnOff.
 
@@ -4332,8 +4349,8 @@
     "tracestep - not implemented yet"
 
     canContinue ifTrue:[
-	tracing := true.
-	self doStep
+        tracing := true.
+        self doStep
     ]
 !
 
@@ -4348,24 +4365,36 @@
 !
 
 ignoreAllHaltsForever
-    self addIgnoredHaltForCount:-1 orTimeDuration:nil forAll:true.
+    self addIgnoredHaltForCount:-1 orTimeDuration:nil orUntilShiftKey:false forAll:true.
 
     "Created: / 08-05-2011 / 10:19:56 / cg"
 !
 
+ignoreAllHaltsUntilShiftKeyIsPressed
+    self addIgnoredHaltForCount:nil orTimeDuration:nil orUntilShiftKey:true forAll:true.
+
+    "Created: / 27-01-2012 / 11:32:14 / cg"
+!
+
 ignoreHaltForever
-    self addIgnoredHaltForCount:-1 orTimeDuration:nil forAll:false.
-
-    "Modified: / 08-05-2011 / 10:20:03 / cg"
+    self addIgnoredHaltForCount:-1 orTimeDuration:nil orUntilShiftKey:false forAll:false.
+
+    "Modified: / 27-01-2012 / 11:31:37 / cg"
+!
+
+ignoreHaltUntilShiftKeyIsPressed
+    self addIgnoredHaltForCount:nil orTimeDuration:nil orUntilShiftKey:true forAll:false.
+
+    "Created: / 27-01-2012 / 11:36:54 / cg"
 !
 
 inspectContext
     "launch an inspector on the currently selected context"
 
     contextView selection notNil ifTrue:[
-	(contextView selectionValue startsWith:'**') ifFalse:[
-	    (contextArray at:(contextView selection)) inspect.
-	]
+        (contextView selectionValue startsWith:'**') ifFalse:[
+            (contextArray at:(contextView selection)) inspect.
+        ]
     ]
 !
 
@@ -4383,95 +4412,95 @@
     |items m nameOfExecutable|
 
     exclusive ifTrue:[
-	items := #(
-		    ('Show More WalkBack'               showMore                )
-		    ('Show Verbose WalkBack'            showVerboseWalkback     )
-		    ('-'                                                        )
-		    ('Add Breakpoint'                   addBreakpoint           )
-		    ('Remove Breakpoint'                removeBreakpoint        )
-		    ('Remove all Break- && Tracepoints'  removeAllBreakpoints    )
-		    ('-'                                                        )
-		  ).
+        items := #(
+                    ('Show More WalkBack'               showMore                )
+                    ('Show Verbose WalkBack'            showVerboseWalkback     )
+                    ('-'                                                        )
+                    ('Add Breakpoint'                   addBreakpoint           )
+                    ('Remove Breakpoint'                removeBreakpoint        )
+                    ('Remove all Break- && Tracepoints'  removeAllBreakpoints    )
+                    ('-'                                                        )
+                  ).
     ] ifFalse:[
-	items := #(
-		    ('Show More WalkBack'               showMore                )
-		    ('Show Verbose WalkBack'            showVerboseWalkback     )
-		    ('-'                                                        )
-		    ('Skip'                             skip                    )
-		    ('Step Out'                         skipForReturn           )
-		    ('Skip until Entering...'           skipUntilEntering       )
-		    ('-'                                                        )
+        items := #(
+                    ('Show More WalkBack'               showMore                )
+                    ('Show Verbose WalkBack'            showVerboseWalkback     )
+                    ('-'                                                        )
+                    ('Skip'                             skip                    )
+                    ('Step Out'                         skipForReturn           )
+                    ('Skip until Entering...'           skipUntilEntering       )
+                    ('-'                                                        )
 "
-		    ('Continue'                         doContinue              )
-		    ('Terminate'                        doTerminate             )
-		    ('Abort'                            doAbort                 )
-		    ('-'                                                        )
-		    ('Step'                             doStep                  )
-		    ('Send'                             doSend                  )
-		    ('-'                                                        )
-		    ('Return'                           doReturn                )
-		    ('Restart'                          doRestart               )
-		    ('-'                                                        )
+                    ('Continue'                         doContinue              )
+                    ('Terminate'                        doTerminate             )
+                    ('Abort'                            doAbort                 )
+                    ('-'                                                        )
+                    ('Step'                             doStep                  )
+                    ('Send'                             doSend                  )
+                    ('-'                                                        )
+                    ('Return'                           doReturn                )
+                    ('Restart'                          doRestart               )
+                    ('-'                                                        )
 "
-		    ('Add Breakpoint'                   addBreakpoint           )
-		    ('Remove Breakpoint'                removeBreakpoint        )
-		    ('Remove all Break- && Tracepoints'  removeAllBreakpoints    )
-		).
-
-	self allowBreakPointsInDebugger ifFalse:[
-	    items := items , #(
-			('Allow Breakpoints && halt in Debugger'      doNotIgnoreBreakpoints  )
-		    ).
-	] ifTrue:[
-	    items := items , #(
-			('Ignore Breakpoints && halt in Debugger'     doIgnoreBreakpoints  )
-		    ).
-	].
-
-	items := items , #(
-		    ('-'                                                        )
-		    ('Browse Implementing Class'      browseImplementingClass )
-		    ('Browse Receivers Class'             browseReceiversClass    )
-		    ('Browse Receivers Class Hierarchy'   browseClassHierarchy    )
-		    ('Browse Receivers Full Protocol'     browseFullClassProtocol )
-		    ('Implementors'                     browseImplementors      )
-		    ('Implementors Of...'               browseImplementorsOf    )
-		    ('Senders'                          browseSenders           )
-		    ('Senders Of...'                    browseSendersOf         )
-		    ('-'                                                        )
-		    ('Inspect Context'                  inspectContext          )
-		  ).
+                    ('Add Breakpoint'                   addBreakpoint           )
+                    ('Remove Breakpoint'                removeBreakpoint        )
+                    ('Remove all Break- && Tracepoints'  removeAllBreakpoints    )
+                ).
+
+        self allowBreakPointsInDebugger ifFalse:[
+            items := items , #(
+                        ('Allow Breakpoints && halt in Debugger'      doNotIgnoreBreakpoints  )
+                    ).
+        ] ifTrue:[
+            items := items , #(
+                        ('Ignore Breakpoints && halt in Debugger'     doIgnoreBreakpoints  )
+                    ).
+        ].
+
+        items := items , #(
+                    ('-'                                                        )
+                    ('Browse Implementing Class'      browseImplementingClass )
+                    ('Browse Receivers Class'             browseReceiversClass    )
+                    ('Browse Receivers Class Hierarchy'   browseClassHierarchy    )
+                    ('Browse Receivers Full Protocol'     browseFullClassProtocol )
+                    ('Implementors'                     browseImplementors      )
+                    ('Implementors Of...'               browseImplementorsOf    )
+                    ('Senders'                          browseSenders           )
+                    ('Senders Of...'                    browseSendersOf         )
+                    ('-'                                                        )
+                    ('Inspect Context'                  inspectContext          )
+                  ).
     ].
 
     items := items , #(
-		('Copy WalkBack Text'               copyWalkbackText        )
-		('-'                                                        )
-		('QuickTerminate'                   quickTerminate          )
-		('='                                                        )).
+                ('Copy WalkBack Text'               copyWalkbackText        )
+                ('-'                                                        )
+                ('QuickTerminate'                   quickTerminate          )
+                ('='                                                        )).
 
     nameOfExecutable := OperatingSystem nameOfSTXExecutable asFilename withoutSuffix baseName.
     nameOfExecutable = 'stx' ifTrue:[ nameOfExecutable := 'Smalltalk' ].
 
     items := items , {
-	{ 'Exit %1 (No Confirmation)' bindWith:nameOfExecutable. #exit                 }}.
+        { 'Exit %1 (No Confirmation)' bindWith:nameOfExecutable. #exit                 }}.
 
     m := PopUpMenu
-		itemList:items
-		resources:resources
-		receiver:self
-		for:contextView.
+                itemList:items
+                resources:resources
+                receiver:self
+                for:contextView.
 
     verboseBacktrace ifTrue:[
-	m labelAt:#showVerboseWalkback put:(resources string:'Show Dense WalkBack').
-	m selectorAt:#showVerboseWalkback put:#showDenseWalkback
+        m labelAt:#showVerboseWalkback put:(resources string:'Show Dense WalkBack').
+        m selectorAt:#showVerboseWalkback put:#showDenseWalkback
     ].
 
     inspecting ifTrue:[
-	m notNil ifTrue:[
-	    m disableAll:#(doTraceStep removeBreakpoint browseImplementingClass browseReceiversClass
-			   browseClassHierarchy browseFullClassProtocol
-			   browseImplementors browseSenders inspectContext skip doStepOut).
-	].
+        m notNil ifTrue:[
+            m disableAll:#(doTraceStep removeBreakpoint browseImplementingClass browseReceiversClass
+                           browseClassHierarchy browseFullClassProtocol
+                           browseImplementors browseSenders inspectContext skip doStepOut).
+        ].
     ].
     self updateMenuItems.
 
@@ -4498,17 +4527,17 @@
     |answer dT|
 
     [
-	answer := Dialog
-		    request:(resources string:'How long should all halts/breakpoints be ignored [smh] ?')
-		    initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
-	answer isEmptyOrNil ifTrue:[^ self].
-
-	dT := TimeDuration readFrom:answer onError:[ nil ].
-	dT notNil ifTrue:[
-	    LastIgnoreHaltDuration := dT.
-	    self addIgnoredHaltForCount:nil orTimeDuration:dT forAll:true.
-	    ^ self.
-	].
+        answer := Dialog
+                    request:(resources string:'How long should all halts/breakpoints be ignored [smh] ?')
+                    initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
+        answer isEmptyOrNil ifTrue:[^ self].
+
+        dT := TimeDuration readFrom:answer onError:[ nil ].
+        dT notNil ifTrue:[
+            LastIgnoreHaltDuration := dT.
+            self addIgnoredHaltForCount:nil orTimeDuration:dT orUntilShiftKey:false forAll:true.
+            ^ self.
+        ].
     ] loop
 
     "Created: / 08-05-2011 / 10:19:20 / cg"
@@ -4518,52 +4547,52 @@
     |answer n|
 
     [
-	answer := Dialog
-		    request:(resources string:'How often should this halt be ignored ?')
-		    initialAnswer:(LastIgnoreHaltNTimes ? '') printString.
-	answer isEmptyOrNil ifTrue:[^ self].
-
-	n := Integer readFrom:answer onError:nil.
-	n notNil ifTrue:[
-	    LastIgnoreHaltNTimes := n.
-	    self addIgnoredHaltForCount:n orTimeDuration:nil forAll:false.
-	    ^ self.
-	].
+        answer := Dialog
+                    request:(resources string:'How often should this halt be ignored ?')
+                    initialAnswer:(LastIgnoreHaltNTimes ? '') printString.
+        answer isEmptyOrNil ifTrue:[^ self].
+
+        n := Integer readFrom:answer onError:nil.
+        n notNil ifTrue:[
+            LastIgnoreHaltNTimes := n.
+            self addIgnoredHaltForCount:n orTimeDuration:nil orUntilShiftKey:false forAll:false.
+            ^ self.
+        ].
     ] loop.
 
-    "Modified: / 08-05-2011 / 10:20:19 / cg"
+    "Modified: / 27-01-2012 / 11:31:44 / cg"
 !
 
 openIgnoreHaltUntilTimeElapsedDialog
     |answer dT|
 
     [
-	answer := Dialog
-		    request:(resources string:'How long should this halt/breakpoint be ignored (s/m/h) ?')
-		    initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
-	answer isEmptyOrNil ifTrue:[^ self].
-
-	dT := TimeDuration readFrom:answer onError:[ nil ].
-	dT notNil ifTrue:[
-	    LastIgnoreHaltDuration := dT.
-	    self addIgnoredHaltForCount:nil orTimeDuration:dT forAll:false.
-	    ^ self.
-	].
+        answer := Dialog
+                    request:(resources string:'How long should this halt/breakpoint be ignored (s/m/h) ?')
+                    initialAnswer:(LastIgnoreHaltDuration ? '30s') printString.
+        answer isEmptyOrNil ifTrue:[^ self].
+
+        dT := TimeDuration readFrom:answer onError:[ nil ].
+        dT notNil ifTrue:[
+            LastIgnoreHaltDuration := dT.
+            self addIgnoredHaltForCount:nil orTimeDuration:dT orUntilShiftKey:false forAll:false.
+            ^ self.
+        ].
     ] loop
 
-    "Modified: / 08-05-2011 / 10:20:11 / cg"
+    "Modified: / 27-01-2012 / 11:31:47 / cg"
 !
 
 openSettingsDialog
     |settingsList settingsApp|
 
     settingsList :=
-	#(
-	   #('Debugger'       #'AbstractSettingsApplication::DebuggerSettingsAppl'            )
-	   #('Editor'         #'AbstractSettingsApplication::EditSettingsAppl'                )
-	   #('Syntax Color'   #'AbstractSettingsApplication::SyntaxColorSettingsAppl'         )
-	   #('Code Format'    #'AbstractSettingsApplication::SourceCodeFormatSettingsAppl'    )
-	).
+        #(
+           #('Debugger'       #'AbstractSettingsApplication::DebuggerSettingsAppl'            )
+           #('Editor'         #'AbstractSettingsApplication::EditSettingsAppl'                )
+           #('Syntax Color'   #'AbstractSettingsApplication::SyntaxColorSettingsAppl'         )
+           #('Code Format'    #'AbstractSettingsApplication::SourceCodeFormatSettingsAppl'    )
+        ).
 
     settingsApp := SettingsDialog new.
     "/ settingsApp requestor:self.
@@ -4577,8 +4606,8 @@
     "quick terminate - the process will get no chance for cleanup actions"
 
     inspecting ifTrue:[
-	self processPerform:#terminateNoSignal.
-	^ self
+        self processPerform:#terminateNoSignal.
+        ^ self
     ].
 
     steppedContext := wrapperContext := nil.
@@ -4590,11 +4619,11 @@
 
     "/ not reached (normally)
     inspecting ifFalse:[
-	'DebugView [warning]: quick terminate failed' errorPrintCR.
-	(self confirm:'Regular quick terminate failed - do it the hard way ?') ifTrue:[
-	    Debugger newDebugger.
-	    Processor activeProcess terminateNoSignal.
-	]
+        'DebugView [warning]: quick terminate failed' errorPrintCR.
+        (self confirm:'Regular quick terminate failed - do it the hard way ?') ifTrue:[
+            Debugger newDebugger.
+            Processor activeProcess terminateNoSignal.
+        ]
     ].
     terminateButton turnOff.
 
@@ -4605,9 +4634,9 @@
     "remove all trace & breakpoints - if any"
 
     (MessageTracer notNil and:[MessageTracer isLoaded]) ifTrue:[
-	self withExecuteCursorDo:[
-	    MessageTracer unwrapAllMethods
-	]
+        self withExecuteCursorDo:[
+            MessageTracer unwrapAllMethods
+        ]
     ]
 
     "Modified: / 21.5.1998 / 01:44:43 / cg"
@@ -4619,18 +4648,18 @@
     |implementorClass method|
 
     selectedContext isNil ifTrue:[
-	^ self showError:'** select a context first **'
+        ^ self showError:'** select a context first **'
     ].
     (MessageTracer isNil or:[MessageTracer isLoaded not]) ifTrue:[
-	^ self
+        ^ self
     ].
 
     implementorClass := selectedContext methodClass.
     implementorClass notNil ifTrue:[
-	method := implementorClass compiledMethodAt:selectedContext selector.
-	(method notNil and:[method isBreakpointed]) ifTrue:[
-	    method clearBreakPoint
-	]
+        method := implementorClass compiledMethodAt:selectedContext selector.
+        (method notNil and:[method isBreakpointed]) ifTrue:[
+            method clearBreakPoint
+        ]
     ].
     contextView middleButtonMenu disable:#removeBreakpoint.
     contextView middleButtonMenu enable:#addBreakpoint.
@@ -4642,11 +4671,11 @@
     |con mthd|
 
     contextView selection notNil ifTrue:[
-	(contextView selectionValue startsWith:'**') ifFalse:[
-	    con := contextArray at:(contextView selection).
-	    mthd := con methodHome method.
-	    ^ mthd notNil and:[mthd isWrapped]
-	]
+        (contextView selectionValue startsWith:'**') ifFalse:[
+            con := contextArray at:(contextView selection).
+            mthd := con methodHome method.
+            ^ mthd notNil and:[mthd isWrapped]
+        ]
     ].
     ^ false.
 !
@@ -4668,8 +4697,8 @@
     "double the number of contexts shown"
 
     contextArray notNil ifTrue:[
-	nChainShown := nChainShown * 2.
-	self redisplayBacktrace.
+        nChainShown := nChainShown * 2.
+        self redisplayBacktrace.
     ]
 
     "Modified: / 17.11.2001 / 20:14:31 / cg"
@@ -4732,8 +4761,8 @@
     |selector|
 
     selector := Dialog
-		request:'Skip until entering what (matchpattern):'
-		initialAnswer:self goodSkipUntilSelector.
+                request:'Skip until entering what (matchpattern):'
+                initialAnswer:self goodSkipUntilSelector.
     selector size == 0 ifTrue:[^ self].
 
     stepUntilEntering := selector asSymbol.
@@ -4749,9 +4778,9 @@
 
 toggleVerboseWalkback
     verboseBacktrace ifFalse:[
-	self showVerboseWalkback
+        self showVerboseWalkback
     ] ifTrue:[
-	self showDenseWalkback
+        self showDenseWalkback
     ].
 
     "Modified: / 17.11.2001 / 20:07:45 / cg"
@@ -4835,9 +4864,9 @@
     |s|
 
     aContext selector == #doIt ifTrue:[
-	aContext receiver isNil ifTrue:[
-	    ^ 'doIt' allBold
-	]
+        aContext receiver isNil ifTrue:[
+            ^ 'doIt' allBold
+        ]
     ].
 
     s := Text new writeStream.
@@ -4856,17 +4885,17 @@
 
     interval := self selectedInterval.
     interval isEmpty ifTrue:[
-	crsrPos := codeView characterPositionOfCursor.
-	codeView characterUnderCursor isSeparator ifTrue:[
-	    crsrPos := (crsrPos - 1) max:1
-	].
-	interval := crsrPos to:crsrPos.
+        crsrPos := codeView characterPositionOfCursor.
+        codeView characterUnderCursor isSeparator ifTrue:[
+            crsrPos := (crsrPos - 1) max:1
+        ].
+        interval := crsrPos to:crsrPos.
     ].
     self
-	withNodeValueAtInterval:interval
-	do:[:value :description |
-	    self showValue:value
-	].
+        withNodeValueAtInterval:interval
+        do:[:value :description |
+            self showValue:value
+        ].
 !
 
 findNodeForInterval:interval
@@ -4892,14 +4921,14 @@
 self obsoleteMethodWarning.
     node := nil.
     tree nodesDo:[:each |
-	(each intersectsInterval:interval) ifTrue:[
-	    (node isNil or:[node == each parent]) ifTrue:[
-		node := each
-	    ] ifFalse:[
-		(node parent notNil
-		    and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
-	    ]
-	]
+        (each intersectsInterval:interval) ifTrue:[
+            (node isNil or:[node == each parent]) ifTrue:[
+                node := each
+            ] ifFalse:[
+                (node parent notNil
+                    and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
+            ]
+        ]
     ].
     ^ node
 !
@@ -4912,7 +4941,7 @@
     current := selectedContext selector.
     current isNil ifTrue:[^ nil].
     ('change:*' match:current) ifTrue:[
-	^ 'update:*'
+        ^ 'update:*'
     ].
     ^ nil
 !
@@ -4937,8 +4966,8 @@
     "let inspected process do something, then update the context list"
 
     inspectedProcess isDead ifTrue:[
-	self showTerminated.
-	^ self
+        self showTerminated.
+        ^ self
     ].
     inspectedProcess interruptWith:aBlock.
     "
@@ -4962,8 +4991,8 @@
     "do something, then update the context list"
 
     inspectedProcess isDead ifTrue:[
-	self showTerminated.
-	^ self
+        self showTerminated.
+        ^ self
     ].
     inspectedProcess perform:aMessage.
 
@@ -4981,30 +5010,30 @@
     |oldSelection oldContext con idx|
 
     contextArray notNil ifTrue:[
-	self withExecuteCursorDo:[
-	    oldSelection := contextView selection.
-	    oldSelection notNil ifTrue:[
-		oldContext := contextArray at:oldSelection ifAbsent:nil.
-	    ].
-
-	    con := firstContext.
+        self withExecuteCursorDo:[
+            oldSelection := contextView selection.
+            oldSelection notNil ifTrue:[
+                oldContext := contextArray at:oldSelection ifAbsent:nil.
+            ].
+
+            con := firstContext.
 "/            con := contextArray at:1.
-	    "/ force redeisplay, even if same by changing the first entry
-	    contextArray size > 0 ifTrue:[
-		contextArray at:1 put:nil.
-	    ].
-	    self setContext:con.
-
-	    oldContext isNil ifTrue:[
-		idx := oldSelection
-	    ] ifFalse:[
-		idx := contextArray identityIndexOf:oldContext ifAbsent:nil.
-	    ].
-	    contextView setSelection:idx.
-	    idx notNil ifTrue:[
-		self showSelection:idx
-	    ]
-	]
+            "/ force redeisplay, even if same by changing the first entry
+            contextArray size > 0 ifTrue:[
+                contextArray at:1 put:nil.
+            ].
+            self setContext:con.
+
+            oldContext isNil ifTrue:[
+                idx := oldSelection
+            ] ifFalse:[
+                idx := contextArray identityIndexOf:oldContext ifAbsent:nil.
+            ].
+            contextView setSelection:idx.
+            idx notNil ifTrue:[
+                self showSelection:idx
+            ]
+        ]
     ]
 
     "Created: / 10.1.1997 / 21:36:46 / cg"
@@ -5018,16 +5047,16 @@
 showError:message
     codeView contents:(resources string:message).
     shown ifTrue:[
-	exclusive ifTrue:[
-	    "/ consider this a kludge:
-	    "/ if exclusive, cannot use flash, since it suspends
-	    "/ (but we cannot suspend here ...)
-	    codeView redrawInverted. device flush.
-	    OperatingSystem millisecondDelay:200.
-	    codeView redraw
-	] ifFalse:[
-	    codeView flash
-	]
+        exclusive ifTrue:[
+            "/ consider this a kludge:
+            "/ if exclusive, cannot use flash, since it suspends
+            "/ (but we cannot suspend here ...)
+            codeView redrawInverted. device flush.
+            OperatingSystem millisecondDelay:200.
+            codeView redraw
+        ] ifFalse:[
+            codeView flash
+        ]
     ]
 
     "Modified: / 18.11.2001 / 00:01:13 / cg"
@@ -5060,30 +5089,30 @@
 
     m := contextView middleButtonMenu.
     m notNil ifTrue:[
-	self updateMenuItems.
-
-	(inspecting or:[AbortOperationRequest isHandledIn:aContext]) ifTrue:[
-	    abortButton enable.
-	    m enable:#doAbort.
-	] ifFalse:[
-	    abortButton disable.
-	    m disable:#doAbort.
-	].
-	exclusive ifTrue:[
-	    terminateButton disable.
-	    m disable:#doTerminate.
-	] ifFalse:[
-	    terminateButton enable.
-	    m enable:#doTerminate.
-	].
+        self updateMenuItems.
+
+        (inspecting or:[AbortOperationRequest isHandledIn:aContext]) ifTrue:[
+            abortButton enable.
+            m enable:#doAbort.
+        ] ifFalse:[
+            abortButton disable.
+            m disable:#doAbort.
+        ].
+        exclusive ifTrue:[
+            terminateButton disable.
+            m disable:#doTerminate.
+        ] ifFalse:[
+            terminateButton enable.
+            m enable:#doTerminate.
+        ].
     ].
 
     mayProceed == false ifTrue:[
-	continueButton disable.
-	m notNil ifTrue:[m disable:#doContinue].
+        continueButton disable.
+        m notNil ifTrue:[m disable:#doContinue].
     ] ifFalse:[
-	continueButton enable.
-	m notNil ifTrue:[m enable:#doContinue]
+        continueButton enable.
+        m notNil ifTrue:[m enable:#doContinue]
     ].
 
     "Created: / 06-07-2011 / 12:24:53 / cg"
@@ -5093,24 +5122,24 @@
     |oldContext idx|
 
     inspectedProcess state == #dead ifTrue:[
-	self showTerminated.
-	^ self
+        self showTerminated.
+        ^ self
     ].
 
     oldContext := selectedContext.
     [
-	(self setContextSkippingInterruptContexts:inspectedProcess suspendedContext) ifTrue:[
-	    oldContext notNil ifTrue:[
-		contextArray notNil ifTrue:[
-		    idx := contextArray identityIndexOf:oldContext.
-		    idx ~~ 0 ifTrue:[
-			self showSelection:idx
-		    ] ifFalse:[
-			codeView contents:('** context returned **')
-		    ]
-		]
-	    ]
-	].
+        (self setContextSkippingInterruptContexts:inspectedProcess suspendedContext) ifTrue:[
+            oldContext notNil ifTrue:[
+                contextArray notNil ifTrue:[
+                    idx := contextArray identityIndexOf:oldContext.
+                    idx ~~ 0 ifTrue:[
+                        self showSelection:idx
+                    ] ifFalse:[
+                        codeView contents:('** context returned **')
+                    ]
+                ]
+            ]
+        ].
     ] valueUninterruptably.
 
     "Modified: 20.10.1996 / 18:11:24 / cg"
@@ -5124,43 +5153,43 @@
     "
     m := contextView middleButtonMenu.
     m notNil ifTrue:[
-	m disable:#removeBreakpoint.
-	m disable:#addBreakpoint.
-	canShowMore ifFalse:[
-	    m disable:#showMore
-	].
-
-	selectedContext notNil ifTrue:[
-	    m enableAll:#(browseImplementors browseSenders inspectContext skip skipForReturn).
-
-	    mthd := selectedContext method.
-	    mthd notNil ifTrue:[
-		cls := mCls := mthd containingClass.
-		mthd isBreakpointed ifTrue:[
-		    m enable:#removeBreakpoint.
-		] ifFalse:[
-		    m enable:#addBreakpoint.
-		]
-	    ].
-	    rCls := selectedContext receiver class.
-	    cls isNil ifTrue:[
-		cls := rCls
-	    ].
-	    cls notNil ifTrue:[
-		m enableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
-		rCls == mCls ifTrue:[
-		    m disable:#browseReceiversClass
-		].
-		mCls isNil ifTrue:[
-		    m disable:#browseImplementingClass
-		]
-
-	    ] ifFalse:[
-		m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
-	    ].
-	] ifFalse:[
-	    m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
-	]
+        m disable:#removeBreakpoint.
+        m disable:#addBreakpoint.
+        canShowMore ifFalse:[
+            m disable:#showMore
+        ].
+
+        selectedContext notNil ifTrue:[
+            m enableAll:#(browseImplementors browseSenders inspectContext skip skipForReturn).
+
+            mthd := selectedContext method.
+            mthd notNil ifTrue:[
+                cls := mCls := mthd containingClass.
+                mthd isBreakpointed ifTrue:[
+                    m enable:#removeBreakpoint.
+                ] ifFalse:[
+                    m enable:#addBreakpoint.
+                ]
+            ].
+            rCls := selectedContext receiver class.
+            cls isNil ifTrue:[
+                cls := rCls
+            ].
+            cls notNil ifTrue:[
+                m enableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
+                rCls == mCls ifTrue:[
+                    m disable:#browseReceiversClass
+                ].
+                mCls isNil ifTrue:[
+                    m disable:#browseImplementingClass
+                ]
+
+            ] ifFalse:[
+                m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
+            ].
+        ] ifFalse:[
+            m disableAll:#(browseImplementingClass browseReceiversClass browseClassHierarchy browseFullClassProtocol).
+        ]
     ]
 !
 
@@ -5169,17 +5198,17 @@
 
 "/interval printCR.
     Error
-	handle:[:ex | ]
-	do:[
-	    [
-		node := self findNodeForInterval:interval
-	    ] valueWithWatchDog:[ ^ self ] afterMilliseconds:50.
-	].
+        handle:[:ex | ]
+        do:[
+            [
+                node := self findNodeForInterval:interval
+            ] valueWithWatchDog:[ ^ self ] afterMilliseconds:50.
+        ].
 
     node isNil ifTrue:[ ^ self ].
     node isVariable ifFalse:[
-	"/ Transcript showCR:node.
-	^ self
+        "/ Transcript showCR:node.
+        ^ self
     ].
 
     nm := node name.
@@ -5189,152 +5218,152 @@
     receiver := actualContext methodHome receiver.
 
     (nm = 'self') ifTrue:[
-	aBlock value:receiver value:'receiver' allBold.
-	^ self
+        aBlock value:receiver value:'receiver' allBold.
+        ^ self
     ].
     (nm = 'super') ifTrue:[
-	aBlock value:receiver value:'receiver' allBold.
-	^ self
+        aBlock value:receiver value:'receiver' allBold.
+        ^ self
     ].
     (nm = 'thisContext') ifTrue:[
-	aBlock value:actualContext value:'context' allBold.
-	^ self
+        aBlock value:actualContext value:'context' allBold.
+        ^ self
     ].
 
     definingNode := node whoDefines:nm.
     definingNode isNil ifTrue:[
-	(receiver class allInstVarNames includes:nm) ifTrue:[
+        (receiver class allInstVarNames includes:nm) ifTrue:[
 "/aBlock value:'xIII' value:'instVar'.
-	    receiver class isMetaclass ifTrue:[
-		aBlock value:(receiver instVarNamed:nm) value:'classInstVar ',nmBold.
-	    ] ifFalse:[
-		aBlock value:(receiver instVarNamed:nm) value:'instVar ',nmBold.
-	    ].
-	    ^ self
-	].
-
-	receiversNonMetaClass := receiver class theNonMetaclass.
-	(receiversNonMetaClass privateClasses contains:[:cls | cls nameWithoutPrefix = nm]) ifTrue:[
-	    aBlock value:'' value:'private class ',nmBold.
-	    ^ self
-	].
-	(receiversNonMetaClass classVarNames includes:nm) ifTrue:[
-	    aBlock value:((currentMethod mclass ? receiversNonMetaClass) theNonMetaclass classVarAt:nm) value:'classVar ',nmBold.
-	    ^ self
-	].
-	receiversNonMetaClass sharedPoolNames do:[:eachPoolName |
-	    |pool|
-
-	    pool := Smalltalk at:eachPoolName.
-	    pool isNil ifTrue:[ pool := receiversNonMetaClass topNameSpace at:eachPoolName].
-	    (pool classVarNames includes:nm) ifTrue:[
-		aBlock value:(pool classVarAt:nm) value:'poolVar ',nm allBold,' in ',eachPoolName allBold,' '.
-		^ self
-	    ].
-	].
-	(Smalltalk includesKey:nm asSymbol) ifTrue:[
-	    (Smalltalk at:nm asSymbol) isClass ifTrue:[
-		aBlock value:'class: ',nmBold value:nil.
-	    ] ifFalse:[
-		aBlock value:(Smalltalk at:nm asSymbol) value:'global ',nmBold.
-	    ].
-	    ^ self
-	].
-	aBlock value:'' value:'unknown'.
-	^ self
+            receiver class isMetaclass ifTrue:[
+                aBlock value:(receiver instVarNamed:nm) value:'classInstVar ',nmBold.
+            ] ifFalse:[
+                aBlock value:(receiver instVarNamed:nm) value:'instVar ',nmBold.
+            ].
+            ^ self
+        ].
+
+        receiversNonMetaClass := receiver class theNonMetaclass.
+        (receiversNonMetaClass privateClasses contains:[:cls | cls nameWithoutPrefix = nm]) ifTrue:[
+            aBlock value:'' value:'private class ',nmBold.
+            ^ self
+        ].
+        (receiversNonMetaClass classVarNames includes:nm) ifTrue:[
+            aBlock value:((currentMethod mclass ? receiversNonMetaClass) theNonMetaclass classVarAt:nm) value:'classVar ',nmBold.
+            ^ self
+        ].
+        receiversNonMetaClass sharedPoolNames do:[:eachPoolName |
+            |pool|
+
+            pool := Smalltalk at:eachPoolName.
+            pool isNil ifTrue:[ pool := receiversNonMetaClass topNameSpace at:eachPoolName].
+            (pool classVarNames includes:nm) ifTrue:[
+                aBlock value:(pool classVarAt:nm) value:'poolVar ',nm allBold,' in ',eachPoolName allBold,' '.
+                ^ self
+            ].
+        ].
+        (Smalltalk includesKey:nm asSymbol) ifTrue:[
+            (Smalltalk at:nm asSymbol) isClass ifTrue:[
+                aBlock value:'class: ',nmBold value:nil.
+            ] ifFalse:[
+                aBlock value:(Smalltalk at:nm asSymbol) value:'global ',nmBold.
+            ].
+            ^ self
+        ].
+        aBlock value:'' value:'unknown'.
+        ^ self
     ].
 "/definingNode printCR.
 
     definingNode isMethod ifTrue:[
-	varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
-	varIdx ~~ 0 ifTrue:[
-	    Error
-		handle:[:ex | ]
-		do:[ aBlock value:(actualContext methodHome argAt:varIdx) value:'methodArg ',nmBold ].
-	    ^ self
-	].
-	varIdx := definingNode temporaries findFirst:[:var | var name = nm].
-	varIdx ~~ 0 ifTrue:[
-	    actualContext methodHome numVars >= varIdx ifTrue:[
-		Error
-		    handle:[:ex | ]
-		    do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
-		^ self
-	    ]
-	].
+        varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
+        varIdx ~~ 0 ifTrue:[
+            Error
+                handle:[:ex | ]
+                do:[ aBlock value:(actualContext methodHome argAt:varIdx) value:'methodArg ',nmBold ].
+            ^ self
+        ].
+        varIdx := definingNode temporaries findFirst:[:var | var name = nm].
+        varIdx ~~ 0 ifTrue:[
+            actualContext methodHome numVars >= varIdx ifTrue:[
+                Error
+                    handle:[:ex | ]
+                    do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
+                ^ self
+            ]
+        ].
     ].
 
     definingNode isBlock ifTrue:[
-	varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
-	(definingNode arguments contains:[:arg | arg name = nm]) ifTrue:[
-	    varIdx ~~ 0 ifTrue:[
-		"/ am I in this block ?
-		(actualContext lineNumber notNil
-		and:[ definingNode lastLineNumber notNil
-		and:[ (actualContext lineNumber
-			    between:definingNode firstLineNumber
-			    and:definingNode lastLineNumber)
-		and:[ varIdx <= actualContext numArgs ] ]])
-		ifTrue:[
-		    aBlock value:(actualContext argAt:varIdx) value:'blockArg ',nmBold .
-		    ^ self
-		].
+        varIdx := definingNode arguments findFirst:[:arg | arg name = nm].
+        (definingNode arguments contains:[:arg | arg name = nm]) ifTrue:[
+            varIdx ~~ 0 ifTrue:[
+                "/ am I in this block ?
+                (actualContext lineNumber notNil
+                and:[ definingNode lastLineNumber notNil
+                and:[ (actualContext lineNumber
+                            between:definingNode firstLineNumber
+                            and:definingNode lastLineNumber)
+                and:[ varIdx <= actualContext numArgs ] ]])
+                ifTrue:[
+                    aBlock value:(actualContext argAt:varIdx) value:'blockArg ',nmBold .
+                    ^ self
+                ].
 aBlock value:nmBold , ' is not in scope of selected context' value:nil.
-		^ self
-	    ]
-	].
+                ^ self
+            ]
+        ].
     ].
 
     parentNode := definingNode parent.
 
     [parentNode notNil] whileTrue:[
 "/'isMethod ' print. parentNode isMethod printCR.
-	parentNode isMethod ifTrue:[
-	    varIdx := parentNode temporaries findFirst:[:var | var name = nm].
-	    varIdx ~~ 0 ifTrue:[
-		actualContext methodHome numVars >= varIdx ifTrue:[
-		    Error
-			handle:[:ex | ]
-			do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
-		    ^ self
-		]
-	    ].
-	].
+        parentNode isMethod ifTrue:[
+            varIdx := parentNode temporaries findFirst:[:var | var name = nm].
+            varIdx ~~ 0 ifTrue:[
+                actualContext methodHome numVars >= varIdx ifTrue:[
+                    Error
+                        handle:[:ex | ]
+                        do:[ aBlock value:(actualContext methodHome varAt:varIdx) value:'methodVar ',nmBold ].
+                    ^ self
+                ]
+            ].
+        ].
 "/'isBlock ' print. parentNode isBlock printCR.
-	parentNode isBlock ifTrue:[
-	    "/ we dont have any information on the inlineability
-	    "/ of this block here (RBParser does not know what
-	    "/ the compiler does.
-	    "/ therefore, it is questionable if we can use the
-	    "/ contexts home context here.
-	    "/ am I in this block ?
-	    con := actualContext.
-	    [con notNil
-	    and:[ parentNode lastLineNumber notNil
-	    and:[ con lineNumber notNil
-	    and:[ con lineNumber
-		    between:parentNode firstLineNumber
-		    and:parentNode lastLineNumber ]]]] whileTrue:[
-		con := con sender.
-	    ].
-	    con notNil ifTrue:[
-		varIdx := parentNode arguments findFirst:[:arg | arg name = nm].
-		varIdx ~~ 0 ifTrue:[
-		    Error
-			handle:[:ex | ]
-			do:[ aBlock value:(con argAt:varIdx) value:'blockArg ',nmBold ].
-		    ^ self
-		].
-		varIdx := parentNode body temporaries findFirst:[:var | var name = nm].
-		varIdx ~~ 0 ifTrue:[
-		    Error
-			handle:[:ex | ]
-			do:[ aBlock value:(con varAt:varIdx) value:'blockVar ',nmBold ].
-		    ^ self
-		].
-	    ].
-	].
-	parentNode := parentNode parent.
+        parentNode isBlock ifTrue:[
+            "/ we dont have any information on the inlineability
+            "/ of this block here (RBParser does not know what
+            "/ the compiler does.
+            "/ therefore, it is questionable if we can use the
+            "/ contexts home context here.
+            "/ am I in this block ?
+            con := actualContext.
+            [con notNil
+            and:[ parentNode lastLineNumber notNil
+            and:[ con lineNumber notNil
+            and:[ con lineNumber
+                    between:parentNode firstLineNumber
+                    and:parentNode lastLineNumber ]]]] whileTrue:[
+                con := con sender.
+            ].
+            con notNil ifTrue:[
+                varIdx := parentNode arguments findFirst:[:arg | arg name = nm].
+                varIdx ~~ 0 ifTrue:[
+                    Error
+                        handle:[:ex | ]
+                        do:[ aBlock value:(con argAt:varIdx) value:'blockArg ',nmBold ].
+                    ^ self
+                ].
+                varIdx := parentNode body temporaries findFirst:[:var | var name = nm].
+                varIdx ~~ 0 ifTrue:[
+                    Error
+                        handle:[:ex | ]
+                        do:[ aBlock value:(con varAt:varIdx) value:'blockVar ',nmBold ].
+                    ^ self
+                ].
+            ].
+        ].
+        parentNode := parentNode parent.
     ].
     aBlock value:nmBold , ' is not in scope of selected context' value:nil.
 
@@ -5357,7 +5386,7 @@
 
 !DebugView methodsFor:'private-breakpoints'!
 
-addIgnoredHaltForCount:countOrNil orTimeDuration:dTOrNil forAll:aBoolean
+addIgnoredHaltForCount:countOrNil orTimeDuration:dTOrNil orUntilShiftKey:untilShiftKey forAll:aBoolean
     |haltingContext haltingMethod lineNrOfHalt|
 
     aBoolean ifTrue:[
@@ -5375,9 +5404,9 @@
 
     self class
         ignoreHaltIn:haltingMethod at:lineNrOfHalt
-        forCount:countOrNil orTimeDuration:dTOrNil
-
-    "Created: / 08-05-2011 / 10:20:31 / cg"
+        forCount:countOrNil orTimeDuration:dTOrNil orUntilShiftKey:untilShiftKey
+
+    "Created: / 27-01-2012 / 11:31:12 / cg"
 !
 
 canAddBreakpoint
@@ -5447,7 +5476,7 @@
      Otherwise, the GC will not be able to release it."
 
     windowGroup notNil ifTrue:[
-	windowGroup setProcess:nil.
+        windowGroup setProcess:nil.
     ].
 
     self releaseDebuggee.
@@ -5458,15 +5487,15 @@
     "/ only cache if I am on the Display
     "/
     device == Display ifTrue:[
-	exclusive ifTrue:[
-	    CachedExclusive := self
-	] ifFalse:[
-	    CachedDebugger := self
-	].
+        exclusive ifTrue:[
+            CachedExclusive := self
+        ] ifFalse:[
+            CachedDebugger := self
+        ].
     ].
 
     ObjectMemory stepInterruptHandler == self ifTrue:[
-	ObjectMemory stepInterruptHandler:nil
+        ObjectMemory stepInterruptHandler:nil
     ].
 
     "Modified: 10.7.1997 / 15:50:46 / stefan"
@@ -5477,10 +5506,10 @@
     "tell wether we are a cached debugger"
 
     CachedExclusive == self ifTrue:[
-	^ true.
+        ^ true.
     ].
     CachedDebugger == self ifTrue:[
-	^ true.
+        ^ true.
     ].
 
     ^ false.
@@ -5520,13 +5549,13 @@
     cachable := false.
 
     CachedExclusive == self ifTrue:[
-	CachedExclusive := nil.
+        CachedExclusive := nil.
     ].
     CachedDebugger == self ifTrue:[
-	CachedDebugger := nil.
+        CachedDebugger := nil.
     ].
     OpenDebuggers notNil ifTrue:[
-	OpenDebuggers remove:self ifAbsent:[].
+        OpenDebuggers remove:self ifAbsent:[].
     ].
 
     "Modified: 31.7.1997 / 21:20:11 / cg"
@@ -5805,12 +5834,12 @@
 
     con := aContext.
     verboseBacktrace ifFalse:[
-	(con notNil and:[con selector == #threadSwitch:]) ifTrue:[
-	    con := con sender.
-	    (con notNil and:[con selector == #timerInterrupt]) ifTrue:[
-		con := con sender.
-	    ].
-	].
+        (con notNil and:[con selector == #threadSwitch:]) ifTrue:[
+            con := con sender.
+            (con notNil and:[con selector == #timerInterrupt]) ifTrue:[
+                con := con sender.
+            ].
+        ].
     ].
     ^ self setContext:con releaseInspectors:true
 
@@ -5836,48 +5865,48 @@
     "/ to avoid firing/waiting the lazy or future
     recIsException := (rec isLazyValue not) and:[rec isException].
     aContext sender notNil ifTrue:[
-	senderRec := aContext sender receiver
+        senderRec := aContext sender receiver
     ].
 
     DebuggingDebugger == true ifTrue:[
-	'showingContext1: (' print. aContext print.
-	') calling: (' print. calledContext print.
-	')' printCR.
+        'showingContext1: (' print. aContext print.
+        ') calling: (' print. calledContext print.
+        ')' printCR.
     ].
 
     (#(doCallHandler: doRaise
     ) includes:sel)
-	ifTrue:[
-	    recIsException ifTrue:[ ^ false].
-	].
+        ifTrue:[
+            recIsException ifTrue:[ ^ false].
+        ].
 
     (#(raise raiseRequest
     ) includes:sel)
-	ifTrue:[
-	    recIsException ifTrue:[
-		(senderRec isLazyValue not
-		and:[ senderRec isExceptionCreator]) ifTrue:[^ false].
-	    ].
-	].
+        ifTrue:[
+            recIsException ifTrue:[
+                (senderRec isLazyValue not
+                and:[ senderRec isExceptionCreator]) ifTrue:[^ false].
+            ].
+        ].
 
     (#(doWhile:
     ) includes:sel)
-	ifTrue:[
-	    rec isBlock ifTrue:[
-		true "aContext sender isBlockContext" ifTrue:[^ false].
-	    ].
-	].
+        ifTrue:[
+            rec isBlock ifTrue:[
+                true "aContext sender isBlockContext" ifTrue:[^ false].
+            ].
+        ].
 
     calledContext notNil ifTrue:[
-	calledSel := calledContext selector.
-	calledRec := calledContext receiver.
-
-	calledRec isBlock ifTrue:[
-	    (calledSel == #ensure:) ifTrue:[^ false].
-	    (calledSel == #ifCurtailed:) ifTrue:[^ false].
-	].
-	(calledSel == #handle:do:) ifTrue:[^ false].
-	(calledSel == #answer:do:) ifTrue:[^ false].
+        calledSel := calledContext selector.
+        calledRec := calledContext receiver.
+
+        calledRec isBlock ifTrue:[
+            (calledSel == #ensure:) ifTrue:[^ false].
+            (calledSel == #ifCurtailed:) ifTrue:[^ false].
+        ].
+        (calledSel == #handle:do:) ifTrue:[^ false].
+        (calledSel == #answer:do:) ifTrue:[^ false].
 
 "/        calledRec isLazyValue ifFalse:[
 "/            ((calledSel == #doWhile:)
@@ -5896,28 +5925,28 @@
     ].
 
     (#(handleDo:) includes:sel)
-	ifTrue:[
-	    (calledRec isLazyValue not and:[calledRec isExceptionHandler]) ifTrue:[^ false].
-	].
+        ifTrue:[
+            (calledRec isLazyValue not and:[calledRec isExceptionHandler]) ifTrue:[^ false].
+        ].
     (#(
-	withCursor:do:
-	withWaitCursorDo:
+        withCursor:do:
+        withWaitCursorDo:
       ) includes:sel)
-	ifTrue:[
-	    (mthdClass == TopView) ifTrue:[^ false].
-	    (mthdClass == ApplicationModel) ifTrue:[^ false].
-	    (mthdClass == WindowGroup) ifTrue:[^ false].
-	].
+        ifTrue:[
+            (mthdClass == TopView) ifTrue:[^ false].
+            (mthdClass == ApplicationModel) ifTrue:[^ false].
+            (mthdClass == WindowGroup) ifTrue:[^ false].
+        ].
 
     (#(
-	wait
-	waitWithTimeout:
-	waitWithTimeoutMs:
+        wait
+        waitWithTimeout:
+        waitWithTimeoutMs:
       ) includes:sel)
-	ifTrue:[
-	    (mthdClass == Semaphore) ifTrue:[^ false].
-	    (mthdClass == SemaphoreSet) ifTrue:[^ false].
-	].
+        ifTrue:[
+            (mthdClass == Semaphore) ifTrue:[^ false].
+            (mthdClass == SemaphoreSet) ifTrue:[^ false].
+        ].
 
     ^ true
 
@@ -5943,29 +5972,29 @@
 
     sender := aContext sender.
     sender notNil ifTrue:[
-	senderSelector := sender selector.
-	senderReceiver := sender receiver.
-	senderReceiverClass := senderReceiver class.
+        senderSelector := sender selector.
+        senderReceiver := sender receiver.
+        senderReceiverClass := senderReceiver class.
     ].
 
     sel == #withCursor:do: ifTrue:[
-	(mClass == WindowGroup) ifTrue:[^ false].
-	(mClass == TopView) ifTrue:[^ false].
+        (mClass == WindowGroup) ifTrue:[^ false].
+        (mClass == TopView) ifTrue:[^ false].
     ].
     (sel == #withExecuteCursorDo:
     or:[sel == #withWaitCursorDo:]) ifTrue:[
-	(mClass == DisplaySurface) ifTrue:[^ false].
+        (mClass == DisplaySurface) ifTrue:[^ false].
     ].
 
     (sel == #do:
     or:[sel == #from:to:do:
     or:[sel == #keysAndValuesDo:
     or:[sel == #doWithIndex:]]]) ifTrue:[
-	mClass == Array ifTrue:[^ false].
-	mClass == OrderedCollection ifTrue:[^ false].
-	mClass == Set ifTrue:[^ false].
-	mClass == Dictionary ifTrue:[^ false].
-	mClass == Interval ifTrue:[^ false].
+        mClass == Array ifTrue:[^ false].
+        mClass == OrderedCollection ifTrue:[^ false].
+        mClass == Set ifTrue:[^ false].
+        mClass == Dictionary ifTrue:[^ false].
+        mClass == Interval ifTrue:[^ false].
     ].
     (sel == #perform:
     or:[sel == #perform:with:
@@ -5973,40 +6002,40 @@
     or:[sel == #perform:with:with:with:
     or:[sel == #perform:with:with:with:with:]]]])
     ifTrue:[
-	nesting == 0 ifTrue:[^ true].
-	mClass == Array ifTrue:[^ false].
-	mClass == OrderedCollection ifTrue:[^ false].
+        nesting == 0 ifTrue:[^ true].
+        mClass == Array ifTrue:[^ false].
+        mClass == OrderedCollection ifTrue:[^ false].
     ].
 
     sel == #valueWithReceiver:arguments:selector:search:sender: ifTrue:[^ false].
 
     (mClass == Object) ifTrue:[
-	(sel startsWith:'perform:') ifTrue:[^ false]
+        (sel startsWith:'perform:') ifTrue:[^ false]
     ].
 
     (mClass == Method) ifTrue:[
-	(sel startsWith:'valueWithReceiver:') ifTrue:[^ false]
+        (sel startsWith:'valueWithReceiver:') ifTrue:[^ false]
     ].
 
     (mClass == SmallInteger) ifTrue:[
-	(sel == #to:do:) ifTrue:[^ false].
-	(sel == #to:by:do:) ifTrue:[^ false].
+        (sel == #to:do:) ifTrue:[^ false].
+        (sel == #to:by:do:) ifTrue:[^ false].
     ].
 
     (mClass == Block) ifTrue:[
-	sel == #ensure: ifTrue:[^ false].
-	sel == #ifCurtailed: ifTrue:[^ false].
-	sel == #valueNowOrOnUnwindDo: ifTrue:[^ false].
-	sel == #valueOnUnwindDo: ifTrue:[^ false].
-	sel == #on:do: ifTrue:[^ false].
-
-	sel == #value ifTrue:[^ false].
-	sel == #value: ifTrue:[^ false].
-	sel == #value:value: ifTrue:[^ false].
-	sel == #value:value:value: ifTrue:[^ false].
-	sel == #value:value:value:value: ifTrue:[^ false].
-	sel == #value:value:value:value:Value: ifTrue:[^ false].
-	sel == #value:value:value:value:value:value: ifTrue:[^ false].
+        sel == #ensure: ifTrue:[^ false].
+        sel == #ifCurtailed: ifTrue:[^ false].
+        sel == #valueNowOrOnUnwindDo: ifTrue:[^ false].
+        sel == #valueOnUnwindDo: ifTrue:[^ false].
+        sel == #on:do: ifTrue:[^ false].
+
+        sel == #value ifTrue:[^ false].
+        sel == #value: ifTrue:[^ false].
+        sel == #value:value: ifTrue:[^ false].
+        sel == #value:value:value: ifTrue:[^ false].
+        sel == #value:value:value:value: ifTrue:[^ false].
+        sel == #value:value:value:value:Value: ifTrue:[^ false].
+        sel == #value:value:value:value:value:value: ifTrue:[^ false].
     ].
 
     aContext isBlockContext ifTrue:[
@@ -6024,40 +6053,40 @@
 "/            ]
 "/        ]
 
-	aContext home notNil ifTrue:[
-	    aContext home receiver isLazyValue ifFalse:[
-		(aContext home receiver isMemberOf:Semaphore) ifTrue:[
-		    (aContext home selector == #wait) ifTrue:[^ false].
-		    (aContext home selector == #waitWithTimeoutMs:) ifTrue:[^ false].
-		]
-	    ]
-	]
+        aContext home notNil ifTrue:[
+            aContext home receiver isLazyValue ifFalse:[
+                (aContext home receiver isMemberOf:Semaphore) ifTrue:[
+                    (aContext home selector == #wait) ifTrue:[^ false].
+                    (aContext home selector == #waitWithTimeoutMs:) ifTrue:[^ false].
+                ]
+            ]
+        ]
     ].
 
     (rec isExceptionHandler) ifTrue:[
-	sel == #handle:do: ifTrue:[^ false].
-	sel == #handleDo: ifTrue:[^ false].
-	(sel startsWith:#raise) ifTrue:[^ false].
-	sel == #answer:do: ifTrue:[^ false].
+        sel == #handle:do: ifTrue:[^ false].
+        sel == #handleDo: ifTrue:[^ false].
+        (sel startsWith:#raise) ifTrue:[^ false].
+        sel == #answer:do: ifTrue:[^ false].
     ].
     (rec isLazyValue not and:[ rec isException] ) ifTrue:[
-	sel == #doRaise ifTrue:[^ false].
-	sel == #doCallHandler: ifTrue:[^ false].
-	(sel == #raise or:[sel == #raiseRequest]) ifTrue:[
-	    senderReceiverClass == Signal ifTrue:[^ false].
-	]
+        sel == #doRaise ifTrue:[^ false].
+        sel == #doCallHandler: ifTrue:[^ false].
+        (sel == #raise or:[sel == #raiseRequest]) ifTrue:[
+            senderReceiverClass == Signal ifTrue:[^ false].
+        ]
     ].
     (mClass == Context) ifTrue:[
-	sel == #unwind ifTrue:[^ false].
-	sel == #unwind: ifTrue:[^ false].
+        sel == #unwind ifTrue:[^ false].
+        sel == #unwind: ifTrue:[^ false].
     ].
     (mClass == ProcessorScheduler) ifTrue:[
-	sel == #interruptActive ifTrue:[^ false].
-	sel == #threadSwitch: ifTrue:[^ false].
-	sel == #suspend: ifTrue:[^ false].
+        sel == #interruptActive ifTrue:[^ false].
+        sel == #threadSwitch: ifTrue:[^ false].
+        sel == #suspend: ifTrue:[^ false].
     ].
     mClass == Process ifTrue:[
-	sel == #suspendWithState: ifTrue:[^ false].
+        sel == #suspendWithState: ifTrue:[^ false].
     ].
     ^ true.
 
@@ -6069,18 +6098,18 @@
 
 controlLoop
     "this is a kludge:
-	start a dispatchloop which exits when
-	either continue, return or step is pressed
+        start a dispatchloop which exits when
+        either continue, return or step is pressed
     "
 
     haveControl := true.
     [
-	[haveControl] whileTrue:[
-	    self controlLoopCatchingErrors
-	].
+        [haveControl] whileTrue:[
+            self controlLoopCatchingErrors
+        ].
     ] ensure:[
-	catchBlock := nil.
-	haveControl := false
+        catchBlock := nil.
+        haveControl := false
     ].
 
     "Modified: 9.7.1996 / 18:29:09 / cg"
@@ -6094,21 +6123,21 @@
     catchBlock := [catchBlock := nil. ^ nil].
 
     (exclusive or:[windowGroup isNil]) ifTrue:[
-	"if we do not have multiple processes or its a system process
-	 we start another dispatch loop, which exits when
-	 either continue, return or step is pressed
-	 or (via the catchBlock) if an error occurs.
-	 Since our display is an extra exclusive one,
-	 all processing for normal views stops here ...
-	"
-
-	WindowGroup setActiveGroup:windowGroup.
-	SignalSet anySignal handle:[:ex |
-	    |signal|
-
-	    signal := ex signal.
-
-	    self showError:'*** Error in modal debugger:
+        "if we do not have multiple processes or its a system process
+         we start another dispatch loop, which exits when
+         either continue, return or step is pressed
+         or (via the catchBlock) if an error occurs.
+         Since our display is an extra exclusive one,
+         all processing for normal views stops here ...
+        "
+
+        WindowGroup setActiveGroup:windowGroup.
+        SignalSet anySignal handle:[:ex |
+            |signal|
+
+            signal := ex signal.
+
+            self showError:'*** Error in modal debugger:
 
 >>>> Signal:  ' , signal printString , '
 >>>> In:      ' , ex suspendedContext printString , '
@@ -6129,75 +6158,75 @@
 >>>> Message: ' , ex description , '
 
 caught & ignored.'.
-	    ex return.
-	] do:[
-	    UserNotification handle:[:ex |
-		(ex signal == ActivityNotificationSignal) ifTrue:[
-		    ex proceed
-		].
-		self showError:ex description.
-		ex proceed.
-	    ] do:[
-		device dispatchModalWhile:[Processor activeProcess state:#debug.
-					   haveControl].
-	    ]
-	].
-	WindowGroup setActiveGroup:nil.
+            ex return.
+        ] do:[
+            UserNotification handle:[:ex |
+                (ex signal == ActivityNotificationSignal) ifTrue:[
+                    ex proceed
+                ].
+                self showError:ex description.
+                ex proceed.
+            ] do:[
+                device dispatchModalWhile:[Processor activeProcess state:#debug.
+                                           haveControl].
+            ]
+        ].
+        WindowGroup setActiveGroup:nil.
     ] ifFalse:[
-	"we do have multiple processes -
-	 simply enter the DebugViews-Windowgroup event loop.
-	 effectively suspending event processing for the currently
-	 active group.
-	"
-	SignalSet anySignal handle:[:ex |
-	    |answer signal eMsg|
-
-	    signal := ex signal.
-
-	    DebuggingDebugger ~~ true ifTrue:[
-		(signal == ActivityNotification) ifTrue:[
-		    ex proceed
-		].
-		"/
-		"/ ignore exceptions which say they explicitly have to be ignored
-		"/
-		ex catchInDebugger ifTrue:[
-		    'DebugView [info]: ',signal printString,'-signal in debugger cought for close' infoPrintCR.
-		    self destroy.
-		    ex reject
-		].
-
-		"/
-		"/ ignore recursive breakpoints
-		"/
-		(signal isControlInterrupt) ifTrue:[
-		    ignoreBreakpoints == true ifTrue:[
-			'DebugView [info]: halt/break in debugger ignored 1' infoPrintCR.
-			('DebugView [info]: ',ex suspendedContext printString) infoPrintCR.
-			ex proceed
-		    ].
-		].
-		(signal == TerminateProcessRequest) ifTrue:[
-		    "/ mhm - someone wants to shoot me down while debugging ...
-		    answer := Dialog
-				choose:('Process termination signal arrived while debugging\\close debugger ?') withCRs
-				labels:#( 'Ignore' 'Close & terminate' )
-				values:#( #proceed #close )
-				default:#close.
-		    answer == #close ifTrue:[
-			self destroy.
-			ex reject
-		    ].
-		    ex return.
-		].
-		signal == RecursiveExceptionError ifTrue:[
-		    (ex parameter signal == BreakPointInterrupt)
-		    ifTrue:[
-			'DebugView [info]: recursive breakpoint in debugger ignored' infoPrintCR.
-			ex proceed.
-		    ].
-
-		    self showError:'*** Recursive error in debugger:
+        "we do have multiple processes -
+         simply enter the DebugViews-Windowgroup event loop.
+         effectively suspending event processing for the currently
+         active group.
+        "
+        SignalSet anySignal handle:[:ex |
+            |answer signal eMsg|
+
+            signal := ex signal.
+
+            DebuggingDebugger ~~ true ifTrue:[
+                (signal == ActivityNotification) ifTrue:[
+                    ex proceed
+                ].
+                "/
+                "/ ignore exceptions which say they explicitly have to be ignored
+                "/
+                ex catchInDebugger ifTrue:[
+                    'DebugView [info]: ',signal printString,'-signal in debugger cought for close' infoPrintCR.
+                    self destroy.
+                    ex reject
+                ].
+
+                "/
+                "/ ignore recursive breakpoints
+                "/
+                (signal isControlInterrupt) ifTrue:[
+                    ignoreBreakpoints == true ifTrue:[
+                        'DebugView [info]: halt/break in debugger ignored 1' infoPrintCR.
+                        ('DebugView [info]: ',ex suspendedContext printString) infoPrintCR.
+                        ex proceed
+                    ].
+                ].
+                (signal == TerminateProcessRequest) ifTrue:[
+                    "/ mhm - someone wants to shoot me down while debugging ...
+                    answer := Dialog
+                                choose:('Process termination signal arrived while debugging\\close debugger ?') withCRs
+                                labels:#( 'Ignore' 'Close & terminate' )
+                                values:#( #proceed #close )
+                                default:#close.
+                    answer == #close ifTrue:[
+                        self destroy.
+                        ex reject
+                    ].
+                    ex return.
+                ].
+                signal == RecursiveExceptionError ifTrue:[
+                    (ex parameter signal == BreakPointInterrupt)
+                    ifTrue:[
+                        'DebugView [info]: recursive breakpoint in debugger ignored' infoPrintCR.
+                        ex proceed.
+                    ].
+
+                    self showError:'*** Recursive error in debugger:
 
 >>>> Signal:  ' , ex signal printString , '
 >>>>          ' , ex parameter signal printString , '
@@ -6209,50 +6238,50 @@
 >>>> Message: ' , ex description , '
 
 caught & ignored.'.
-		    ex return
-		].
-	    ].
-
-	    self topView raiseDeiconified.
-
-	    eMsg := ex description.
-	    (ex signal isControlInterrupt) ifTrue:[
-		eMsg := eMsg , Character cr asString , 'in ' , ex suspendedContext printString
-	    ].
-	    Dialog aboutToOpenBoxNotificationSignal
-		handle:[:ex | ex proceed ]
-		do:[
-		    answer := Dialog
-			choose:('Error in debugger:\' withCRs , eMsg , '\\debug again ?' withCRs)
-			labels:#( 'Proceed' 'Cancel' 'Debug' )
-			values:#( #proceed #cancel #debug )
-			default:#cancel.
-		].
-	    answer == #debug ifTrue:[
-		'DebugView [info]: cought exception - debugging' infoPrintCR.
-		Debugger
-		    enterUnconditional:(ex suspendedContext)
-		    withMessage:'Error in debugger: ' , eMsg
-		    mayProceed:true.
-		ex proceed.
-	    ].
-	    answer == #proceed ifTrue:[
-		'DebugView [info]: ignored exception - proceeding' infoPrintCR.
-		ex proceed.
-	    ].
-	    'DebugView [info]: cought exception - returning' infoPrintCR.
-	    ex return.
-	] do:[
-	    "/ make certain that sub-debuggers, inspectors etc.
-	    "/ come up on my device.
-	    Screen currentScreenQuerySignal answer:device
-	    do:[
-		windowGroup
-		    eventLoopWhile:[Processor activeProcess state:#debug.
-				      true]
-		    onLeave:[]
-	    ]
-	].
+                    ex return
+                ].
+            ].
+
+            self topView raiseDeiconified.
+
+            eMsg := ex description.
+            (ex signal isControlInterrupt) ifTrue:[
+                eMsg := eMsg , Character cr asString , 'in ' , ex suspendedContext printString
+            ].
+            Dialog aboutToOpenBoxNotificationSignal
+                handle:[:ex | ex proceed ]
+                do:[
+                    answer := Dialog
+                        choose:('Error in debugger:\' withCRs , eMsg , '\\debug again ?' withCRs)
+                        labels:#( 'Proceed' 'Cancel' 'Debug' )
+                        values:#( #proceed #cancel #debug )
+                        default:#cancel.
+                ].
+            answer == #debug ifTrue:[
+                'DebugView [info]: cought exception - debugging' infoPrintCR.
+                Debugger
+                    enterUnconditional:(ex suspendedContext)
+                    withMessage:'Error in debugger: ' , eMsg
+                    mayProceed:true.
+                ex proceed.
+            ].
+            answer == #proceed ifTrue:[
+                'DebugView [info]: ignored exception - proceeding' infoPrintCR.
+                ex proceed.
+            ].
+            'DebugView [info]: cought exception - returning' infoPrintCR.
+            ex return.
+        ] do:[
+            "/ make certain that sub-debuggers, inspectors etc.
+            "/ come up on my device.
+            Screen currentScreenQuerySignal answer:device
+            do:[
+                windowGroup
+                    eventLoopWhile:[Processor activeProcess state:#debug.
+                                      true]
+                    onLeave:[]
+            ]
+        ].
     ].
     catchBlock := nil.
 
@@ -6268,16 +6297,16 @@
     codeView modified ifFalse:[^ false].
 
     currentMethod isNil ifTrue:[
-	^ false
+        ^ false
     ].
     source := currentMethod source.
     source notNil ifTrue:[
-	source string = codeView contents string ifTrue:[
-	    ^ false
-	].
-	(source string withTabsExpanded:8) = (codeView contents string withTabsExpanded:8) ifTrue:[
-	    ^ false
-	].
+        source string = codeView contents string ifTrue:[
+            ^ false
+        ].
+        (source string withTabsExpanded:8) = (codeView contents string withTabsExpanded:8) ifTrue:[
+            ^ false
+        ].
     ].
     ^ true
 !
@@ -6291,11 +6320,11 @@
 
     (newSelection notNil
     and:[newSelection = contextView selection]) ifTrue:[
-	^ true
+        ^ true
     ].
 
     (self confirm:('Code modified - change selection anyway ?')) ifFalse:[
-	^ false
+        ^ false
     ].
     codeView modified:false.
 
@@ -6328,78 +6357,78 @@
     |con top newMethod|
 
     codeView withWaitCursorDo:[
-	"
-	 find the method-home context for this one
-	"
-	doUnwind ifTrue:[
-	    con := selectedContext.
-	    top := con.
-	    [con notNil] whileTrue:[
-		(con methodHome == selectedContext) ifTrue:[
-		    top := con
-		].
-		con := con sender
-	    ].
-	].
-
-	"/
-	"/ provide the classes nameSpace on a query;
-	"/ in case we accept while in another nameSpace context,
-	"/ (but for a class which is somewhere else)
-	"/
-	(Class updateChangeFileQuerySignal,
-	 Class updateChangeListQuerySignal,
-	 Class updateHistoryLineQuerySignal) answer:true
-	do:[
-	    Class nameSpaceQuerySignal
-	    answer:(aClass nameSpace)
-	    do:[
-		Class packageQuerySignal
-		answer:(aClass package ? PackageId noProjectID)
-		do:[
-		    codeView contents:someCode.
-		    newMethod := aClass compilerClass
-				     compile:someCode
-				     forClass:aClass
-				     inCategory:category
-				     notifying:codeView.
-		].
-	    ].
-	].
-
-	inspecting ifFalse:[
-	    "
-	     if it worked, remove everything up to and including top
-	     from context chain
-	    "
-	    (newMethod notNil and:[newMethod ~~ #Error]) ifTrue:[
-		codeView modified:false.
-
-		doUnwind ifTrue:[
-		    selectedContext canReturn ifTrue:[
-			self setContext:(top "sender").
-			exitAction := #restart.
-			selectedContext setLineNumber:1.
-			self doRestart.
-		    ] ifFalse:[
-			self setContext:(top sender).
-			exitAction := #return.
-		    ].
-
-		    "
-		     continue/step is no longer possible
-		    "
-		    "/ continueButton disable.
-		    "/ canContinue := false.
-		].
-
-		contextView selection:1.
-		"/ self showSelection:1.
-		"/ contextView makeSelectionVisible. "/ scrollToLine:(selection - 1)
-	    ] ifFalse:[
-		^ cancelAction value
-	    ]
-	].
+        "
+         find the method-home context for this one
+        "
+        doUnwind ifTrue:[
+            con := selectedContext.
+            top := con.
+            [con notNil] whileTrue:[
+                (con methodHome == selectedContext) ifTrue:[
+                    top := con
+                ].
+                con := con sender
+            ].
+        ].
+
+        "/
+        "/ provide the classes nameSpace on a query;
+        "/ in case we accept while in another nameSpace context,
+        "/ (but for a class which is somewhere else)
+        "/
+        (Class updateChangeFileQuerySignal,
+         Class updateChangeListQuerySignal,
+         Class updateHistoryLineQuerySignal) answer:true
+        do:[
+            Class nameSpaceQuerySignal
+            answer:(aClass nameSpace)
+            do:[
+                Class packageQuerySignal
+                answer:(aClass package ? PackageId noProjectID)
+                do:[
+                    codeView contents:someCode.
+                    newMethod := aClass compilerClass
+                                     compile:someCode
+                                     forClass:aClass
+                                     inCategory:category
+                                     notifying:codeView.
+                ].
+            ].
+        ].
+
+        inspecting ifFalse:[
+            "
+             if it worked, remove everything up to and including top
+             from context chain
+            "
+            (newMethod notNil and:[newMethod ~~ #Error]) ifTrue:[
+                codeView modified:false.
+
+                doUnwind ifTrue:[
+                    selectedContext canReturn ifTrue:[
+                        self setContext:(top "sender").
+                        exitAction := #restart.
+                        selectedContext setLineNumber:1.
+                        self doRestart.
+                    ] ifFalse:[
+                        self setContext:(top sender).
+                        exitAction := #return.
+                    ].
+
+                    "
+                     continue/step is no longer possible
+                    "
+                    "/ continueButton disable.
+                    "/ canContinue := false.
+                ].
+
+                contextView selection:1.
+                "/ self showSelection:1.
+                "/ contextView makeSelectionVisible. "/ scrollToLine:(selection - 1)
+            ] ifFalse:[
+                ^ cancelAction value
+            ]
+        ].
     ].
 
     "Created: / 17-11-2001 / 21:50:55 / cg"
@@ -6489,9 +6518,9 @@
     cls isNil ifTrue:[ ^ self ].
 
     UserInformation handle:[:ex |
-	ex proceed.
+        ex proceed.
     ] do:[
-	DoWhatIMeanSupport codeCompletionForClass:cls context:selectedContext codeView:codeView.
+        DoWhatIMeanSupport codeCompletionForClass:cls context:selectedContext codeView:codeView.
     ].
 !
 
@@ -6500,7 +6529,7 @@
      Redefined here, to answer true, if exclusice Debugger, which cannot handle popup boxes"
 
     (exclusive or:[windowGroup isNil]) ifTrue:[
-	^ true
+        ^ true
     ].
     ^ super confirm:aString.
 !
@@ -6510,11 +6539,11 @@
      Also sent to autoselect an interesting context on entry."
 
     HaltInterrupt handle:[:ex |
-	ignoreBreakpoints ifFalse:[ex reject].
-	('DebugView [info]: halt/breakpoint in debugger at %1 ignored [doShowSelection.]' bindWith:ex suspendedContext) infoPrintCR.
-	ex proceed
+        ignoreBreakpoints ifFalse:[ex reject].
+        ('DebugView [info]: halt/breakpoint in debugger at %1 ignored [doShowSelection.]' bindWith:ex suspendedContext) infoPrintCR.
+        ex proceed
     ] do:[
-	self updateForContext:lineNr
+        self updateForContext:lineNr
     ].
     self updateMenuItems
 
@@ -6523,10 +6552,10 @@
 
 hideStackInspector
     stackInspector notNil ifTrue:[
-	stackInspector destroy.
-	stackInspector := nil.
-	receiverInspector origin:(0.0 @ 0.0) corner:0.5 @ 1.0.
-	contextInspector origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
+        stackInspector destroy.
+        stackInspector := nil.
+        receiverInspector origin:(0.0 @ 0.0) corner:0.5 @ 1.0.
+        contextInspector origin:(0.5 @ 0.0) corner:(1.0 @ 1.0)
     ]
 !
 
@@ -6535,7 +6564,7 @@
 
     sel := contextView selection.
     sel notNil ifTrue:[
-	self showSelection:sel
+        self showSelection:sel
     ]
 
     "Created: / 18-06-2010 / 12:29:21 / cg"
@@ -6549,45 +6578,45 @@
 
     evView := anEvent view.
     evView notNil ifTrue:[
-	focusView := evView windowGroup focusView.
-	focusView isNil ifTrue:[
-	    focusView := evView.
-	].
-
-	anEvent isKeyPressEvent ifTrue:[
-	    key := anEvent key.
-	    rawKey := anEvent rawKey.
-
-	    inCodeView := (focusView == codeView
-			  or:[focusView isComponentOf:codeView]).
-	    inCodeView ifTrue:[
-		key == #CodeCompletion ifTrue:[
-		    "/ complete the word before/under the cursor.
-		    self sensor
-			pushUserEvent:#codeCompletion
-			for:self
-			withArguments:#().
-		    ^ true
-		].
-	    ].
-	].
+        focusView := evView windowGroup focusView.
+        focusView isNil ifTrue:[
+            focusView := evView.
+        ].
+
+        anEvent isKeyPressEvent ifTrue:[
+            key := anEvent key.
+            rawKey := anEvent rawKey.
+
+            inCodeView := (focusView == codeView
+                          or:[focusView isComponentOf:codeView]).
+            inCodeView ifTrue:[
+                key == #CodeCompletion ifTrue:[
+                    "/ complete the word before/under the cursor.
+                    self sensor
+                        pushUserEvent:#codeCompletion
+                        for:self
+                        withArguments:#().
+                    ^ true
+                ].
+            ].
+        ].
 
 false ifTrue:[
-	anEvent isButtonReleaseEvent ifTrue:[
-	    anEvent view == codeView ifTrue:[
-		(RBParser notNil and:[RBParser isLoaded])
-		ifTrue:[
-		    self sensor
-			pushEvent:anEvent.  "/ must be first in queue
-
-		    self sensor
-		      pushUserEvent:#explainSelection
-		      for:self
-		      withArguments:nil.
-		    ^ true  "/ eaten
-		]
-	    ]
-	].
+        anEvent isButtonReleaseEvent ifTrue:[
+            anEvent view == codeView ifTrue:[
+                (RBParser notNil and:[RBParser isLoaded])
+                ifTrue:[
+                    self sensor
+                        pushEvent:anEvent.  "/ must be first in queue
+
+                    self sensor
+                      pushUserEvent:#explainSelection
+                      for:self
+                      withArguments:nil.
+                    ^ true  "/ eaten
+                ]
+            ]
+        ].
 ].
 
     ].
@@ -6603,39 +6632,39 @@
      Also sent to autoselect an interesting context on entry."
 
     Notification
-	handle:
-	    [:ex |
-		"/ ex suspendedContext fullPrintAll.
-		Transcript showCR:ex description.
-		"/ Transcript showCR:ex parameter.
-		ex proceed
-	    ]
-	do:
-	    [
-		Error
-		    handle:
-			[:ex |
-			    |s con|
-
-			    ex signal isControlInterrupt
-				ifTrue:[
-				    'DebugView [info]: halt/break ignored - while showing selection in debugger' infoPrintCR.
-				    ex proceed
-				].
-
-			    ('DebugView [info]: error at %1 when showing selection in debugger ignored' bindWith:ex suspendedContext) infoPrintCR.
-
-			    s := '' writeStream.
-			    s nextPutLine:'**** error in debugger, while extracting source'.
-			    s nextPutLine:'****'.
-			    s nextPutAll: '**** '; nextPutLine:(ex description "withCRs").
-			    s nextPutLine:'****'.
-			    con := ex suspendedContext.
-			    s nextPutAll: '**** '; nextPutLine:(con printString).
-			    con := con sender.
-			    HaltInterrupt ignoreIn:[
-				con fullPrintAllOn:s.
-			    ].
+        handle:
+            [:ex |
+                "/ ex suspendedContext fullPrintAll.
+                Transcript showCR:ex description.
+                "/ Transcript showCR:ex parameter.
+                ex proceed
+            ]
+        do:
+            [
+                Error
+                    handle:
+                        [:ex |
+                            |s con|
+
+                            ex signal isControlInterrupt
+                                ifTrue:[
+                                    'DebugView [info]: halt/break ignored - while showing selection in debugger' infoPrintCR.
+                                    ex proceed
+                                ].
+
+                            ('DebugView [info]: error at %1 when showing selection in debugger ignored' bindWith:ex suspendedContext) infoPrintCR.
+
+                            s := '' writeStream.
+                            s nextPutLine:'**** error in debugger, while extracting source'.
+                            s nextPutLine:'****'.
+                            s nextPutAll: '**** '; nextPutLine:(ex description "withCRs").
+                            s nextPutLine:'****'.
+                            con := ex suspendedContext.
+                            s nextPutAll: '**** '; nextPutLine:(con printString).
+                            con := con sender.
+                            HaltInterrupt ignoreIn:[
+                                con fullPrintAllOn:s.
+                            ].
 "/                            [con notNil] whileTrue:[
 "/                                Error catch:[:ex |
 "/                                    s nextPutAll: '**** '; nextPutLine:(con printString).
@@ -6647,29 +6676,29 @@
 "/                                    con := con sender.
 "/                                ]
 "/                            ].
-			    codeView contents:(s contents).
-			    ex return.
-			]
-		    do:
-			[
-			    self doShowSelection:lineNr
-			]
-	    ]
+                            codeView contents:(s contents).
+                            ex return.
+                        ]
+                    do:
+                        [
+                            self doShowSelection:lineNr
+                        ]
+            ]
 
     "Modified: / 04-07-2006 / 14:50:06 / cg"
 !
 
 showStackInspectorFor:con
     stackInspector isNil ifTrue:[
-	receiverInspector origin:(0.0 @ 0.0) corner:0.3 @ 1.0.
-	contextInspector origin:(0.3 @ 0.0) corner:(0.6 @ 1.0).
-	stackInspector := InspectorView
-		    origin:(0.6 @ 0.0)
-		    corner:(1.0 @ 1.0)
-		    in:contextInspector superView.
-	stackInspector realize.
-	stackInspector fieldListLabel:'Stack'.
-	stackInspector hideReceiver:true
+        receiverInspector origin:(0.0 @ 0.0) corner:0.3 @ 1.0.
+        contextInspector origin:(0.3 @ 0.0) corner:(0.6 @ 1.0).
+        stackInspector := InspectorView
+                    origin:(0.6 @ 0.0)
+                    corner:(1.0 @ 1.0)
+                    in:contextInspector superView.
+        stackInspector realize.
+        stackInspector fieldListLabel:'Stack'.
+        stackInspector hideReceiver:true
     ].
     stackInspector inspect:(con stackFrame asArray).
     stackInspector showLast
@@ -7090,6 +7119,12 @@
     ignoreEndTime := something.
 !
 
+ignoreUntilShiftKeyPressed:aBoolean
+    ignoreUntilShiftKeyPressed := aBoolean.
+
+    "Created: / 27-01-2012 / 11:35:23 / cg"
+!
+
 method
     |m|
 
@@ -7114,9 +7149,9 @@
     "/ self assert:(methodArg mclass notNil).
 
     methodArg == #all ifTrue:[
-	weakMethodHolder := methodArg
+        weakMethodHolder := methodArg
     ] ifFalse:[
-	weakMethodHolder := WeakArray with:methodArg.
+        weakMethodHolder := WeakArray with:methodArg.
     ].
     lineNumber := lineNumberArg.
 
@@ -7127,9 +7162,9 @@
 
 decrementIgnoreCount
     ignoreCount notNil ifTrue:[
-	ignoreCount > 0 ifTrue:[
-	    ignoreCount := ignoreCount - 1
-	]
+        ignoreCount > 0 ifTrue:[
+            ignoreCount := ignoreCount - 1
+        ]
     ]
 ! !
 
@@ -7139,30 +7174,34 @@
     |method|
 
     (method := self method) isNil ifTrue:[
-	aStream nextPutAll:'an obsolete IgnoredHalt'.
-	^ self
+        aStream nextPutAll:'an obsolete IgnoredHalt'.
+        ^ self
     ].
 
     aStream nextPutAll:'Ignore '.
-    method printOn:aStream.
-
-    ignoreEndTime notNil ifTrue:[
-	aStream nextPutAll:'until '.
-	ignoreEndTime printOn:aStream.
+    method whoString printOn:aStream.
+
+    ignoreUntilShiftKeyPressed == true ifTrue:[
+        aStream nextPutAll:' until shiftKey pressed'.
     ] ifFalse:[
-	(ignoreCount > 0) ifTrue:[
-	    aStream nextPutAll:'for '.
-	    ignoreCount printOn:aStream.
-	] ifFalse:[
-	    (ignoreCount < 0) ifTrue:[
-		aStream nextPutAll:'forEver'.
-	    ] ifFalse:[
-		aStream nextPutAll:' no longer'.
-	    ].
-	].
-    ].
-
-    "Modified: / 08-05-2011 / 10:29:11 / cg"
+        ignoreEndTime notNil ifTrue:[
+            aStream nextPutAll:' until '.
+            ignoreEndTime printOn:aStream.
+        ] ifFalse:[
+            (ignoreCount > 0) ifTrue:[
+                aStream nextPutAll:' for '.
+                ignoreCount printOn:aStream.
+            ] ifFalse:[
+                (ignoreCount < 0) ifTrue:[
+                    aStream nextPutAll:' forEver'.
+                ] ifFalse:[
+                    aStream nextPutAll:' no longer'.
+                ].
+            ].
+        ].
+    ].
+
+    "Modified: / 27-01-2012 / 11:43:10 / cg"
 ! !
 
 !DebugView::IgnoredHalt methodsFor:'queries'!
@@ -7172,34 +7211,44 @@
      nil if not ignored"
 
     ignoreCount notNil ifTrue:[
-	ignoreCount > 0 ifTrue:[
-	    ^ '%1 more calls ignored' bindWith:ignoreCount
-	].
-	^ nil
+        ignoreCount > 0 ifTrue:[
+            ^ '%1 more calls ignored' bindWith:ignoreCount
+        ].
+        ^ nil
     ].
     ignoreEndTime notNil ifTrue:[
-	(ignoreEndTime > Timestamp now) ifTrue:[
-	    ^ 'ignored until %1' bindWith:ignoreEndTime
-	].
-	^ nil
+        (ignoreEndTime > Timestamp now) ifTrue:[
+            ^ 'ignored until %1' bindWith:ignoreEndTime
+        ].
+        ^ nil
+    ].
+    ignoreUntilShiftKeyPressed == true ifTrue:[
+        Display shiftDown ifFalse:[
+            ^ 'ignored until shiftKey is pressed'
+        ].
+        ^ nil
     ].
 
     ^ 'ignored until reenabled'
+
+    "Modified: / 27-01-2012 / 11:35:48 / cg"
 !
 
 isActive
     "true if this ignore-entry is still active"
 
     self method isNil ifTrue:[self halt. ^ false ].    "/ method no longer valid
+
     ignoreEndTime notNil ifTrue:[
-	^ ignoreEndTime > Timestamp now
+        ^ ignoreEndTime > Timestamp now
     ].
     ignoreCount notNil ifTrue:[
-	^ ignoreCount > 0
+        ^ ignoreCount > 0
     ].
     ^ false
 
     "Modified: / 23-03-2011 / 15:21:02 / cg"
+    "Modified (format): / 27-01-2012 / 11:25:30 / cg"
 !
 
 isForMethod:aMethod line:line
@@ -7214,14 +7263,19 @@
 isHaltIgnored
     "true if this halt should be ignored"
 
+    ignoreUntilShiftKeyPressed == true ifTrue:[
+        ^ Display shiftDown not
+    ].
     ignoreCount notNil ifTrue:[
-	^ ignoreCount > 0
+        ^ ignoreCount > 0
     ].
     ignoreEndTime notNil ifTrue:[
-	^ ignoreEndTime > Timestamp now
+        ^ ignoreEndTime > Timestamp now
     ].
 
     ^ true
+
+    "Modified: / 27-01-2012 / 11:36:01 / cg"
 !
 
 isHaltIgnoredInMethod:aMethod line:line
@@ -7236,7 +7290,7 @@
 !DebugView class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.526 2012-01-27 10:13:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.527 2012-01-27 10:50:31 cg Exp $'
 !
 
 version_SVN