resizehandle
authorClaus Gittinger <cg@exept.de>
Sat, 26 Jan 2013 22:11:40 +0100
changeset 4500 1fe68567471d
parent 4499 c71755f2c04a
child 4501 3f8f66c8d1f2
resizehandle
TextView.st
--- a/TextView.st	Mon Jan 21 14:46:16 2013 +0100
+++ b/TextView.st	Sat Jan 26 22:11:40 2013 +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
@@ -37,7 +37,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
@@ -80,27 +80,27 @@
       contentsWasSaved        <Boolean>               set to true, whenever saved in a file
 
       externalEncoding        <Symbol|nil>            external encoding, used when text is saved to
-                                                      a file. Usually something like
-                                                      #jis7, #euc, #sjis etc.
-                                                      (currently only passed down from the
-                                                       fileBrowser)
+						      a file. Usually something like
+						      #jis7, #euc, #sjis etc.
+						      (currently only passed down from the
+						       fileBrowser)
 
       dropSource              <DropSource>            drag operation descriptor or nil (dragging disabled)
-      dragIsActive            <Boolean>               true, drag operation is activated  
-
-      searchAction            <Block>                 an autosearch action; typically set by the browser. 
-                                                      Will be used as default when searchFwd/searchBwd is 
-                                                      pressed. If the searchPattern is changed, no autosearch 
-                                                      action will be executed.
+      dragIsActive            <Boolean>               true, drag operation is activated
+
+      searchAction            <Block>                 an autosearch action; typically set by the browser.
+						      Will be used as default when searchFwd/searchBwd is
+						      pressed. If the searchPattern is changed, no autosearch
+						      action will be executed.
 
       searchBarActionBlock    <Block>                 search action block for embedded search
-                                                      panel. Used as second chance for searchFwd/bwd
+						      panel. Used as second chance for searchFwd/bwd
 
     [class variables:]
-        ST80Selections        <Boolean>               enables ST80 style doubleclick behavior
-                                                      (right after opening parenthesis, right before
-                                                       closing parenthesis, at begin of a line
-                                                       at begin of text)
+	ST80Selections        <Boolean>               enables ST80 style doubleclick behavior
+						      (right after opening parenthesis, right before
+						       closing parenthesis, at begin of a line
+						       at begin of text)
 
     [StyleSheet parameters:]
 
@@ -113,14 +113,14 @@
       text.selectionBackgroundColor             defaults to textForegroundColor
 
       text.alternativeSelectionForegroundColor  pasted text (i.e. paste will not replace)
-                                                defaults to selectionForegroundColor
+						defaults to selectionForegroundColor
       text.alternativeSelectionBackgroundColor  pasted text (i.e. paste will not replace)
-                                                defaults to selectionBackgroundColor
+						defaults to selectionBackgroundColor
     [author:]
-        Claus Gittinger
+	Claus Gittinger
 
     [see also:]
-        EditTextView CodeView Workspace
+	EditTextView CodeView Workspace
 "
 !
 
@@ -131,18 +131,18 @@
     they may also be opened as a textEditor;
 
     open a (readonly) textView on some information text:
-                                                        [exBegin]
-        TextView 
-            openWith:'read this' 
-            title:'demonstration'
-                                                        [exEnd]
+							[exBegin]
+	TextView
+	    openWith:'read this'
+	    title:'demonstration'
+							[exEnd]
 
     the same, but open it modal:
-                                                        [exBegin]
-        TextView 
-            openModalWith:'read this first' 
-            title:'demonstration'
-                                                        [exEnd]
+							[exBegin]
+	TextView
+	    openModalWith:'read this first'
+	    title:'demonstration'
+							[exEnd]
 
 
     open it modal (but editable) on some text:
@@ -153,26 +153,26 @@
     However, usually an applicationModel is installed as the
     editor-topViews application. This would get a closeRequest,
     where it could handle things.
-                                                        [exBegin]
-        |m textView|
-
-        m := 'read this first' asValue.
-        textView := EditTextView openModalOnModel:m.
-        textView modified ifTrue:[
-            (self confirm:'text was not accepted - do it now ?')
-            ifTrue:[
-                m value:textView contents
-            ]
-        ].
-
-        Transcript showCR:m value.
-                                                        [exEnd]
+							[exBegin]
+	|m textView|
+
+	m := 'read this first' asValue.
+	textView := EditTextView openModalOnModel:m.
+	textView modified ifTrue:[
+	    (self confirm:'text was not accepted - do it now ?')
+	    ifTrue:[
+		m value:textView contents
+	    ]
+	].
+
+	Transcript showCR:m value.
+							[exEnd]
 
 
     open a textEditor on some file:
-                                                        [exBegin]
-        EditTextView openOn:'Makefile'
-                                                        [exEnd]
+							[exBegin]
+	EditTextView openOn:'Makefile'
+							[exEnd]
 
 "
 
@@ -183,29 +183,29 @@
 on:aModel aspect:aspect change:change menu:menu initialSelection:initial
     "for ST-80 compatibility"
 
-    ^ (self new) 
-        on:aModel 
-        aspect:aspect
-        list:aspect
-        change:change 
-        menu:menu
-        initialSelection:initial
+    ^ (self new)
+	on:aModel
+	aspect:aspect
+	list:aspect
+	change:change
+	menu:menu
+	initialSelection:initial
 !
 
 with:someText
-    ^ (self new) 
-        contents:someText 
+    ^ (self new)
+	contents:someText
 ! !
 
 !TextView class methodsFor:'class initialization'!
 
 initialize
     DefaultParenthesisSpecification isNil ifTrue:[
-        DefaultParenthesisSpecification := IdentityDictionary new.       
-        DefaultParenthesisSpecification at:#open        put:#( $( $[ ${ "$> $<") .
-        DefaultParenthesisSpecification at:#close       put:#( $) $] $} "$> $<").
-        DefaultParenthesisSpecification at:#ignore      put:#( $' $" '$[' '$]' '${' '$)' ).
-        DefaultParenthesisSpecification at:#eolComment  put:'"/'.     "/ sigh - must be 2 characters
+	DefaultParenthesisSpecification := IdentityDictionary new.
+	DefaultParenthesisSpecification at:#open        put:#( $( $[ ${ "$> $<") .
+	DefaultParenthesisSpecification at:#close       put:#( $) $] $} "$> $<").
+	DefaultParenthesisSpecification at:#ignore      put:#( $' $" '$[' '$]' '${' '$)' ).
+	DefaultParenthesisSpecification at:#eolComment  put:'"/'.     "/ sigh - must be 2 characters
     ].
 ! !
 
@@ -221,11 +221,11 @@
 
     i := self classResources at:'ICON' default:nil.
     i isNil ifTrue:[
-        nm := ClassResources at:'ICON_FILE' default:'Editor.xbm'.
-        i := Smalltalk imageFromFileNamed:nm forClass:self.
+	nm := ClassResources at:'ICON_FILE' default:'Editor.xbm'.
+	i := Smalltalk imageFromFileNamed:nm forClass:self.
     ].
     i notNil ifTrue:[
-        i := i onDevice:Display
+	i := i onDevice:Display
     ].
     ^ i
 
@@ -289,13 +289,13 @@
     "extract values from the styleSheet and cache them in class variables"
 
     <resource: #style (#'textView.background'
-                       #'text.selectionForegroundColor' 
-                       #'text.selectionBackgroundColor'
-                       #'text.alternativeSelectionForegroundColor' 
-                       #'text.alternativeSelectionBackgroundColor'
-                       #'textView.font' 
-                       #'text.wordSelectCatchesBlanks'
-                       #'text.st80Selections')>
+		       #'text.selectionForegroundColor'
+		       #'text.selectionBackgroundColor'
+		       #'text.alternativeSelectionForegroundColor'
+		       #'text.alternativeSelectionBackgroundColor'
+		       #'textView.font'
+		       #'text.wordSelectCatchesBlanks'
+		       #'text.st80Selections')>
 
     DefaultViewBackground := StyleSheet colorAt:'textView.background' default:White.
     DefaultSelectionForegroundColor := StyleSheet colorAt:'text.selectionForegroundColor'.
@@ -321,7 +321,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:TextView    
+     UIHelpTool openOnClass:TextView
     "
 
     <resource: #help>
@@ -367,192 +367,192 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: searchDialogSpec
-        window: 
+	name: searchDialogSpec
+	window:
        (WindowSpec
-          label: 'String search'
-          name: 'String search'
-          min: (Point 10 10)
-          max: (Point 1280 1024)
-          bounds: (Rectangle 0 0 302 242)
-        )
-        component: 
+	  label: 'String search'
+	  name: 'String search'
+	  min: (Point 10 10)
+	  max: (Point 1280 1024)
+	  bounds: (Rectangle 0 0 302 242)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (LabelSpec
-              label: 'SearchPattern:'
-              name: 'label'
-              layout: (LayoutFrame 1 0.0 3 0 -1 1.0 20 0)
-              level: 0
-              translateLabel: true
-              adjust: left
-            )
-           (ComboBoxSpec
-              name: 'patternComboBox'
-              layout: (LayoutFrame 2 0.0 26 0 -2 1.0 48 0)
-              activeHelpKey: searchPattern
-              tabable: true
-              model: searchPattern
-              immediateAccept: false
-              acceptOnLeave: true
-              acceptOnReturn: true
-              acceptOnTab: true
-              acceptOnLostFocus: true
-              acceptOnPointerLeave: false
-              autoSelectInitialText: true
-              comboList: patternList
-            )
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 52 0 0 1.0 -30 1)
-              horizontalLayout: fit
-              verticalLayout: top
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Case Sensitive'
-                    name: 'ignoreCaseCheckBox'
-                    activeHelpKey: searchCaseSensitive
-                    level: 0
-                    tabable: true
-                    model: caseSensitive
-                    translateLabel: true
-                    extent: (Point 302 24)
-                  )
-                 (CheckBoxSpec
-                    label: 'Match (forward only)'
-                    name: 'matchCheckBox'
-                    activeHelpKey: matchSearch
-                    level: 0
-                    tabable: true
-                    model: match
-                    translateLabel: true
-                    extent: (Point 302 24)
-                  )
-                 (CheckBoxSpec
-                    label: 'Search Full Words'
-                    name: 'CheckBox2'
-                    activeHelpKey: searchFullWord
-                    level: 0
-                    enableChannel: searchFullWordEnabled
-                    tabable: true
-                    model: searchFullWord
-                    translateLabel: true
-                    extent: (Point 302 24)
-                  )
-                 (CheckBoxSpec
-                    label: 'Variable Only'
-                    name: 'CheckBox1'
-                    activeHelpKey: searchVariable
-                    level: 0
-                    visibilityChannel: searchVariableVisible
-                    enableChannel: searchVariableEnabled
-                    tabable: true
-                    model: searchVariable
-                    translateLabel: true
-                    labelChannel: stringWithVariableUnderCursorHolder
-                    extent: (Point 302 24)
-                  )
-                 (CheckBoxSpec
-                    label: 'Select Lines'
-                    name: 'CheckBox3'
-                    activeHelpKey: selectLines
-                    level: 0
-                    initiallyInvisible: true
-                    tabable: true
-                    model: selectLines
-                    translateLabel: true
-                    extent: (Point 302 24)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Global Replace With:'
-                          name: 'CheckBox4'
-                          layout: (LayoutFrame 0 0 0 0 149 0 23 0)
-                          activeHelpKey: replaceText
-                          level: 0
-                          enableChannel: replaceEnabled
-                          tabable: true
-                          model: replaceBoolean
-                          translateLabel: true
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField1'
-                          layout: (LayoutFrame 150 0 0 0 -2 1 22 0)
-                          activeHelpKey: replaceText
-                          visibilityChannel: replaceBoolean
-                          enableChannel: replaceBoolean
-                          model: replaceTextHolder
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 302 24)
-                  )
-                 )
-               
-              )
-            )
-           (HorizontalPanelViewSpec
-              name: 'horizontalPanelView'
-              layout: (LayoutFrame 0 0.0 -28 1.0 0 1.0 0 1.0)
-              level: 0
-              horizontalLayout: fitSpace
-              verticalLayout: center
-              horizontalSpace: 3
-              verticalSpace: 3
-              ignoreInvisibleComponents: true
-              reverseOrderIfOKAtLeft: true
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'Cancel'
-                    name: 'cancelButton'
-                    level: 2
-                    translateLabel: true
-                    tabable: true
-                    model: cancel
-                    extent: (Point 96 21)
-                  )
-                 (ActionButtonSpec
-                    label: 'Prev'
-                    name: 'prevButton'
-                    level: 2
-                    translateLabel: true
-                    tabable: true
-                    model: prevAction
-                    extent: (Point 96 21)
-                  )
-                 (ActionButtonSpec
-                    label: 'Next'
-                    name: 'nextButton'
-                    level: 2
-                    borderWidth: 1
-                    translateLabel: true
-                    tabable: true
-                    model: nextAction
-                    isDefault: true
-                    extent: (Point 96 21)
-                  )
-                 )
-               
-              )
-              keepSpaceForOSXResizeHandle: true
-            )
-           )
-         
-        )
+	  collection: (
+	   (LabelSpec
+	      label: 'SearchPattern:'
+	      name: 'label'
+	      layout: (LayoutFrame 1 0.0 3 0 -1 1.0 20 0)
+	      level: 0
+	      translateLabel: true
+	      adjust: left
+	    )
+	   (ComboBoxSpec
+	      name: 'patternComboBox'
+	      layout: (LayoutFrame 2 0.0 26 0 -2 1.0 48 0)
+	      activeHelpKey: searchPattern
+	      tabable: true
+	      model: searchPattern
+	      immediateAccept: false
+	      acceptOnLeave: true
+	      acceptOnReturn: true
+	      acceptOnTab: true
+	      acceptOnLostFocus: true
+	      acceptOnPointerLeave: false
+	      autoSelectInitialText: true
+	      comboList: patternList
+	    )
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 52 0 0 1.0 -30 1)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Case Sensitive'
+		    name: 'ignoreCaseCheckBox'
+		    activeHelpKey: searchCaseSensitive
+		    level: 0
+		    tabable: true
+		    model: caseSensitive
+		    translateLabel: true
+		    extent: (Point 302 24)
+		  )
+		 (CheckBoxSpec
+		    label: 'Match (forward only)'
+		    name: 'matchCheckBox'
+		    activeHelpKey: matchSearch
+		    level: 0
+		    tabable: true
+		    model: match
+		    translateLabel: true
+		    extent: (Point 302 24)
+		  )
+		 (CheckBoxSpec
+		    label: 'Search Full Words'
+		    name: 'CheckBox2'
+		    activeHelpKey: searchFullWord
+		    level: 0
+		    enableChannel: searchFullWordEnabled
+		    tabable: true
+		    model: searchFullWord
+		    translateLabel: true
+		    extent: (Point 302 24)
+		  )
+		 (CheckBoxSpec
+		    label: 'Variable Only'
+		    name: 'CheckBox1'
+		    activeHelpKey: searchVariable
+		    level: 0
+		    visibilityChannel: searchVariableVisible
+		    enableChannel: searchVariableEnabled
+		    tabable: true
+		    model: searchVariable
+		    translateLabel: true
+		    labelChannel: stringWithVariableUnderCursorHolder
+		    extent: (Point 302 24)
+		  )
+		 (CheckBoxSpec
+		    label: 'Select Lines'
+		    name: 'CheckBox3'
+		    activeHelpKey: selectLines
+		    level: 0
+		    initiallyInvisible: true
+		    tabable: true
+		    model: selectLines
+		    translateLabel: true
+		    extent: (Point 302 24)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Global Replace With:'
+			  name: 'CheckBox4'
+			  layout: (LayoutFrame 0 0 0 0 149 0 23 0)
+			  activeHelpKey: replaceText
+			  level: 0
+			  enableChannel: replaceEnabled
+			  tabable: true
+			  model: replaceBoolean
+			  translateLabel: true
+			)
+		       (InputFieldSpec
+			  name: 'EntryField1'
+			  layout: (LayoutFrame 150 0 0 0 -2 1 22 0)
+			  activeHelpKey: replaceText
+			  visibilityChannel: replaceBoolean
+			  enableChannel: replaceBoolean
+			  model: replaceTextHolder
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 302 24)
+		  )
+		 )
+
+	      )
+	    )
+	   (HorizontalPanelViewSpec
+	      name: 'horizontalPanelView'
+	      layout: (LayoutFrame 0 0.0 -28 1.0 0 1.0 0 1.0)
+	      level: 0
+	      horizontalLayout: fitSpace
+	      verticalLayout: center
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      ignoreInvisibleComponents: true
+	      reverseOrderIfOKAtLeft: true
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ActionButtonSpec
+		    label: 'Cancel'
+		    name: 'cancelButton'
+		    level: 2
+		    translateLabel: true
+		    tabable: true
+		    model: cancel
+		    extent: (Point 96 21)
+		  )
+		 (ActionButtonSpec
+		    label: 'Prev'
+		    name: 'prevButton'
+		    level: 2
+		    translateLabel: true
+		    tabable: true
+		    model: prevAction
+		    extent: (Point 96 21)
+		  )
+		 (ActionButtonSpec
+		    label: 'Next'
+		    name: 'nextButton'
+		    level: 2
+		    borderWidth: 1
+		    translateLabel: true
+		    tabable: true
+		    model: nextAction
+		    isDefault: true
+		    extent: (Point 96 21)
+		  )
+		 )
+
+	      )
+	      keepSpaceForOSXResizeHandleH: true
+	    )
+	   )
+
+	)
       )
 ! !
 
@@ -579,7 +579,7 @@
 openModalWith:aString
     "start a textView with aString as initial contents"
 
-    ^ self openModalWith:aString title:nil 
+    ^ self openModalWith:aString title:nil
 
     "
      TextView openModalWith:'some text'
@@ -639,7 +639,7 @@
 openWith:aStringOrStringCollection
     "start a textView with aStringOrStringCollection as initial contents"
 
-    ^ self openWith:aStringOrStringCollection selected:false 
+    ^ self openWith:aStringOrStringCollection selected:false
 
     "
      TextView openWith:'some text'
@@ -652,7 +652,7 @@
 !
 
 openWith:aStringOrStringCollection selected:selectedBoolean
-    "start a textView with aStringOrStringCollection as initial (optionally selected) contents. 
+    "start a textView with aStringOrStringCollection as initial (optionally selected) contents.
      Return the textView."
 
     |textView|
@@ -695,10 +695,10 @@
     label := 'unnamed'.
     top := StandardSystemView label:label icon:self defaultIcon.
 
-    frame := HVScrollableView 
-                for:self 
-                miniScrollerH:true miniScrollerV:false
-                in:top.
+    frame := HVScrollableView
+		for:self
+		miniScrollerH:true miniScrollerV:false
+		in:top.
     frame origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
     ^ frame scrolledView
 
@@ -712,7 +712,7 @@
 
     textView := self setupEmpty.
     aFileName notNil ifTrue:[
-        textView setupForFile:aFileName.
+	textView setupForFile:aFileName.
     ].
 
     ^ textView
@@ -743,7 +743,7 @@
     aTitle notNil ifTrue:[top label:aTitle].
 
     aStringOrStringCollection notNil ifTrue:[
-        textView contents:aStringOrStringCollection
+	textView contents:aStringOrStringCollection
     ].
 
     ^ textView
@@ -805,18 +805,18 @@
 
     |encodingSymOrNil|
 
-    encodingSymOrNil := encodingArg isNil 
-                            ifTrue:[#'iso10646-1'] 
-                            ifFalse:[encodingArg asSymbol].
+    encodingSymOrNil := encodingArg isNil
+			    ifTrue:[#'iso10646-1']
+			    ifFalse:[encodingArg asSymbol].
 
     characterEncoding ~~ encodingSymOrNil ifTrue:[
-        "/ TODO: reencode contents if required.
-        (list size ~~ 0
-        and:[ list contains:[:line | line size > 0]]) ifTrue:[
-            (self confirm:'Your text may need to be re-coded - this is not yet supported.\\Proceed ?')
-            ifFalse:[^ self].
-        ].
-        characterEncoding := encodingSymOrNil.
+	"/ TODO: reencode contents if required.
+	(list size ~~ 0
+	and:[ list contains:[:line | line size > 0]]) ifTrue:[
+	    (self confirm:'Your text may need to be re-coded - this is not yet supported.\\Proceed ?')
+	    ifFalse:[^ self].
+	].
+	characterEncoding := encodingSymOrNil.
     ].
 
     "Modified (format): / 25-01-2012 / 00:28:27 / cg"
@@ -828,7 +828,7 @@
 
     selectionStartLine isNil ifTrue:[^ 0].
     ^ self characterPositionOfLine:selectionStartLine
-                               col:selectionStartCol
+			       col:selectionStartCol
 
     "Modified: 14.8.1997 / 16:35:37 / cg"
 !
@@ -839,7 +839,7 @@
 
     selectionStartLine isNil ifTrue:[^ 0].
     ^ self characterPositionOfLine:selectionEndLine
-                               col:selectionEndCol
+			       col:selectionEndCol
 
     "Created: 14.8.1997 / 16:35:24 / cg"
     "Modified: 14.8.1997 / 16:35:45 / cg"
@@ -859,7 +859,7 @@
 defaultFileNameForFileDialog
     "return the default fileName to use for the save-box"
 
-    ^ defaultFileNameForFileDialog 
+    ^ defaultFileNameForFileDialog
 !
 
 defaultFileNameForFileDialog:aBaseName
@@ -941,11 +941,11 @@
 contents:newContents selected:selectedBoolean
     self contents:newContents.
     selectedBoolean ifTrue:[
-        list size == 1 ifTrue:[
-            self selectFromLine:1 col:1 toLine:1 col:(list at:1) size
-        ] ifFalse:[
-            self selectAll
-        ]
+	list size == 1 ifTrue:[
+	    self selectFromLine:1 col:1 toLine:1 col:(list at:1) size
+	] ifFalse:[
+	    self selectAll
+	]
     ]
 
     "
@@ -1004,10 +1004,10 @@
     super setContents:something.
 
     selStartLine notNil ifTrue:[
-        self 
-            selectFromLine:selStartLine col:selStartCol
-            toLine:selEndLine col:selEndCol.
-        selectStyle := selStyle
+	self
+	    selectFromLine:selStartLine col:selStartCol
+	    toLine:selEndLine col:selEndCol.
+	selectStyle := selStyle
     ].
 
 
@@ -1030,9 +1030,9 @@
 
     self loadTextFile:aFileName.
     aFileName notNil ifTrue:[
-        baseName := aFileName asFilename baseName.
-        self topView label:baseName.
-        self defaultFileNameForFileDialog:baseName.
+	baseName := aFileName asFilename baseName.
+	self topView label:baseName.
+	self defaultFileNameForFileDialog:baseName.
     ].
 
     "Created: / 25-10-2006 / 14:47:13 / cg"
@@ -1061,35 +1061,35 @@
     beginCol := self findBeginOfWordAtLine:selectLine col:selectCol.
     endCol := self findEndOfWordAtLine:selectLine col:selectCol.
     endCol == 0 ifTrue:[
-        endLine := selectLine + 1
+	endLine := selectLine + 1
     ].
 
     "is the initial character within a word ?"
     (wordCheck value:thisCharacter) ifTrue:[
-        "
-         try to catch a blank ...
-        "
-
-        WordSelectCatchesBlanks ifTrue:[
-            ((beginCol == 1)
-            or:[(self characterAtLine:selectLine col:(beginCol - 1))
-                 ~~ Character space]) ifTrue:[
-                ((self characterAtLine:selectLine col:(endCol + 1))
-                  == Character space) ifTrue:[
-                    endCol := endCol + 1.
-                    flag := #wordRight
-                ]
-            ] ifFalse:[
-                beginCol := beginCol - 1.
-                flag := #wordLeft
-            ].
-        ].
+	"
+	 try to catch a blank ...
+	"
+
+	WordSelectCatchesBlanks ifTrue:[
+	    ((beginCol == 1)
+	    or:[(self characterAtLine:selectLine col:(beginCol - 1))
+		 ~~ Character space]) ifTrue:[
+		((self characterAtLine:selectLine col:(endCol + 1))
+		  == Character space) ifTrue:[
+		    endCol := endCol + 1.
+		    flag := #wordRight
+		]
+	    ] ifFalse:[
+		beginCol := beginCol - 1.
+		flag := #wordLeft
+	    ].
+	].
     ].
-    aFiveArgBlock value:selectLine 
-                  value:beginCol 
-                  value:endLine 
-                  value:endCol
-                  value:flag
+    aFiveArgBlock value:selectLine
+		  value:beginCol
+		  value:endLine
+		  value:endCol
+		  value:flag
 
     "Modified: 18.3.1996 / 17:31:04 / cg"
 ! !
@@ -1110,13 +1110,13 @@
 
 selectionForegroundColor:color1 backgroundColor:color2
     "set both the selection-foreground and cursor background colors.
-     The default is defined by the styleSheet; 
+     The default is defined by the styleSheet;
      typically black-on-green for color displays and white-on-black for b&w displays."
 
     selectionFgColor := color1 onDevice:device.
     selectionBgColor := color2 onDevice:device.
     self hasSelection ifTrue:[
-        self invalidate
+	self invalidate
     ]
 
     "Modified: 29.5.1996 / 16:22:15 / cg"
@@ -1128,8 +1128,8 @@
     "set all of model, aspect, listMessage, changeSymbol, menySymbol
      and selection. Added for ST-80 compatibility"
 
-    aspectSym notNil ifTrue:[aspectMsg := aspectSym. 
-                             listMsg isNil ifTrue:[listMsg := aspectSym]].
+    aspectSym notNil ifTrue:[aspectMsg := aspectSym.
+			     listMsg isNil ifTrue:[listMsg := aspectSym]].
     changeSym notNil ifTrue:[changeMsg := changeSym].
     listSym notNil ifTrue:[listMsg := listSym].
     menuSym notNil ifTrue:[menuMsg := menuSym].
@@ -1146,15 +1146,15 @@
     "enable/disable dragging support
     "
     aBoolean ifFalse:[
-        dropSource := nil.
+	dropSource := nil.
     ] ifTrue:[
-        dropSource isNil ifTrue:[
-            dropSource := DropSource 
-                            receiver:self
-                            argument:nil
-                            dropObjectSelector:#collectionOfDragObjects
-                            displayObjectSelector:nil
-        ]
+	dropSource isNil ifTrue:[
+	    dropSource := DropSource
+			    receiver:self
+			    argument:nil
+			    dropObjectSelector:#collectionOfDragObjects
+			    displayObjectSelector:nil
+	]
     ].
 !
 
@@ -1182,13 +1182,13 @@
 
 dropSource
     "returns the dropSource or nil"
-    
+
     ^ dropSource
 !
 
-dropSource:aDropSourceOrNil 
+dropSource:aDropSourceOrNil
     "set the dropSource or nil"
-    
+
     dropSource := aDropSourceOrNil.
 ! !
 
@@ -1198,7 +1198,7 @@
     "if required, query user if he/she wants to change to another font,
      which is able to display text encoded as specified by newEncoding"
 
-    |fontsEncoding msg filter f defaultFont pref matchingFonts 
+    |fontsEncoding msg filter f defaultFont pref matchingFonts
      matchingFamilyFonts matchingFamilyFaceFonts matchingFamilyFaceStyleFonts
      matchingFamilyFaceStyleSizeFonts|
 
@@ -1207,15 +1207,15 @@
     pref := FontDescription preferredFontEncodingFor:newEncoding.
 
     (pref match:fontsEncoding) ifTrue:[
-        ^ self
+	^ self
     ].
     (CharacterEncoder isEncoding:pref subSetOf:fontsEncoding) ifTrue:[
-        ^ self
+	^ self
     ].
 
     filter := [:f | |coding|
-                    (coding := f encoding) notNil 
-                    and:[pref match:coding]].
+		    (coding := f encoding) notNil
+		    and:[pref match:coding]].
 
     device flushListOfAvailableFonts.
     matchingFonts := device listOfAvailableFonts select:filter.
@@ -1224,46 +1224,46 @@
     matchingFamilyFaceStyleFonts := matchingFamilyFaceFonts select:[:f | f style = font style].
     matchingFamilyFaceStyleSizeFonts := matchingFamilyFaceStyleFonts select:[:f | f size = font size].
     matchingFamilyFaceStyleSizeFonts size > 0 ifTrue:[
-        defaultFont := matchingFamilyFaceStyleSizeFonts first
+	defaultFont := matchingFamilyFaceStyleSizeFonts first
     ] ifFalse:[
-        matchingFamilyFaceStyleFonts size > 0 ifTrue:[
-            defaultFont := matchingFamilyFaceStyleFonts first
-        ] ifFalse:[
-            matchingFamilyFaceFonts size > 0 ifTrue:[
-                defaultFont := matchingFamilyFaceFonts first
-            ] ifFalse:[
-                matchingFamilyFonts size > 0 ifTrue:[
-                    defaultFont := matchingFamilyFonts first
-                ] ifFalse:[
-                    matchingFonts size > 0 ifTrue:[
-                        defaultFont := matchingFonts first
-                    ].
-                ].
-            ].
-        ].
+	matchingFamilyFaceStyleFonts size > 0 ifTrue:[
+	    defaultFont := matchingFamilyFaceStyleFonts first
+	] ifFalse:[
+	    matchingFamilyFaceFonts size > 0 ifTrue:[
+		defaultFont := matchingFamilyFaceFonts first
+	    ] ifFalse:[
+		matchingFamilyFonts size > 0 ifTrue:[
+		    defaultFont := matchingFamilyFonts first
+		] ifFalse:[
+		    matchingFonts size > 0 ifTrue:[
+			defaultFont := matchingFonts first
+		    ].
+		].
+	    ].
+	].
     ].
 
     defaultFont isNil ifTrue:[
-        defaultFont isNil ifTrue:[
-            self warn:'Your display does not seem to provide any ' , newEncoding allBold , ' encoded font.\\Please select an appropriate font (iso10646-Unicode recommended)'.
-            pref := #'iso10646-1'.
-        ]
+	defaultFont isNil ifTrue:[
+	    self warn:'Your display does not seem to provide any ' , newEncoding allBold , ' encoded font.\\Please select an appropriate font (iso10646-Unicode recommended)'.
+	    pref := #'iso10646-1'.
+	]
     ].
 
     msg := 'Switch to a %1 encoded font ?'.
     (ask not or:[self confirm:(resources stringWithCRs:msg with:pref)])
     ifTrue:[
-        self withWaitCursorDo:[
-            f := FontPanel 
-                    fontFromUserInitial:defaultFont
-                    title:(resources string:'Font selection')
-                    filter:filter
-                    encoding:pref.
-
-            f notNil ifTrue:[
-                self font:f.
-            ]
-        ]
+	self withWaitCursorDo:[
+	    f := FontPanel
+		    fontFromUserInitial:defaultFont
+		    title:(resources string:'Font selection')
+		    filter:filter
+		    encoding:pref.
+
+	    f notNil ifTrue:[
+		self font:f.
+	    ]
+	]
     ]
 
     "Created: 26.10.1996 / 12:06:54 / cg"
@@ -1276,19 +1276,19 @@
     "mouse-move while button was pressed - handle selection changes"
 
     (clickLine isNil or:[clickPos isNil]) ifTrue:[
-        dragIsActive := false.
-        ^ self
+	dragIsActive := false.
+	^ self
     ].
 
     dragIsActive ifTrue:[
-        (clickPos dist:(x@y)) >= 5.0 ifTrue:[
-            dragIsActive := false.
-
-            self hasSelection ifTrue:[
-                dropSource startDragIn:self at:(x@y)
-            ]
-        ].
-        ^ self
+	(clickPos dist:(x@y)) >= 5.0 ifTrue:[
+	    dragIsActive := false.
+
+	    self hasSelection ifTrue:[
+		dropSource startDragIn:self at:(x@y)
+	    ]
+	].
+	^ self
     ].
 
     "is it the select or 1-button ?"
@@ -1303,29 +1303,29 @@
     "if moved outside of view, start autoscroll"
 
     ((y < 0) and:[firstLineShown ~~ 0]) ifTrue:[
-        self compressMotionEvents:false.
-        self startAutoScrollUp:y negated.
-        ^ self
+	self compressMotionEvents:false.
+	self startAutoScrollUp:y negated.
+	^ self
     ].
     (y > height) ifTrue:[
-        self compressMotionEvents:false.
-        self startAutoScrollDown:(y - height).
-        ^ self
+	self compressMotionEvents:false.
+	self startAutoScrollDown:(y - height).
+	^ self
     ].
     ((x < 0) and:[viewOrigin x ~~ 0]) ifTrue:[
-        self compressMotionEvents:false.
-        self startAutoScrollLeft:x.
-        ^ self
+	self compressMotionEvents:false.
+	self startAutoScrollLeft:x.
+	^ self
     ].
     (x > width) ifTrue:[
-        self compressMotionEvents:false.
-        self startAutoScrollRight:(x - width).
-        ^ self
+	self compressMotionEvents:false.
+	self startAutoScrollRight:(x - width).
+	^ self
     ].
 
     "move inside - stop autoscroll if any"
     autoScrollBlock notNil ifTrue:[
-        self stopScrollSelect
+	self stopScrollSelect
     ].
 
     self extendSelectionToX:x y:y.
@@ -1337,27 +1337,27 @@
     "multi-mouse-click - select word under pointer"
 
     (button == 1) ifTrue:[
-        clickPos := x @ y.
-
-        "/ The searchAction is mantained until a cut/replace or a search with a user selection is done
+	clickPos := x @ y.
+
+	"/ The searchAction is mantained until a cut/replace or a search with a user selection is done
 "/        self clearSearchAction.
 
-        clickCount notNil ifTrue:[
-            clickCount := clickCount + 1.
-            (clickCount == 2) ifTrue:[
-                self doubleClickX:x y:y
-            ] ifFalse:[
-                (clickCount == 3) ifTrue:[
-                    self tripleClickX:x y:y
-                ] ifFalse:[
-                    (clickCount == 4) ifTrue:[
-                        self quadClickX:x y:y
-                    ]
-                ]
-            ]
-        ]
+	clickCount notNil ifTrue:[
+	    clickCount := clickCount + 1.
+	    (clickCount == 2) ifTrue:[
+		self doubleClickX:x y:y
+	    ] ifFalse:[
+		(clickCount == 3) ifTrue:[
+		    self tripleClickX:x y:y
+		] ifFalse:[
+		    (clickCount == 4) ifTrue:[
+			self quadClickX:x y:y
+		    ]
+		]
+	    ]
+	]
     ] ifFalse:[
-        super buttonMultiPress:button x:x y:y
+	super buttonMultiPress:button x:x y:y
     ]
 
     "Modified: 11.9.1997 / 04:15:35 / cg"
@@ -1372,30 +1372,30 @@
     sensor       := self sensor.
 
     (button == 1) ifTrue:[
-        sensor shiftDown ifTrue:[
-            "mouse-click with shift - adding to selection"
-            self extendSelectionToX:x y:y.
-            ^ self
-        ].
-
-        clickVisibleLine := self visibleLineOfY:y.
-        clickPos := x @ y.
-        clickCol := self colOfX:x inVisibleLine:clickVisibleLine.
-        clickLine := self visibleLineToAbsoluteLine:clickVisibleLine.
-        clickStartLine := clickLine.
-        clickStartCol := clickCol.
-
-        (self canDrag 
-        and:[(self isInSelection:clickLine col:clickCol)
-        and:[UserPreferences current startTextDragWithControl not
-             or:[sensor ctrlDown]]]) ifTrue:[
-            dragIsActive := true
-        ] ifFalse:[
-            self unselect.
-        ].
-        clickCount := 1
+	sensor shiftDown ifTrue:[
+	    "mouse-click with shift - adding to selection"
+	    self extendSelectionToX:x y:y.
+	    ^ self
+	].
+
+	clickVisibleLine := self visibleLineOfY:y.
+	clickPos := x @ y.
+	clickCol := self colOfX:x inVisibleLine:clickVisibleLine.
+	clickLine := self visibleLineToAbsoluteLine:clickVisibleLine.
+	clickStartLine := clickLine.
+	clickStartCol := clickCol.
+
+	(self canDrag
+	and:[(self isInSelection:clickLine col:clickCol)
+	and:[UserPreferences current startTextDragWithControl not
+	     or:[sensor ctrlDown]]]) ifTrue:[
+	    dragIsActive := true
+	] ifFalse:[
+	    self unselect.
+	].
+	clickCount := 1
     ] ifFalse:[
-        super buttonPress:button x:x y:y
+	super buttonPress:button x:x y:y
     ]
 
     "Modified: / 20.5.1999 / 17:02:45 / cg"
@@ -1405,15 +1405,15 @@
     "mouse- button release - turn off autoScroll if any"
 
     (button == 1) ifTrue:[
-        autoScrollBlock notNil ifTrue:[
-            self stopScrollSelect
-        ].
-        dragIsActive ifTrue:[
-            self unselect
-        ].
-        clickPos := nil.
+	autoScrollBlock notNil ifTrue:[
+	    self stopScrollSelect
+	].
+	dragIsActive ifTrue:[
+	    self unselect
+	].
+	clickPos := nil.
     ] ifFalse:[
-        super buttonRelease:button x:x y:y
+	super buttonRelease:button x:x y:y
     ].
     dragIsActive := false.
 
@@ -1428,91 +1428,91 @@
     |sel ch scanCh matchCol scanCol fwdScan fwdSelect|
 
     (self st80SelectMode or:[ self sensor ctrlDown]) ifTrue:[
-        "/ st80 selects:
-        "/   if clicked right after a parenthesis -> select to matching parenthesis
-        "/   if clicked right after a quote -> select to matching quote (unless escaped ;-)
-        "/   if clicked at beginning of the line  -> select that line
-        "/   if clicked at the top of the text    -> select all
-        "/
-        clickCol == 1 ifTrue:[
-            clickLine == 1 ifTrue:[
-                self selectAll.
-                ^ self.
-            ].
-            self selectLineAtY:y.
-            selectStyle := #line.
-            ^ self
-        ].
-
-        matchCol := nil.
-        "/ see what is to the left of that character ...
-        clickCol > 1 ifTrue:[
-            ch := self characterAtLine:clickLine col:clickCol-1.
-            (self isOpeningParenthesis:ch) ifTrue:[
-                matchCol := clickCol - 1
-            ] ifFalse:[
-                ('"''|' includes:ch) ifTrue:[
-                    scanCol := clickCol - 1.
-                    fwdScan := true.
-                    scanCh := ch.    
-                ]
-            ]
-        ].
-        fwdSelect := true.
-        (matchCol isNil and:[scanCol isNil]) ifTrue:[
-            clickCol < (self listAt:clickLine) size ifTrue:[
-                ch := self characterAtLine:clickLine col:clickCol+1.
-                (self isClosingParenthesis:ch) ifTrue:[
-                    matchCol := clickCol + 1.
-                    fwdSelect := false.
-                ] ifFalse:[
-                    ('"''|' includes:ch) ifTrue:[
-                        scanCol := clickCol + 1.
-                        fwdScan := false.
-                        scanCh := ch.    
-                    ]
-                ]
-            ].
-        ].
-        matchCol notNil ifTrue:[
-            self 
-                searchForMatchingParenthesisFromLine:clickLine col:matchCol
-                ifFound:[:line :col | 
-                          self selectFromLine:clickLine col:matchCol+(fwdSelect ifTrue:1 ifFalse:-1)
-                                       toLine:line col:col-(fwdSelect ifTrue:1 ifFalse:-1)]
-                ifNotFound:[self showNotFound]
-                onError:[self beep]
-                openingCharacters:((parenthesisSpecification at:#open) , '([{')
-                closingCharacters:((parenthesisSpecification at:#close) , ')]}').
-            ^ self
-        ].
-        scanCol notNil ifTrue:[
-            "/ if its an EOL comment, do it differently
-            ch := self characterAtLine:clickLine col:clickCol.
-            ch == $/ ifTrue:[
-                self selectFromLine:clickLine col:clickCol+1 toLine:clickLine+1 col:0.
-                ^ self
-            ].
-
-            self 
-                scanFor:scanCh fromLine:clickLine col:scanCol forward:fwdScan
-                ifFound:[:line :col |
-                            |selStart selEnd|
-
-                            fwdScan ifTrue:[
-                                selStart := scanCol+1.
-                                selEnd := col-1.
-                            ] ifFalse:[
-                                selStart := scanCol-1.
-                                selEnd := col+1.
-                            ].
-                            self selectFromLine:clickLine col:selStart
-                                 toLine:line col:selEnd.
-                            ^ self
-                           ]
-                ifNotFound:[self showNotFound].
-            ^ self
-        ]
+	"/ st80 selects:
+	"/   if clicked right after a parenthesis -> select to matching parenthesis
+	"/   if clicked right after a quote -> select to matching quote (unless escaped ;-)
+	"/   if clicked at beginning of the line  -> select that line
+	"/   if clicked at the top of the text    -> select all
+	"/
+	clickCol == 1 ifTrue:[
+	    clickLine == 1 ifTrue:[
+		self selectAll.
+		^ self.
+	    ].
+	    self selectLineAtY:y.
+	    selectStyle := #line.
+	    ^ self
+	].
+
+	matchCol := nil.
+	"/ see what is to the left of that character ...
+	clickCol > 1 ifTrue:[
+	    ch := self characterAtLine:clickLine col:clickCol-1.
+	    (self isOpeningParenthesis:ch) ifTrue:[
+		matchCol := clickCol - 1
+	    ] ifFalse:[
+		('"''|' includes:ch) ifTrue:[
+		    scanCol := clickCol - 1.
+		    fwdScan := true.
+		    scanCh := ch.
+		]
+	    ]
+	].
+	fwdSelect := true.
+	(matchCol isNil and:[scanCol isNil]) ifTrue:[
+	    clickCol < (self listAt:clickLine) size ifTrue:[
+		ch := self characterAtLine:clickLine col:clickCol+1.
+		(self isClosingParenthesis:ch) ifTrue:[
+		    matchCol := clickCol + 1.
+		    fwdSelect := false.
+		] ifFalse:[
+		    ('"''|' includes:ch) ifTrue:[
+			scanCol := clickCol + 1.
+			fwdScan := false.
+			scanCh := ch.
+		    ]
+		]
+	    ].
+	].
+	matchCol notNil ifTrue:[
+	    self
+		searchForMatchingParenthesisFromLine:clickLine col:matchCol
+		ifFound:[:line :col |
+			  self selectFromLine:clickLine col:matchCol+(fwdSelect ifTrue:1 ifFalse:-1)
+				       toLine:line col:col-(fwdSelect ifTrue:1 ifFalse:-1)]
+		ifNotFound:[self showNotFound]
+		onError:[self beep]
+		openingCharacters:((parenthesisSpecification at:#open) , '([{')
+		closingCharacters:((parenthesisSpecification at:#close) , ')]}').
+	    ^ self
+	].
+	scanCol notNil ifTrue:[
+	    "/ if its an EOL comment, do it differently
+	    ch := self characterAtLine:clickLine col:clickCol.
+	    ch == $/ ifTrue:[
+		self selectFromLine:clickLine col:clickCol+1 toLine:clickLine+1 col:0.
+		^ self
+	    ].
+
+	    self
+		scanFor:scanCh fromLine:clickLine col:scanCol forward:fwdScan
+		ifFound:[:line :col |
+			    |selStart selEnd|
+
+			    fwdScan ifTrue:[
+				selStart := scanCol+1.
+				selEnd := col-1.
+			    ] ifFalse:[
+				selStart := scanCol-1.
+				selEnd := col+1.
+			    ].
+			    self selectFromLine:clickLine col:selStart
+				 toLine:line col:selEnd.
+			    ^ self
+			   ]
+		ifNotFound:[self showNotFound].
+	    ^ self
+	]
     ].
 
     self selectWordAtX:x y:y.
@@ -1520,66 +1520,66 @@
     "
      special - if clicked on a parenthesis, select to matching
     "
-    ((sel := self selection) size == 1 
+    ((sel := self selection) size == 1
     and:[(sel := sel at:1) size == 1]) ifTrue:[
-        ch := sel at:1.
-
-        ((self isOpeningParenthesis:ch)
-        or:[ (self isClosingParenthesis:ch) ]) ifTrue:[
-            self 
-                searchForMatchingParenthesisFromLine:selectionStartLine col:selectionStartCol
-                ifFound:[:line :col | 
-                              |prevLine prevCol moveBack pos1|
-
-                              prevLine := firstLineShown.
-                              prevCol := viewOrigin x.
-                              self selectFromLine:selectionStartLine col:selectionStartCol
-                                           toLine:line col:col.
-
-                              self sensor ctrlDown ifFalse:[
-                                  "/ undo scroll operation ...
-                                  self withCursor:Cursor eye do:[
-                                      |delayCount|
-
-                                      moveBack := false.
-                                      (self isClosingParenthesis:ch) ifTrue:[
-                                           (firstLineShown ~~ prevLine or:[prevCol ~~ viewOrigin x]) ifTrue:[
-                                               moveBack := true
-                                           ] 
-                                      ] ifFalse:[
-                                           selectionEndLine > (firstLineShown + nFullLinesShown) ifTrue:[
-                                               self makeLineVisible:selectionEndLine.
-                                               moveBack := true
-                                           ]
-                                      ].
-                                      moveBack ifTrue:[
-                                           delayCount  := 0.
-                                           pos1 := x@y. 
-                                           self invalidateRepairNow:true.
-                                           Delay waitForSeconds:MatchDelayTime. 
-                                           delayCount := delayCount + MatchDelayTime. 
-                                           [self sensor hasUserEventFor:self] whileFalse:[
-                                                Delay waitForSeconds:MatchDelayTime / 2.
-                                                delayCount := delayCount + (MatchDelayTime / 2). 
-                                                delayCount > 2 ifTrue:[
-                                                    self cursor:Cursor eyeClosed.
-                                                ].
-                                                delayCount >= 2.3 ifTrue:[
-                                                    self cursor:Cursor eye.
-                                                    delayCount := 0.
-                                                ]
-                                           ].
-                                           self scrollToLine:prevLine; scrollToCol:prevCol.
-                                      ].
-                                  ]
-                              ]
-                          ]
-                ifNotFound:[self showNotFound]
-                onError:[self beep]
-                openingCharacters:((parenthesisSpecification at:#open) ", '([{'")
-                closingCharacters:((parenthesisSpecification at:#close) ", ')]}'").
-            selectStyle := nil
-        ]
+	ch := sel at:1.
+
+	((self isOpeningParenthesis:ch)
+	or:[ (self isClosingParenthesis:ch) ]) ifTrue:[
+	    self
+		searchForMatchingParenthesisFromLine:selectionStartLine col:selectionStartCol
+		ifFound:[:line :col |
+			      |prevLine prevCol moveBack pos1|
+
+			      prevLine := firstLineShown.
+			      prevCol := viewOrigin x.
+			      self selectFromLine:selectionStartLine col:selectionStartCol
+					   toLine:line col:col.
+
+			      self sensor ctrlDown ifFalse:[
+				  "/ undo scroll operation ...
+				  self withCursor:Cursor eye do:[
+				      |delayCount|
+
+				      moveBack := false.
+				      (self isClosingParenthesis:ch) ifTrue:[
+					   (firstLineShown ~~ prevLine or:[prevCol ~~ viewOrigin x]) ifTrue:[
+					       moveBack := true
+					   ]
+				      ] ifFalse:[
+					   selectionEndLine > (firstLineShown + nFullLinesShown) ifTrue:[
+					       self makeLineVisible:selectionEndLine.
+					       moveBack := true
+					   ]
+				      ].
+				      moveBack ifTrue:[
+					   delayCount  := 0.
+					   pos1 := x@y.
+					   self invalidateRepairNow:true.
+					   Delay waitForSeconds:MatchDelayTime.
+					   delayCount := delayCount + MatchDelayTime.
+					   [self sensor hasUserEventFor:self] whileFalse:[
+						Delay waitForSeconds:MatchDelayTime / 2.
+						delayCount := delayCount + (MatchDelayTime / 2).
+						delayCount > 2 ifTrue:[
+						    self cursor:Cursor eyeClosed.
+						].
+						delayCount >= 2.3 ifTrue:[
+						    self cursor:Cursor eye.
+						    delayCount := 0.
+						]
+					   ].
+					   self scrollToLine:prevLine; scrollToCol:prevCol.
+				      ].
+				  ]
+			      ]
+			  ]
+		ifNotFound:[self showNotFound]
+		onError:[self beep]
+		openingCharacters:((parenthesisSpecification at:#open) ", '([{'")
+		closingCharacters:((parenthesisSpecification at:#close) ", ')]}'").
+	    selectStyle := nil
+	]
     ].
 
     "
@@ -1588,14 +1588,14 @@
     wordStartLine := selectionStartLine.
     wordEndLine := selectionEndLine.
     selectStyle == #wordLeft ifTrue:[
-        wordStartCol := selectionStartCol + 1
+	wordStartCol := selectionStartCol + 1
     ] ifFalse:[
-        wordStartCol := selectionStartCol.
+	wordStartCol := selectionStartCol.
     ].
     selectStyle == #wordRight ifTrue:[
-        wordEndCol := selectionEndCol - 1
+	wordEndCol := selectionEndCol - 1
     ] ifFalse:[
-        wordEndCol := selectionEndCol
+	wordEndCol := selectionEndCol
     ]
 
     "Created: / 11-09-1997 / 04:12:55 / cg"
@@ -1605,124 +1605,124 @@
 extendSelectionToX:x y:y
     "mouse-move while button was pressed - handle selection changes"
 
-    |movedVisibleLine movedLine movedCol 
-     movedUp 
+    |movedVisibleLine movedLine movedCol
+     movedUp
      oldStartLine oldEndLine oldStartCol oldEndCol|
 
     movedVisibleLine := self visibleLineOfY:y.
     movedLine := self visibleLineToAbsoluteLine:movedVisibleLine.
 
     (x < leftMargin) ifTrue:[
-        movedCol := 0
+	movedCol := 0
     ] ifFalse:[
-        movedCol := self colOfX:x inVisibleLine:movedVisibleLine
+	movedCol := self colOfX:x inVisibleLine:movedVisibleLine
     ].
     y < 0 ifTrue:[
-        movedCol := 0
+	movedCol := 0
     ].
     ((movedLine == clickLine) and:[movedCol == clickCol]) ifTrue:[
-        selectionStartLine notNil ifTrue:[
-            ^ self
-        ].
-        (clickPos isNil 
-        or:[(clickPos x - x) abs < 3 
-            and:[(clickPos y - y) abs < 3]]) ifTrue:[
-            ^ self
-        ].
-        selectionStartLine := clickLine.
-        selectionStartCol := clickCol.
-        selectionEndLine := selectionStartLine.
-        selectionEndCol := selectionStartCol.
-
-        oldStartLine := selectionStartLine.
-        oldEndLine := selectionEndLine.
-        oldStartCol := selectionStartCol.
-        oldEndCol := selectionEndCol-1.
+	selectionStartLine notNil ifTrue:[
+	    ^ self
+	].
+	(clickPos isNil
+	or:[(clickPos x - x) abs < 3
+	    and:[(clickPos y - y) abs < 3]]) ifTrue:[
+	    ^ self
+	].
+	selectionStartLine := clickLine.
+	selectionStartCol := clickCol.
+	selectionEndLine := selectionStartLine.
+	selectionEndCol := selectionStartCol.
+
+	oldStartLine := selectionStartLine.
+	oldEndLine := selectionEndLine.
+	oldStartCol := selectionStartCol.
+	oldEndCol := selectionEndCol-1.
     ] ifFalse:[
-        selectionStartLine isNil ifTrue:[
-            selectionStartLine := selectionEndLine := clickLine.
-            selectionStartCol := selectionEndCol := clickCol.
-        ].
-        oldStartLine := selectionStartLine.
-        oldEndLine := selectionEndLine.
-        oldStartCol := selectionStartCol.
-        oldEndCol := selectionEndCol.
+	selectionStartLine isNil ifTrue:[
+	    selectionStartLine := selectionEndLine := clickLine.
+	    selectionStartCol := selectionEndCol := clickCol.
+	].
+	oldStartLine := selectionStartLine.
+	oldEndLine := selectionEndLine.
+	oldStartCol := selectionStartCol.
+	oldEndCol := selectionEndCol.
     ].
     oldEndLine isNil ifTrue:[
-        oldEndLine := selectionEndLine ? clickLine ? movedLine.
+	oldEndLine := selectionEndLine ? clickLine ? movedLine.
     ].
     oldEndCol isNil ifTrue:[
-        oldEndCol := selectionEndCol ? clickCol.
+	oldEndCol := selectionEndCol ? clickCol.
     ].
 
     "find out if we are before or after initial click"
     movedUp := false.
     clickStartLine isNil ifTrue:[
-        clickStartLine := movedLine.
+	clickStartLine := movedLine.
     ].
     clickStartCol isNil ifTrue:[
-        clickStartCol := movedCol.
+	clickStartCol := movedCol.
     ].
 
     (movedLine < clickStartLine) ifTrue:[
-        movedUp := true
+	movedUp := true
     ] ifFalse:[
-        (movedLine == clickStartLine) ifTrue:[
-            (movedCol < clickStartCol) ifTrue:[
-                movedUp := true
-            ]
-        ]
+	(movedLine == clickStartLine) ifTrue:[
+	    (movedCol < clickStartCol) ifTrue:[
+		movedUp := true
+	    ]
+	]
     ].
 
     movedUp ifTrue:[
-        "change selectionStart"
-        selectionStartCol := movedCol.
-        selectionStartLine := movedLine.
-        selectionEndCol := clickStartCol.
-        selectionEndLine := clickStartLine.
-        selectStyle notNil ifTrue:[
-            selectionEndCol := wordEndCol.
-            selectionEndLine := wordEndLine.
-        ]
+	"change selectionStart"
+	selectionStartCol := movedCol.
+	selectionStartLine := movedLine.
+	selectionEndCol := clickStartCol.
+	selectionEndLine := clickStartLine.
+	selectStyle notNil ifTrue:[
+	    selectionEndCol := wordEndCol.
+	    selectionEndLine := wordEndLine.
+	]
     ] ifFalse:[
-        "change selectionEnd"
-        selectionEndCol := movedCol.
-        selectionEndLine := movedLine.
-        selectionStartCol := clickStartCol.
-        selectionStartLine := clickStartLine.
-        selectStyle notNil ifTrue:[
-            selectionStartCol := wordStartCol.
-            selectionStartLine := wordStartLine.
-        ]
+	"change selectionEnd"
+	selectionEndCol := movedCol.
+	selectionEndLine := movedLine.
+	selectionStartCol := clickStartCol.
+	selectionStartLine := clickStartLine.
+	selectStyle notNil ifTrue:[
+	    selectionStartCol := wordStartCol.
+	    selectionStartLine := wordStartLine.
+	]
     ].
 
     selectionStartLine isNil ifTrue:[^ self].
 
     (selectionStartCol == 0) ifTrue:[
-        selectionStartCol := 1
+	selectionStartCol := 1
     ].
 
     "
      if in word-select, just catch the rest of the word
     "
     (selectStyle notNil and:[selectStyle startsWith:'word']) ifTrue:[
-        movedUp ifTrue:[
-            selectionStartCol := self findBeginOfWordAtLine:selectionStartLine col:selectionStartCol
-        ] ifFalse:[
-            selectionEndCol := self findEndOfWordAtLine:selectionEndLine col:selectionEndCol.
-            selectionEndCol == 0 ifTrue:[
-                selectionEndLine := selectionEndLine + 1
-            ]
-        ].
+	movedUp ifTrue:[
+	    selectionStartCol := self findBeginOfWordAtLine:selectionStartLine col:selectionStartCol
+	] ifFalse:[
+	    selectionEndCol := self findEndOfWordAtLine:selectionEndLine col:selectionEndCol.
+	    selectionEndCol == 0 ifTrue:[
+		selectionEndLine := selectionEndLine + 1
+	    ]
+	].
     ].
 
     selectStyle == #line ifTrue:[
-        movedUp ifTrue:[
-            selectionStartCol := 1.
-        ] ifFalse:[
-            selectionEndCol := 0.
-            selectionEndLine := selectionEndLine + 1
-        ]
+	movedUp ifTrue:[
+	    selectionStartCol := 1.
+	] ifFalse:[
+	    selectionEndCol := 0.
+	    selectionEndLine := selectionEndLine + 1
+	]
     ].
 
     self validateNewSelection.
@@ -1733,32 +1733,32 @@
 "/    self clearSearchAction.
 
     (oldStartLine == selectionStartLine) ifTrue:[
-        (oldStartCol ~~ selectionStartCol) ifTrue:[
-            self redrawLine:oldStartLine 
-                       from:((selectionStartCol min:oldStartCol) max:1)
-                         to:((selectionStartCol max:oldStartCol) max:1)
-        ]
+	(oldStartCol ~~ selectionStartCol) ifTrue:[
+	    self redrawLine:oldStartLine
+		       from:((selectionStartCol min:oldStartCol) max:1)
+			 to:((selectionStartCol max:oldStartCol) max:1)
+	]
     ] ifFalse:[
-        self redrawFromLine:(oldStartLine?selectionStartLine min:selectionStartLine)
-                         to:(oldStartLine?selectionStartLine max:selectionStartLine)
+	self redrawFromLine:(oldStartLine?selectionStartLine min:selectionStartLine)
+			 to:(oldStartLine?selectionStartLine max:selectionStartLine)
     ].
 
     (oldEndLine == selectionEndLine) ifTrue:[
-        (oldEndCol notNil and:[oldEndCol ~~ selectionEndCol]) ifTrue:[
-            self redrawLine:oldEndLine 
-                       from:((selectionEndCol min:oldEndCol) max:1)
-                         to:((selectionEndCol max:oldEndCol) max:1)
-        ]
+	(oldEndCol notNil and:[oldEndCol ~~ selectionEndCol]) ifTrue:[
+	    self redrawLine:oldEndLine
+		       from:((selectionEndCol min:oldEndCol) max:1)
+			 to:((selectionEndCol max:oldEndCol) max:1)
+	]
     ] ifFalse:[
-        selectionEndLine isNil ifTrue:[
-            selectionStartLine := nil.
-            self redraw.
-        ] ifFalse:[
-            (selectionStartLine notNil) ifTrue:[
-                self redrawFromLine:(oldEndLine min:selectionEndLine)
-                                 to:(oldEndLine max:selectionEndLine)
-            ]
-        ]
+	selectionEndLine isNil ifTrue:[
+	    selectionStartLine := nil.
+	    self redraw.
+	] ifFalse:[
+	    (selectionStartLine notNil) ifTrue:[
+		self redrawFromLine:(oldEndLine min:selectionEndLine)
+				 to:(oldEndLine max:selectionEndLine)
+	    ]
+	]
     ].
     clickLine := movedLine.
     clickCol := movedCol
@@ -1771,8 +1771,8 @@
     "handle some keyboard input (there is not much to be done here)"
 
     <resource: #keyboard (#Find #Copy #FindNext #FindPrev #FindAgain
-                          #GotoLine #SelectAll #SaveAs #Print
-                          #'F*' #'f*' #ZoomIn #ZoomOut)>
+			  #GotoLine #SelectAll #SaveAs #Print
+			  #'F*' #'f*' #ZoomIn #ZoomOut)>
 
     (key == #Find) ifTrue:[self search. ^self].
     (key == #Copy) ifTrue:[self copySelection. ^self].
@@ -1790,21 +1790,21 @@
     (key == #ZoomIn or:[key == #ZoomOut]) ifTrue:[ self fontLargerOrSmaller:(key == #ZoomIn) ].
 
     "
-     shift-Fn defines a key-sequence 
+     shift-Fn defines a key-sequence
      Fn       pastes that sequence
      cmd-Fn   performs a 'doIt' on the sequence (Workspaces only)
 
      (see EditTextView>>keyPress:x:y and Workspace>>keyPress:x:y)
     "
     (key size > 1 and:[(key at:1) asLowercase == $f]) ifTrue:[
-        (('[fF][0-9]' match:key)
-        or:['[fF][0-9][0-9]' match:key]) ifTrue:[
-            self sensor shiftDown ifTrue:[
-                UserPreferences current functionKeySequences
-                    at:key put:(self selection)
-            ].
-            ^ self
-        ].
+	(('[fF][0-9]' match:key)
+	or:['[fF][0-9][0-9]' match:key]) ifTrue:[
+	    self sensor shiftDown ifTrue:[
+		UserPreferences current functionKeySequences
+		    at:key put:(self selection)
+	    ].
+	    ^ self
+	].
     ].
 
     super keyPress:key x:x y:y
@@ -1813,7 +1813,7 @@
     "Modified: / 10-03-2012 / 09:40:01 / cg"
 !
 
-mapped 
+mapped
     super mapped.
     selectionFgColor := selectionFgColor onDevice:device.
     selectionBgColor := selectionBgColor onDevice:device.
@@ -1860,21 +1860,21 @@
     selectionFgColor isNil ifTrue:[selectionFgColor := bgColor].
     selectionBgColor := DefaultSelectionBackgroundColor.
     selectionBgColor isNil ifTrue:[
-        device hasColors ifTrue:[
-            DefaultSelectionForegroundColor isNil ifTrue:[
-                selectionFgColor := fgColor
-            ].
-            selectionBgColor := Color green
-        ] ifFalse:[
-            device hasGrayscales ifTrue:[
-                DefaultSelectionForegroundColor isNil ifTrue:[
-                    selectionFgColor := fgColor
-                ].
-                selectionBgColor := Color grey
-            ] ifFalse:[
-                selectionBgColor := fgColor
-            ]
-        ]
+	device hasColors ifTrue:[
+	    DefaultSelectionForegroundColor isNil ifTrue:[
+		selectionFgColor := fgColor
+	    ].
+	    selectionBgColor := Color green
+	] ifFalse:[
+	    device hasGrayscales ifTrue:[
+		DefaultSelectionForegroundColor isNil ifTrue:[
+		    selectionFgColor := fgColor
+		].
+		selectionBgColor := Color grey
+	    ] ifFalse:[
+		selectionBgColor := fgColor
+	    ]
+	]
     ].
 
     "Modified: / 22-01-1997 / 11:57:53 / cg"
@@ -1888,7 +1888,7 @@
     dragIsActive     := false.
 
     parenthesisSpecification isNil ifTrue:[
-        parenthesisSpecification := DefaultParenthesisSpecification.
+	parenthesisSpecification := DefaultParenthesisSpecification.
     ].
 
     "I handle menus myself"
@@ -1912,22 +1912,22 @@
     filename := aFileName asFilename.
 
     (FileStream userInitiatedFileSaveQuerySignal queryWith:filename) ifFalse:[
-        msg := resources string:'Refused to append to file ''%1'' !!' with:filename name.
-        self warn:(msg , '\\(ST/X internal permission check)' ) withCRs.
-        ^ self
+	msg := resources string:'Refused to append to file ''%1'' !!' with:filename name.
+	self warn:(msg , '\\(ST/X internal permission check)' ) withCRs.
+	^ self
     ].
 
     [
-        aStream := filename appendingWriteStream.
-        [
-            self fileOutContentsOn:aStream compressTabs:true encoding:externalEncoding.
-        ] ensure:[ 
-            aStream close.
-        ].
-        contentsWasSaved := true
+	aStream := filename appendingWriteStream.
+	[
+	    self fileOutContentsOn:aStream compressTabs:true encoding:externalEncoding.
+	] ensure:[
+	    aStream close.
+	].
+	contentsWasSaved := true
     ] on:FileStream openErrorSignal do:[:ex|
-        msg := resources string:'cannot append to file %1 !!' with:filename name.
-        self warn:(msg , '\\(' , FileStream lastErrorString , ')' ) withCRs
+	msg := resources string:'cannot append to file %1 !!' with:filename name.
+	self warn:(msg , '\\(' , FileStream lastErrorString , ')' ) withCRs
     ]
 
     "Modified: / 27-07-2012 / 09:41:18 / cg"
@@ -1940,7 +1940,7 @@
 
     newFont := FontPanel fontFromUserInitial:font.
     newFont notNil ifTrue:[
-        self font:newFont.
+	self font:newFont.
     ]
 
     "Modified: 27.2.1996 / 00:53:51 / cg"
@@ -1953,11 +1953,11 @@
 
     text := self selection.
     text notNil ifTrue:[
-        self unselect.
-
-        "/ forget any emphasis ...
-        text := text collect:[:l | l isNil ifTrue:[l] ifFalse:[l string]].
-        self setClipboardText:text.
+	self unselect.
+
+	"/ forget any emphasis ...
+	text := text collect:[:l | l isNil ifTrue:[l] ifFalse:[l string]].
+	self setClipboardText:text.
     ]
 
     "Modified: 17.5.1996 / 08:57:54 / cg"
@@ -1979,19 +1979,19 @@
     list isNil ifTrue:[^ self].
 
     self withWaitCursorDo:[
-        printStream := Printer new.
-        printStream supportsContext ifTrue:[
-            printStream printerContext font:(self font).
-        ].
-
-        Printer writeErrorSignal handle:[:ex |
-            self warn:('error while printing:\\' 
-                        , ex description 
-                        , '\\(printing with: ' , (Printer printCommand) , ')') withCRs
-        ] do:[
-            self fileOutContentsOn:printStream.
-        ].
-        printStream close
+	printStream := Printer new.
+	printStream supportsContext ifTrue:[
+	    printStream printerContext font:(self font).
+	].
+
+	Printer writeErrorSignal handle:[:ex |
+	    self warn:('error while printing:\\'
+			, ex description
+			, '\\(printing with: ' , (Printer printCommand) , ')') withCRs
+	] do:[
+	    self fileOutContentsOn:printStream.
+	].
+	printStream close
     ].
 
     "Created: / 06-05-1996 / 16:11:26 / cg"
@@ -2007,21 +2007,21 @@
     |items m|
 
     items := #(
-                        ('Copy'          copySelection  Copy)
-                        ('-'             nil            )
-                        ('Search...'     search         Find)
-                        ('Goto Line...'  gotoLine       GotoLine)
-                        ('-'             nil            )
-                        ('Font...'       changeFont     )
-                        ('-'             nil            )
-                        ('Save As...'    save           SaveAs)
-                        ('Print'         doPrint        Print)
-                ).
+			('Copy'          copySelection  Copy)
+			('-'             nil            )
+			('Search...'     search         Find)
+			('Goto Line...'  gotoLine       GotoLine)
+			('-'             nil            )
+			('Font...'       changeFont     )
+			('-'             nil            )
+			('Save As...'    save           SaveAs)
+			('Print'         doPrint        Print)
+		).
 
     m := PopUpMenu itemList:items resources:resources.
 
     self hasSelectionForCopy ifFalse:[
-        m disable:#copySelection.
+	m disable:#copySelection.
     ].
     ^ m
 
@@ -2039,9 +2039,9 @@
 fontLargerOrSmaller:largerBoolean
     |newFont|
 
-    newFont := font size:(largerBoolean 
-                            ifTrue:[font size + 1] 
-                            ifFalse:[(font size-1) max:4]).
+    newFont := font size:(largerBoolean
+			    ifTrue:[font size + 1]
+			    ifFalse:[(font size-1) max:4]).
     self font:newFont.
 
     "Modified: / 27-02-1996 / 00:53:51 / cg"
@@ -2050,47 +2050,47 @@
 
 gotoLine
     "show a box to enter lineNumber for positioning;
-     The entered number may be prefixed by a + or -; 
+     The entered number may be prefixed by a + or -;
      in this case, the linenumber is taken relative to the current position."
 
     |l lineNumberBox input lineToGo relative|
 
     lineNumberBox :=
-        EnterBox
-           title:(resources string:'Line number (or +/- relativeNr):')
-           okText:(resources string:'Goto')
-           abortText:(resources string:'Cancel')
-           action:[:l | input := l].
+	EnterBox
+	   title:(resources string:'Line number (or +/- relativeNr):')
+	   okText:(resources string:'Goto')
+	   abortText:(resources string:'Cancel')
+	   action:[:l | input := l].
 
     l := self defaultForGotoLine.
     l notNil ifTrue:[
-        l := l printString
+	l := l printString
     ].
     lineNumberBox initialText:l .
     lineNumberBox label:(resources string:'Goto Line').
     lineNumberBox showAtPointer.
 
     input size > 0 ifTrue:[
-        input := input withoutSpaces.
-        input size > 0 ifTrue:[
-            (input startsWith:$+) ifTrue:[
-                relative := 1.
-            ] ifFalse:[
-                (input startsWith:$-) ifTrue:[
-                    relative := -1.
-                ].
-            ].
-            relative notNil ifTrue:[
-                input := input copyFrom:2.
-            ].
-            lineToGo := Integer readFromString:input onError:nil.
-            lineToGo notNil ifTrue:[
-                relative notNil ifTrue:[
-                    lineToGo := self currentLine + (lineToGo * relative)
-                ].
-                self gotoLine:lineToGo
-            ]
-        ]
+	input := input withoutSpaces.
+	input size > 0 ifTrue:[
+	    (input startsWith:$+) ifTrue:[
+		relative := 1.
+	    ] ifFalse:[
+		(input startsWith:$-) ifTrue:[
+		    relative := -1.
+		].
+	    ].
+	    relative notNil ifTrue:[
+		input := input copyFrom:2.
+	    ].
+	    lineToGo := Integer readFromString:input onError:nil.
+	    lineToGo notNil ifTrue:[
+		relative notNil ifTrue:[
+		    lineToGo := self currentLine + (lineToGo * relative)
+		].
+		self gotoLine:lineToGo
+	    ]
+	]
     ].
 
     "Modified: / 17.5.1998 / 20:07:59 / cg"
@@ -2101,15 +2101,15 @@
      and save contents into that file."
 
     Dialog
-        requestSaveFileName:(resources string:'Save contents in:') 
-        default:defaultFileNameForFileDialog 
-        fromDirectory:directoryForFileDialog 
-        action:[:fileName | self saveAs:fileName] 
-        appendAction:[:fileName | self appendTo:fileName]
+	requestSaveFileName:(resources string:'Save contents in:')
+	default:defaultFileNameForFileDialog
+	fromDirectory:directoryForFileDialog
+	action:[:fileName | self saveAs:fileName]
+	appendAction:[:fileName | self appendTo:fileName]
 !
 
 openSearchBoxAndSearch
-    "search for a string - show a box to enter searchpattern 
+    "search for a string - show a box to enter searchpattern
      - currently no regular expressions are handled."
 
     "
@@ -2120,9 +2120,9 @@
      replaceBooleanEnabledHolder replaceBooleanHolder replaceTextHolder|
 
     searchBarActionBlock notNil ifTrue:[
-        self resetVariablesBeforeNewSearch.
-        searchBarActionBlock value:#search value:self.
-        ^ self
+	self resetVariablesBeforeNewSearch.
+	searchBarActionBlock value:#search value:self.
+	^ self
     ].
 
     modal := (UserPreferences current searchDialogIsModal).   "/ thats experimental
@@ -2143,115 +2143,115 @@
     self setSearchPatternWithMatchEscapes: match.
 
     lastSearchPattern notNil ifTrue:[
-        initialString := lastSearchPattern.
+	initialString := lastSearchPattern.
     ].
 "/  No longer force the current selection to be the initialString
 "/    self hasSelectionWithinSingleLine ifTrue:[
 "/        initialString := self selection asString.
 "/    ].
     initialString isNil ifTrue:[
-        LastSearchPatterns size > 0 ifTrue:[
-            initialString := LastSearchPatterns first.
-        ]
+	LastSearchPatterns size > 0 ifTrue:[
+	    initialString := LastSearchPatterns first.
+	]
     ].
 
     initialString notNil ifTrue:[
-        patternHolder value:initialString.
+	patternHolder value:initialString.
     ].
 
-    fwd := true. 
+    fwd := true.
 
     doSearch := [:fwd |
-        |isVariableSearch pattern searchAction|
-
-        self resetVariablesBeforeNewSearch.
-
-        isVariableSearch := self searchVariableVisible 
-                                and:[searchVariableHolder value
-                                and:[selectedVariable notNil]].
-
-        isVariableSearch ifTrue:[
-            searchAction := [self searchVariableWithSyntaxElement:selectedVariable forward:fwd].
-        ] ifFalse:[
-            lastSearchWasVariableSearch := false.
-            LastSearchIgnoredCase := lastSearchIgnoredCase := (caseHolder value not).
-            LastSearchWasMatch := lastSearchWasMatch := matchHolder value.
-            pattern := patternHolder value.
-            pattern notEmptyOrNil ifTrue:[
-                searchAction := [
-                    self searchUsingSpec:(
-                        ListView::SearchSpec new
-                            pattern:pattern
-                            ignoreCase:lastSearchIgnoredCase 
-                            match: lastSearchWasMatch 
-                            variable: searchVariableHolder value 
-                            fullWord: searchFullWordHolder value 
-                            forward:fwd).
-                ]
-            ]
-        ].
-
-        replaceBooleanHolder value ifTrue:[
-            |selStart|
-
-            isVariableSearch ifTrue:[
-                "/ must replace from the end towards beginning,
-                "/ because syntax-elements do not update their position, when
-                "/ the text is changed (in replace).
-
-                selectedVariable := selectedVariable lastElementInChain.
-                self selectFromCharacterPosition:selectedVariable start to:selectedVariable stop.
-                searchAction := [selectedVariable := selectedVariable previousElement.
-                                 selectedVariable notNil ifTrue:[
-                                     self selectFromCharacterPosition:selectedVariable start to:selectedVariable stop.
-                                 ].
-                                 "/ self searchVariableWithSyntaxElement:selectedVariable forward:false
-                                ].
-            ].
-
-            selStart := self characterPositionOfSelection.
-            self replace:(replaceTextHolder value).
-
-            searchAction value.
-            [self characterPositionOfSelection ~= selStart] whileTrue:[
-                selStart := self characterPositionOfSelection.
-                self replace:(replaceTextHolder value).
-                searchAction value.
-            ]
-        ] ifFalse:[
-            searchAction value.
-        ].
+	|isVariableSearch pattern searchAction|
+
+	self resetVariablesBeforeNewSearch.
+
+	isVariableSearch := self searchVariableVisible
+				and:[searchVariableHolder value
+				and:[selectedVariable notNil]].
+
+	isVariableSearch ifTrue:[
+	    searchAction := [self searchVariableWithSyntaxElement:selectedVariable forward:fwd].
+	] ifFalse:[
+	    lastSearchWasVariableSearch := false.
+	    LastSearchIgnoredCase := lastSearchIgnoredCase := (caseHolder value not).
+	    LastSearchWasMatch := lastSearchWasMatch := matchHolder value.
+	    pattern := patternHolder value.
+	    pattern notEmptyOrNil ifTrue:[
+		searchAction := [
+		    self searchUsingSpec:(
+			ListView::SearchSpec new
+			    pattern:pattern
+			    ignoreCase:lastSearchIgnoredCase
+			    match: lastSearchWasMatch
+			    variable: searchVariableHolder value
+			    fullWord: searchFullWordHolder value
+			    forward:fwd).
+		]
+	    ]
+	].
+
+	replaceBooleanHolder value ifTrue:[
+	    |selStart|
+
+	    isVariableSearch ifTrue:[
+		"/ must replace from the end towards beginning,
+		"/ because syntax-elements do not update their position, when
+		"/ the text is changed (in replace).
+
+		selectedVariable := selectedVariable lastElementInChain.
+		self selectFromCharacterPosition:selectedVariable start to:selectedVariable stop.
+		searchAction := [selectedVariable := selectedVariable previousElement.
+				 selectedVariable notNil ifTrue:[
+				     self selectFromCharacterPosition:selectedVariable start to:selectedVariable stop.
+				 ].
+				 "/ self searchVariableWithSyntaxElement:selectedVariable forward:false
+				].
+	    ].
+
+	    selStart := self characterPositionOfSelection.
+	    self replace:(replaceTextHolder value).
+
+	    searchAction value.
+	    [self characterPositionOfSelection ~= selStart] whileTrue:[
+		selStart := self characterPositionOfSelection.
+		self replace:(replaceTextHolder value).
+		searchAction value.
+	    ]
+	] ifFalse:[
+	    searchAction value.
+	].
     ].
 
     bindings := IdentityDictionary new.
     bindings at:#searchPattern put:patternHolder.
     modal ifTrue:[
-        bindings at:#nextAction put:[searchBox doAccept.].
-        bindings at:#prevAction put:[fwd := false. searchBox doAccept.].
+	bindings at:#nextAction put:[searchBox doAccept.].
+	bindings at:#prevAction put:[fwd := false. searchBox doAccept.].
     ] ifFalse:[
-        bindings at:#nextAction put:[doSearch value:true.  "searchBox doAccept."].
-        bindings at:#prevAction put:[doSearch value:false. "fwd := false. searchBox doAccept."].
+	bindings at:#nextAction put:[doSearch value:true.  "searchBox doAccept."].
+	bindings at:#prevAction put:[doSearch value:false. "fwd := false. searchBox doAccept."].
     ].
     bindings at:#caseSensitive put:caseHolder.
     bindings at:#match put:matchHolder.
     bindings at:#patternList put:LastSearchPatterns.
 
     self supportsSyntaxElements ifFalse:[
-        bindings at:#searchVariableVisible put:false.
+	bindings at:#searchVariableVisible put:false.
     ] ifTrue:[
-        bindings at:#searchVariableVisible put:true.
-        selectedVariable := self syntaxElementForSelectedVariable.
-        bindings at:#searchVariableEnabled put:(selectedVariable notNil).
-        selectedVariable notNil ifTrue:[
-            bindings 
-                at:#stringWithVariableUnderCursorHolder 
-                put:('Variable ("%1")' bindWith:selectedVariable value).
-            searchVariableHolder value:true.
-        ] ifFalse:[
-            bindings 
-                at:#stringWithVariableUnderCursorHolder 
-                put:('Variable (none selected)').
-        ].
+	bindings at:#searchVariableVisible put:true.
+	selectedVariable := self syntaxElementForSelectedVariable.
+	bindings at:#searchVariableEnabled put:(selectedVariable notNil).
+	selectedVariable notNil ifTrue:[
+	    bindings
+		at:#stringWithVariableUnderCursorHolder
+		put:('Variable ("%1")' bindWith:selectedVariable value).
+	    searchVariableHolder value:true.
+	] ifFalse:[
+	    bindings
+		at:#stringWithVariableUnderCursorHolder
+		put:('Variable (none selected)').
+	].
     ].
     bindings at:#searchVariable put:searchVariableHolder.
 
@@ -2263,10 +2263,10 @@
     bindings at:#replaceTextHolder put:replaceTextHolder.
 
     modal ifTrue:[
-        searchBox := SimpleDialog new.
+	searchBox := SimpleDialog new.
     ] ifFalse:[
-        searchBox := ApplicationModel new.
-        searchBox createBuilder.
+	searchBox := ApplicationModel new.
+	searchBox createBuilder.
     ].
     searchBox resources:(self resources).
 
@@ -2280,21 +2280,21 @@
     (bldr componentAt:#cancelButton) cursor:(Cursor thumbsDown).
 
     modal ifTrue:[
-        searchBox openDialog.
-        searchBox accepted ifTrue:[ doSearch value:fwd ].
+	searchBox openDialog.
+	searchBox accepted ifTrue:[ doSearch value:fwd ].
     ] ifFalse:[
-        (bldr componentAt:#nextButton) isReturnButton:false.
-        (bldr componentAt:#cancelButton) 
-                label:(resources string:'Close');
-                action:[searchBox closeRequest].
-        "/ searchBox masterApplication:self application.
-        self topView beMaster.
-        searchBox window 
-                beSlave;
-                openInGroup:(self windowGroup).
-
-        "/ searchBox window open.
-        searchBox window assignKeyboardFocusToFirstInputField.
+	(bldr componentAt:#nextButton) isReturnButton:false.
+	(bldr componentAt:#cancelButton)
+		label:(resources string:'Close');
+		action:[searchBox closeRequest].
+	"/ searchBox masterApplication:self application.
+	self topView beMaster.
+	searchBox window
+		beSlave;
+		openInGroup:(self windowGroup).
+
+	"/ searchBox window open.
+	searchBox window assignKeyboardFocusToFirstInputField.
     ]
 
     "Modified: / 11-07-2006 / 11:18:38 / fm"
@@ -2302,7 +2302,7 @@
 !
 
 save
-    "save contents into a file 
+    "save contents into a file
      - ask user for filename using a fileSelectionBox."
 
     saveAction value
@@ -2310,7 +2310,7 @@
 
 saveAs:fileName
     "save the contents into a file named fileName"
- 
+
     ^ self saveAs:fileName doAppend:false
 !
 
@@ -2325,33 +2325,33 @@
     filename := aFilename asFilename.
 
     self withWriteCursorDo:[
-        |aStream|
-
-        (FileStream userInitiatedFileSaveQuerySignal queryWith:filename) ifFalse:[
-            msg := resources stringWithCRs:'Refused to write file ''%1'' !!\(ST/X internal permission check)' 
-                                with:filename name.
-        ] ifTrue:[
-            [
-                doAppend ifTrue:[
-                    aStream := filename appendingWriteStream.
-                ] ifFalse:[
-                    aStream := filename newReadWriteStream.
-                ].
-                self fileOutContentsOn:aStream compressTabs:true encoding:externalEncoding.
-                aStream close.
-                contentsWasSaved := true.
-                defaultFileNameForFileDialog := filename.
-            ] on:FileStream openErrorSignal do:[:ex|
-                msg := resources stringWithCRs:'Cannot write file ''%1'' !!\(%2)' 
-                                with:filename name
-                                with:FileStream lastErrorString.
-            ].
-        ].
+	|aStream|
+
+	(FileStream userInitiatedFileSaveQuerySignal queryWith:filename) ifFalse:[
+	    msg := resources stringWithCRs:'Refused to write file ''%1'' !!\(ST/X internal permission check)'
+				with:filename name.
+	] ifTrue:[
+	    [
+		doAppend ifTrue:[
+		    aStream := filename appendingWriteStream.
+		] ifFalse:[
+		    aStream := filename newReadWriteStream.
+		].
+		self fileOutContentsOn:aStream compressTabs:true encoding:externalEncoding.
+		aStream close.
+		contentsWasSaved := true.
+		defaultFileNameForFileDialog := filename.
+	    ] on:FileStream openErrorSignal do:[:ex|
+		msg := resources stringWithCRs:'Cannot write file ''%1'' !!\(%2)'
+				with:filename name
+				with:FileStream lastErrorString.
+	    ].
+	].
     ].
 
     msg notNil ifTrue:[
-        Dialog warn:msg.
-        ^ false
+	Dialog warn:msg.
+	^ false
     ].
     ^ true
 
@@ -2359,7 +2359,7 @@
 !
 
 search
-    "search for a string - show a box to enter searchpattern 
+    "search for a string - show a box to enter searchpattern
      - currently no regular expressions are handled."
 
     self openSearchBoxAndSearch
@@ -2368,27 +2368,27 @@
     "Modified: / 08-03-2012 / 14:03:10 / cg"
 !
 
-search:patternArg ignoreCase:ign forward:fwd 
+search:patternArg ignoreCase:ign forward:fwd
     "search for a string without matching"
 
-    self search:patternArg ignoreCase:ign match: false forward:fwd 
+    self search:patternArg ignoreCase:ign match: false forward:fwd
 !
 
-search:patternArg ignoreCase:ign match: match forward:fwd 
+search:patternArg ignoreCase:ign match: match forward:fwd
     |pattern|
 
     pattern := patternArg string.
     pattern notEmpty ifTrue:[
-        self rememberSearchPattern:pattern.
-        "/ LastSearchIgnoredCase := lastSearchIgnoredCase := ign.
-        "/ LastSearchWasMatch := match.
-        fwd ifFalse:[
-            lastSearchDirection := #backward.
-            self searchBwd:pattern ignoreCase:ign match: match.          "    backward search with match is not yet available  " 
-        ] ifTrue:[
-            lastSearchDirection := #forward.
-            self searchFwd:pattern ignoreCase:ign match: match.
-        ]
+	self rememberSearchPattern:pattern.
+	"/ LastSearchIgnoredCase := lastSearchIgnoredCase := ign.
+	"/ LastSearchWasMatch := match.
+	fwd ifFalse:[
+	    lastSearchDirection := #backward.
+	    self searchBwd:pattern ignoreCase:ign match: match.          "    backward search with match is not yet available  "
+	] ifTrue:[
+	    lastSearchDirection := #forward.
+	    self searchFwd:pattern ignoreCase:ign match: match.
+	]
     ]
 
     "Created: / 11-07-2006 / 11:18:04 / fm"
@@ -2400,11 +2400,11 @@
     "/ LastSearchIgnoredCase := lastSearchIgnoredCase := ign.
     "/ LastSearchWasMatch := match.
     aSearchSpec forward ifFalse:[
-        lastSearchDirection := #backward.
-        self searchBwdUsingSpec:aSearchSpec
+	lastSearchDirection := #backward.
+	self searchBwdUsingSpec:aSearchSpec
     ] ifTrue:[
-        lastSearchDirection := #forward.
-        self searchFwdUsingSpec:aSearchSpec
+	lastSearchDirection := #forward.
+	self searchFwdUsingSpec:aSearchSpec
     ]
 
     "Created: / 11-07-2006 / 11:18:04 / fm"
@@ -2427,26 +2427,26 @@
     |el el2|
 
     lastSearchWasVariableSearch := true.
-    el := fwd 
-        ifTrue:[syntaxElementForVariable nextElement] 
-        ifFalse:[syntaxElementForVariable previousElement].
+    el := fwd
+	ifTrue:[syntaxElementForVariable nextElement]
+	ifFalse:[syntaxElementForVariable previousElement].
 
     el notNil ifTrue:[
-        "bug workaround"
-        (el start = syntaxElementForVariable start) ifTrue:[
-            el2 := fwd 
-                ifTrue:[el nextElement] 
-                ifFalse:[el previousElement].
-            el2 notNil ifTrue:[
-                el := el2
-            ]
-        ].
+	"bug workaround"
+	(el start = syntaxElementForVariable start) ifTrue:[
+	    el2 := fwd
+		ifTrue:[el nextElement]
+		ifFalse:[el previousElement].
+	    el2 notNil ifTrue:[
+		el := el2
+	    ]
+	].
     ].
     el notNil ifTrue:[
-        self selectFromCharacterPosition:el start to:el stop.
-        self makeLineVisible:(self lineOfCharacterPosition:el start).
+	self selectFromCharacterPosition:el start to:el stop.
+	self makeLineVisible:(self lineOfCharacterPosition:el start).
     ] ifFalse:[
-        self showNotFound
+	self showNotFound
     ].
 
     "Created: / 08-03-2012 / 14:08:20 / cg"
@@ -2481,19 +2481,19 @@
 fileOutContentsOn:aStream
     "save contents on a stream, replacing leading spaces by tab-characters."
 
-    self 
-        fileOutContentsOn:aStream 
-        compressTabs:true
+    self
+	fileOutContentsOn:aStream
+	compressTabs:true
 !
 
 fileOutContentsOn:aStream compressTabs:compressTabs
     "save contents on a stream. If compressTabs is true,
      leading spaces will be replaced by tab-characters in the output."
 
-    self 
-        fileOutContentsOn:aStream 
-        compressTabs:compressTabs 
-        encoding:nil
+    self
+	fileOutContentsOn:aStream
+	compressTabs:compressTabs
+	encoding:nil
 !
 
 fileOutContentsOn:aStream compressTabs:compressTabs encoding:encodingSymOrNil
@@ -2506,43 +2506,43 @@
 
     encoder := CharacterEncoder encoderToEncodeFrom:characterEncoding into:encodingSymOrNil.
     encoder isNullEncoder ifTrue:[
-        (list contains:[:lineOrNil|
-                            |s|
-                            lineOrNil notNil
-                            and:[(s := lineOrNil string string) isWideString
-                            and:[s asSingleByteStringIfPossible isWideString]]
-                       ]
-        ) ifTrue:[
-            (Dialog confirm:'The text contains non-8bit characters. Encode as UTF8?') ifFalse:[
-                ^ self
-            ]
-        ].
-        encoder := CharacterEncoder encoderToEncodeFrom:#unicode into:#utf8
+	(list contains:[:lineOrNil|
+			    |s|
+			    lineOrNil notNil
+			    and:[(s := lineOrNil string string) isWideString
+			    and:[s asSingleByteStringIfPossible isWideString]]
+		       ]
+	) ifTrue:[
+	    (Dialog confirm:'The text contains non-8bit characters. Encode as UTF8?') ifFalse:[
+		^ self
+	    ]
+	].
+	encoder := CharacterEncoder encoderToEncodeFrom:#unicode into:#utf8
     ].
 
     aStream isFileStream ifTrue:[
-        "on some systems, writing linewise is very slow (via NFS)
-         therefore we convert to a string and write it in big chunks.
-         To avoid creating huge strings, we do it in blocks of 1000 lines,
-         limiting temporary string creation to about 50-80k.
-        "
-        startNr := 1.
-        nLines := list size.
-        [startNr <= nLines] whileTrue:[
-            string := list asStringWithCRsFrom:startNr 
-                                            to:((startNr + 1000) min:nLines)
-                                  compressTabs:compressTabs.
-            aStream nextPutAll:(encoder encodeString:string string).
-            startNr := startNr + 1000 + 1.
-        ].
+	"on some systems, writing linewise is very slow (via NFS)
+	 therefore we convert to a string and write it in big chunks.
+	 To avoid creating huge strings, we do it in blocks of 1000 lines,
+	 limiting temporary string creation to about 50-80k.
+	"
+	startNr := 1.
+	nLines := list size.
+	[startNr <= nLines] whileTrue:[
+	    string := list asStringWithCRsFrom:startNr
+					    to:((startNr + 1000) min:nLines)
+				  compressTabs:compressTabs.
+	    aStream nextPutAll:(encoder encodeString:string string).
+	    startNr := startNr + 1000 + 1.
+	].
     ] ifFalse:[
-        list do:[:aLine |
-            aLine notNil ifTrue:[
-                aStream nextPutLine:(encoder encodeString:aLine).
-            ] ifFalse:[
-                aStream cr.
-            ]
-        ]
+	list do:[:aLine |
+	    aLine notNil ifTrue:[
+		aStream nextPutLine:(encoder encodeString:aLine).
+	    ] ifFalse:[
+		aStream cr.
+	    ]
+	]
     ]
 
     "Modified: 8.6.1996 / 11:50:46 / cg"
@@ -2561,10 +2561,10 @@
     boldFont := font asBold onDevice:device.
 
     includesNonStrings == true ifTrue:[
-        "/ for now, we do not support variable height entries ...
-        fontHeight := list first heightOn:self
+	"/ for now, we do not support variable height entries ...
+	fontHeight := list first heightOn:self
     ] ifFalse:[
-        fontHeight := font maxHeight max:(italicFont maxHeight max:(boldFont maxHeight)).
+	fontHeight := font maxHeight max:(italicFont maxHeight max:(boldFont maxHeight)).
     ].
     fontHeight := fontHeight + lineSpacing.
     fontAscent := font maxAscent max:(italicFont maxAscent max:(boldFont maxAscent)).
@@ -2599,15 +2599,15 @@
     nRemembered := NumRememberedSearchPatterns ? 20.
 
     LastSearchPatterns isNil ifTrue:[
-        LastSearchPatterns := OrderedCollection new.
+	LastSearchPatterns := OrderedCollection new.
     ].
     "/ move to top or addFirst
     (LastSearchPatterns includes:patternString) ifTrue:[
-        LastSearchPatterns remove:patternString.
+	LastSearchPatterns remove:patternString.
     ] ifFalse:[
-        LastSearchPatterns size > nRemembered ifTrue:[
-            LastSearchPatterns removeLast
-        ]
+	LastSearchPatterns size > nRemembered ifTrue:[
+	    LastSearchPatterns removeLast
+	]
     ].
     LastSearchPatterns addFirst:patternString.
 
@@ -2617,12 +2617,12 @@
 removeTrailingWhitespace
     list isNil ifTrue:[^self].
     list keysAndValuesDo:[:lineNR :line |
-        |l|
-
-        line notNil ifTrue:[
-            l := line withoutTrailingSeparators.
-            list at:lineNR put:l.
-        ]
+	|l|
+
+	line notNil ifTrue:[
+	    l := line withoutTrailingSeparators.
+	    list at:lineNR put:l.
+	]
     ].
 !
 
@@ -2647,7 +2647,7 @@
     selectionEndLine := firstLineShown + nFullLinesShown.
     selectionEndCol := 0.
     prevEndLine to:selectionEndLine do:[:lineNr |
-        self redrawLine:lineNr
+	self redrawLine:lineNr
     ].
     Processor addTimedBlock:autoScrollBlock afterSeconds:autoScrollDeltaT.
     self selectionChanged.
@@ -2685,11 +2685,11 @@
 
     endLine := self listLineToVisibleLine:selectionEndLine.
     endLine notNil ifTrue:[
-        firstVisibleCol := self colOfX:1 inVisibleLine:endLine.
-        selectionEndCol < firstVisibleCol ifTrue:[
-            "/ scrolling faster than selection advances...
-            selectionEndCol := firstVisibleCol
-        ].
+	firstVisibleCol := self colOfX:1 inVisibleLine:endLine.
+	selectionEndCol < firstVisibleCol ifTrue:[
+	    "/ scrolling faster than selection advances...
+	    selectionEndCol := firstVisibleCol
+	].
     ].
 
     self selectionChanged.
@@ -2716,7 +2716,7 @@
     selectionStartLine := firstLineShown.
     selectionStartCol := 1.
     selectionStartLine to:prevStartLine do:[:lineNr |
-        self redrawLine:lineNr
+	self redrawLine:lineNr
     ].
     Processor addTimedBlock:autoScrollBlock afterSeconds:autoScrollDeltaT.
     self selectionChanged.
@@ -2726,10 +2726,10 @@
     "stop auto scroll; deinstall timed-block"
 
     autoScrollBlock notNil ifTrue:[
-        Processor removeTimedBlock:autoScrollBlock.
-        self compressMotionEvents:true.
-        autoScrollBlock := nil.
-        autoScrollDeltaT := nil
+	Processor removeTimedBlock:autoScrollBlock.
+	self compressMotionEvents:true.
+	autoScrollBlock := nil.
+	autoScrollDeltaT := nil
     ]
 !
 
@@ -2737,14 +2737,14 @@
     "return the width in pixels for a scroll between firstLine and lastLine"
 
     selectionStartLine notNil ifTrue:[
-        "/ if there is a selection which covers multiple lines,
-        "/ we have to scroll the whole width (to include the selection-rectangle)
-
-        (lastLine < selectionStartLine) ifFalse:[
-            (firstLine > selectionEndLine) ifFalse:[
-                ^ width
-            ]
-        ].
+	"/ if there is a selection which covers multiple lines,
+	"/ we have to scroll the whole width (to include the selection-rectangle)
+
+	(lastLine < selectionStartLine) ifFalse:[
+	    (firstLine > selectionEndLine) ifFalse:[
+		^ width
+	    ]
+	].
     ].
     ^ super widthForScrollBetween:firstLine and:lastLine
 ! !
@@ -2772,11 +2772,11 @@
     "if there is a margin, clear it - a helper for selection drawing"
 
     (leftMargin ~~ 0) ifTrue:[
-        self paint:color.
-        self fillRectangleX:margin
-                          y:(self yOfVisibleLine:visLine)
-                      width:leftMargin
-                     height:fontHeight
+	self paint:color.
+	self fillRectangleX:margin
+			  y:(self yOfVisibleLine:visLine)
+		      width:leftMargin
+		     height:fontHeight
     ]
 
     "Created: 6.3.1996 / 14:22:55 / cg"
@@ -2784,39 +2784,39 @@
 
 drawSelectedFromVisibleLine:startVisLineNr to:endVisLineNr
     startVisLineNr to:endVisLineNr do:[:visLine |
-        self drawVisibleLineSelected:visLine 
+	self drawVisibleLineSelected:visLine
     ]
 !
 
-drawVisibleLineSelected:visLineNr 
-    self 
-        drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
-        inVisible:visLineNr 
-        with:self currentSelectionFgColor and:self currentSelectionBgColor
+drawVisibleLineSelected:visLineNr
+    self
+	drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
+	inVisible:visLineNr
+	with:self currentSelectionFgColor and:self currentSelectionBgColor
 !
 
 drawVisibleLineSelected:visLineNr col:col
     self
-        drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
-        inVisible:visLineNr 
-        col:col 
-        with:self currentSelectionFgColor and:self currentSelectionBgColor
+	drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
+	inVisible:visLineNr
+	col:col
+	with:self currentSelectionFgColor and:self currentSelectionBgColor
 !
 
 drawVisibleLineSelected:visLineNr from:selectionStartCol
-    self 
-        drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
-        inVisible:visLineNr 
-        from:selectionStartCol
-        with:self currentSelectionFgColor and:self currentSelectionBgColor.
+    self
+	drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
+	inVisible:visLineNr
+	from:selectionStartCol
+	with:self currentSelectionFgColor and:self currentSelectionBgColor.
 !
 
 drawVisibleLineSelected:visLineNr from:startCol to:endCol
-    self 
-        drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
-        inVisible:visLineNr 
-        from:startCol to:endCol
-        with:self currentSelectionFgColor and:self currentSelectionBgColor.
+    self
+	drawLine:(self withoutAnyColorEmphasis:(self visibleAt:visLineNr))
+	inVisible:visLineNr
+	from:startCol to:endCol
+	with:self currentSelectionFgColor and:self currentSelectionBgColor.
 !
 
 redrawFromVisibleLine:startVisLineNr to:endVisLineNr
@@ -2828,70 +2828,70 @@
 
     end := endVisLineNr.
     (end > nLinesShown) ifTrue:[
-        end := nLinesShown
+	end := nLinesShown
     ].
 
     selectionEndLine isNil ifTrue:[
-        selectionStartLine := nil
+	selectionStartLine := nil
     ].
 
     selectionStartLine isNil ifTrue:[
-        specialCare := false
+	specialCare := false
     ] ifFalse:[
-        startLine := self visibleLineToAbsoluteLine:startVisLineNr.
-        (startLine > selectionEndLine) ifTrue:[
-            specialCare := false
-        ] ifFalse:[
-            endLine := self visibleLineToAbsoluteLine:end.
-            (endLine < selectionStartLine) ifTrue:[
-                specialCare := false
-            ] ifFalse:[
-                specialCare := true
-            ]
-        ]
+	startLine := self visibleLineToAbsoluteLine:startVisLineNr.
+	(startLine > selectionEndLine) ifTrue:[
+	    specialCare := false
+	] ifFalse:[
+	    endLine := self visibleLineToAbsoluteLine:end.
+	    (endLine < selectionStartLine) ifTrue:[
+		specialCare := false
+	    ] ifFalse:[
+		specialCare := true
+	    ]
+	]
     ].
 
     "easy: nothing is selected"
     specialCare ifFalse:[
-        super redrawFromVisibleLine:startVisLineNr to:end.
-        ^ self
+	super redrawFromVisibleLine:startVisLineNr to:end.
+	^ self
     ].
 
     "easy: all is selected"
     ((selectionStartLine < startLine) and:[selectionEndLine > endLine]) ifTrue:[
-        self drawSelectedFromVisibleLine:startVisLineNr to:end.
-        ^ self
+	self drawSelectedFromVisibleLine:startVisLineNr to:end.
+	^ self
     ].
 
     (selectionStartLine >= firstLineShown) ifTrue:[
-        "draw unselected top part"
-
-        selVisStart := self listLineToVisibleLine:selectionStartLine.
-        super redrawFromVisibleLine:startVisLineNr to:(selVisStart - 1).
-
-        "and first partial selected line"
-        self redrawVisibleLine:selVisStart.
-
-        "rest starts after this one"
-        line1 := selVisStart + 1
+	"draw unselected top part"
+
+	selVisStart := self listLineToVisibleLine:selectionStartLine.
+	super redrawFromVisibleLine:startVisLineNr to:(selVisStart - 1).
+
+	"and first partial selected line"
+	self redrawVisibleLine:selVisStart.
+
+	"rest starts after this one"
+	line1 := selVisStart + 1
     ] ifFalse:[
-        line1 := 1
+	line1 := 1
     ].
 
     (line1 > end) ifTrue:[^ self].
     (line1 < startVisLineNr) ifTrue:[
-        line1 := startVisLineNr
+	line1 := startVisLineNr
     ].
 
     "draw middle part of selection"
 
     (selectionEndLine >= (firstLineShown + nLinesShown)) ifTrue:[
-        line2 := nLinesShown
+	line2 := nLinesShown
     ] ifFalse:[
-        line2 := (self listLineToVisibleLine:selectionEndLine) - 1
+	line2 := (self listLineToVisibleLine:selectionEndLine) - 1
     ].
     (line2 > end) ifTrue:[
-        line2 := end
+	line2 := end
     ].
 
     self drawSelectedFromVisibleLine:line1 to:line2.
@@ -2902,7 +2902,7 @@
     self redrawVisibleLine:(line2 + 1).
 
     ((line2 + 2) <= end) ifTrue:[
-        super redrawFromVisibleLine:(line2 + 2) to:end
+	super redrawFromVisibleLine:(line2 + 2) to:end
     ]
 !
 
@@ -2922,50 +2922,50 @@
     |line|
 
     (selectionStartLine notNil and:[selectionEndLine notNil]) ifTrue:[
-        line := self visibleLineToAbsoluteLine:visLineNr.
-        (line between:selectionStartLine and:selectionEndLine) ifTrue:[
-            (line == selectionStartLine) ifTrue:[
-                (line == selectionEndLine) ifTrue:[
-                    "it's part-of-single-line selection"
-                    self clearMarginOfVisibleLine:visLineNr with:bgColor.
-                    (selectionStartCol > 1) ifTrue:[
-                        super redrawVisibleLine:visLineNr from:1 to:(selectionStartCol - 1)
-                    ].
-                    self drawVisibleLineSelected:visLineNr from:selectionStartCol to:selectionEndCol.
-                    super redrawVisibleLine:visLineNr from:(selectionEndCol + 1).
-                    ^ self
-                ].
-
-                "it's the first line of a multi-line selection"
-                (selectionStartCol ~~ 1) ifTrue:[
-                    self clearMarginOfVisibleLine:visLineNr with:bgColor.
-                    super redrawVisibleLine:visLineNr from:1 to:(selectionStartCol - 1)
-                ] ifFalse:[
-                    viewOrigin x == 0 ifTrue:[
-                        self clearMarginOfVisibleLine:visLineNr with:self currentSelectionBgColor.
-                    ]
-                ].
-                self drawVisibleLineSelected:visLineNr from:selectionStartCol.
-                ^ self
-            ].
-
-            (line == selectionEndLine) ifTrue:[
-                "it's the last line of a multi-line selection"
-                (selectionEndCol == 0) ifTrue:[
-                    ^ super redrawVisibleLine:visLineNr
-                ].
-
-                self clearMarginOfVisibleLine:visLineNr with:self currentSelectionBgColor.
-                self drawVisibleLineSelected:visLineNr from:1 to:selectionEndCol.
-                super redrawVisibleLine:visLineNr from:(selectionEndCol + 1).
-                ^ self
-            ].
-
-            "it's a full line in a multi-line selection"
-            self clearMarginOfVisibleLine:visLineNr with:self currentSelectionBgColor.
-            self drawVisibleLineSelected:visLineNr.
-            ^ self
-        ]
+	line := self visibleLineToAbsoluteLine:visLineNr.
+	(line between:selectionStartLine and:selectionEndLine) ifTrue:[
+	    (line == selectionStartLine) ifTrue:[
+		(line == selectionEndLine) ifTrue:[
+		    "it's part-of-single-line selection"
+		    self clearMarginOfVisibleLine:visLineNr with:bgColor.
+		    (selectionStartCol > 1) ifTrue:[
+			super redrawVisibleLine:visLineNr from:1 to:(selectionStartCol - 1)
+		    ].
+		    self drawVisibleLineSelected:visLineNr from:selectionStartCol to:selectionEndCol.
+		    super redrawVisibleLine:visLineNr from:(selectionEndCol + 1).
+		    ^ self
+		].
+
+		"it's the first line of a multi-line selection"
+		(selectionStartCol ~~ 1) ifTrue:[
+		    self clearMarginOfVisibleLine:visLineNr with:bgColor.
+		    super redrawVisibleLine:visLineNr from:1 to:(selectionStartCol - 1)
+		] ifFalse:[
+		    viewOrigin x == 0 ifTrue:[
+			self clearMarginOfVisibleLine:visLineNr with:self currentSelectionBgColor.
+		    ]
+		].
+		self drawVisibleLineSelected:visLineNr from:selectionStartCol.
+		^ self
+	    ].
+
+	    (line == selectionEndLine) ifTrue:[
+		"it's the last line of a multi-line selection"
+		(selectionEndCol == 0) ifTrue:[
+		    ^ super redrawVisibleLine:visLineNr
+		].
+
+		self clearMarginOfVisibleLine:visLineNr with:self currentSelectionBgColor.
+		self drawVisibleLineSelected:visLineNr from:1 to:selectionEndCol.
+		super redrawVisibleLine:visLineNr from:(selectionEndCol + 1).
+		^ self
+	    ].
+
+	    "it's a full line in a multi-line selection"
+	    self clearMarginOfVisibleLine:visLineNr with:self currentSelectionBgColor.
+	    self drawVisibleLineSelected:visLineNr.
+	    ^ self
+	]
     ].
     super redrawVisibleLine:visLineNr
 
@@ -2981,18 +2981,18 @@
     "/ care for selection
     "/
     (selectionStartLine notNil and:[selectionEndLine notNil]) ifTrue:[
-        line := self visibleLineToAbsoluteLine:visLine.
-        (line between:selectionStartLine and:selectionEndLine) ifTrue:[
-            ((line == selectionStartLine)
-            and: [col < selectionStartCol]) ifFalse:[
-                ((line == selectionEndLine)
-                and: [col > selectionEndCol]) ifFalse:[
-                    "its in the selection"
-                    self drawVisibleLineSelected:visLine col:col.
-                    ^ self.
-                ]
-            ]
-        ]
+	line := self visibleLineToAbsoluteLine:visLine.
+	(line between:selectionStartLine and:selectionEndLine) ifTrue:[
+	    ((line == selectionStartLine)
+	    and: [col < selectionStartCol]) ifFalse:[
+		((line == selectionEndLine)
+		and: [col > selectionEndCol]) ifFalse:[
+		    "its in the selection"
+		    self drawVisibleLineSelected:visLine col:col.
+		    ^ self.
+		]
+	    ]
+	]
     ].
     self drawVisibleLine:visLine col:col with:fgColor and:bgColor
 
@@ -3006,22 +3006,22 @@
 
     col := startCol.
     col == 0 ifTrue:[
-        col := 1.
+	col := 1.
     ].
 
     (selectionStartLine notNil and:[selectionEndLine notNil]) ifTrue:[
-        line := self visibleLineToAbsoluteLine:visLine.
-        (line between:selectionStartLine and:selectionEndLine) ifTrue:[
-            ((line == selectionStartLine) 
-             or:[line == selectionEndLine]) ifTrue:[
-                "since I'm lazy, redraw full line"
-                self redrawVisibleLine:visLine.
-                ^ self
-            ].
-            "the line is fully within the selection"
-            self drawVisibleLineSelected:visLine from:col. 
-            ^ self
-        ]
+	line := self visibleLineToAbsoluteLine:visLine.
+	(line between:selectionStartLine and:selectionEndLine) ifTrue:[
+	    ((line == selectionStartLine)
+	     or:[line == selectionEndLine]) ifTrue:[
+		"since I'm lazy, redraw full line"
+		self redrawVisibleLine:visLine.
+		^ self
+	    ].
+	    "the line is fully within the selection"
+	    self drawVisibleLineSelected:visLine from:col.
+	    ^ self
+	]
     ].
     super redrawVisibleLine:visLine from:col
 
@@ -3038,75 +3038,75 @@
     allIn := false.
     allOut := false.
     (selectionStartLine isNil or:[selectionEndLine isNil]) ifTrue:[
-        allOut := true
+	allOut := true
     ] ifFalse:[
-        (line between:selectionStartLine and:selectionEndLine) ifFalse:[
-            allOut := true
-        ] ifTrue:[
-            (selectionStartLine == selectionEndLine) ifTrue:[
-                ((endCol < selectionStartCol) 
-                or:[startCol > selectionEndCol]) ifTrue:[
-                    allOut := true
-                ] ifFalse:[
-                    ((startCol >= selectionStartCol) 
-                    and:[endCol <= selectionEndCol]) ifTrue:[
-                        allIn := true
-                    ]
-                ]
-            ] ifFalse:[
-                (line == selectionStartLine) ifTrue:[
-                    (endCol < selectionStartCol) ifTrue:[
-                        allOut := true
-                    ] ifFalse:[
-                        (startCol >= selectionStartCol) ifTrue:[
-                            allIn := true
-                        ]
-                    ]
-                ] ifFalse:[
-                    (line == selectionEndLine) ifTrue:[
-                        (startCol > selectionEndCol) ifTrue:[
-                            allOut := true
-                        ] ifFalse:[
-                            (endCol <= selectionEndCol) ifTrue:[
-                                allIn := true
-                            ]
-                        ]
-                    ] ifFalse:[
-                        allIn := true
-                    ]
-                ]
-            ]
-        ]
+	(line between:selectionStartLine and:selectionEndLine) ifFalse:[
+	    allOut := true
+	] ifTrue:[
+	    (selectionStartLine == selectionEndLine) ifTrue:[
+		((endCol < selectionStartCol)
+		or:[startCol > selectionEndCol]) ifTrue:[
+		    allOut := true
+		] ifFalse:[
+		    ((startCol >= selectionStartCol)
+		    and:[endCol <= selectionEndCol]) ifTrue:[
+			allIn := true
+		    ]
+		]
+	    ] ifFalse:[
+		(line == selectionStartLine) ifTrue:[
+		    (endCol < selectionStartCol) ifTrue:[
+			allOut := true
+		    ] ifFalse:[
+			(startCol >= selectionStartCol) ifTrue:[
+			    allIn := true
+			]
+		    ]
+		] ifFalse:[
+		    (line == selectionEndLine) ifTrue:[
+			(startCol > selectionEndCol) ifTrue:[
+			    allOut := true
+			] ifFalse:[
+			    (endCol <= selectionEndCol) ifTrue:[
+				allIn := true
+			    ]
+			]
+		    ] ifFalse:[
+			allIn := true
+		    ]
+		]
+	    ]
+	]
     ].
     allOut ifTrue:[
-        super redrawVisibleLine:visLine from:startCol to:endCol.
-        ^ self
+	super redrawVisibleLine:visLine from:startCol to:endCol.
+	^ self
     ].
 
     allIn ifTrue:[
-        self drawVisibleLineSelected:visLine from:startCol to:endCol
+	self drawVisibleLineSelected:visLine from:startCol to:endCol
     ] ifFalse:[
-        "redraw part before selection"
-        ((line == selectionStartLine)
-         and:[startCol <= selectionStartCol]) ifTrue:[
-            super redrawVisibleLine:visLine from:startCol
-                                              to:(selectionStartCol - 1).
-            leftCol := selectionStartCol
-        ] ifFalse:[
-            leftCol := startCol
-        ].
-        "redraw selected part"
-        (selectionEndLine > line) ifTrue:[
-            rightCol := endCol
-        ] ifFalse:[
-            rightCol := selectionEndCol min:endCol
-        ].
-        self drawVisibleLineSelected:visLine from:leftCol to:rightCol.
-
-        "redraw part after selection"
-        (rightCol < endCol) ifTrue:[
-            super redrawVisibleLine:visLine from:(rightCol + 1) to:endCol
-        ]
+	"redraw part before selection"
+	((line == selectionStartLine)
+	 and:[startCol <= selectionStartCol]) ifTrue:[
+	    super redrawVisibleLine:visLine from:startCol
+					      to:(selectionStartCol - 1).
+	    leftCol := selectionStartCol
+	] ifFalse:[
+	    leftCol := startCol
+	].
+	"redraw selected part"
+	(selectionEndLine > line) ifTrue:[
+	    rightCol := endCol
+	] ifFalse:[
+	    rightCol := selectionEndCol min:endCol
+	].
+	self drawVisibleLineSelected:visLine from:leftCol to:rightCol.
+
+	"redraw part after selection"
+	(rightCol < endCol) ifTrue:[
+	    super redrawVisibleLine:visLine from:(rightCol + 1) to:endCol
+	]
     ].
 
     "special care for first and last line of selection:
@@ -3116,14 +3116,14 @@
     and:[(startCol == 1)
     and:[selectionStartLine < selectionEndLine]])
     ifTrue:[
-        self clearMarginOfVisibleLine:visLine with:self currentSelectionBgColor.
+	self clearMarginOfVisibleLine:visLine with:self currentSelectionBgColor.
     ].
 
     ((line == selectionStartLine)
     and:[(startCol == 1)
     and:[selectionStartLine < selectionEndLine]])
     ifTrue:[
-        self clearMarginOfVisibleLine:visLine with:bgColor.
+	self clearMarginOfVisibleLine:visLine with:bgColor.
     ]
 
     "Modified: 6.3.1996 / 14:23:26 / cg"
@@ -3136,26 +3136,26 @@
 !
 
 scanFor:aCharacter fromLine:startLine col:startCol forward:forward
-                     ifFound:foundBlock 
-                  ifNotFound:notFoundBlock
-    "search for a character in the direction given by forward. 
+		     ifFound:foundBlock
+		  ifNotFound:notFoundBlock
+    "search for a character in the direction given by forward.
      Performs foundBlock with line/col as argument if found, notFoundBlock if not."
 
-    |lineString 
+    |lineString
      line   "{ Class: SmallInteger }"
      col    "{ Class: SmallInteger }"
      delta  "{ Class: SmallInteger }"
      endCol "{ Class: SmallInteger }"
-     cc     
+     cc
      maxLine "{ Class: SmallInteger }"
       |
 
     col := startCol.
     line := startLine.
     forward ifTrue:[
-        delta := 1.
+	delta := 1.
     ] ifFalse:[
-        delta := -1.
+	delta := -1.
     ].
 
     lineString := list at:line.
@@ -3163,30 +3163,30 @@
 
     col := col + delta.
     [true] whileTrue:[
-        lineString notNil ifTrue:[
-            forward ifTrue:[
-                endCol := lineString size.
-            ] ifFalse:[
-                endCol := 1
-            ].
-
-            col to:endCol by:delta do:[:rCol |
-                cc := lineString at:rCol.
-                cc == aCharacter ifTrue:[
-                    ^ foundBlock value:line value:rCol.
-                ]
-            ].
-        ].
-        line := line + delta.
-        (line < 1 or:[line > maxLine]) ifTrue:[
-            ^ notFoundBlock value
-        ].
-        lineString := list at:line.
-        forward ifTrue:[
-            col := 1
-        ] ifFalse:[
-            col := lineString size
-        ]
+	lineString notNil ifTrue:[
+	    forward ifTrue:[
+		endCol := lineString size.
+	    ] ifFalse:[
+		endCol := 1
+	    ].
+
+	    col to:endCol by:delta do:[:rCol |
+		cc := lineString at:rCol.
+		cc == aCharacter ifTrue:[
+		    ^ foundBlock value:line value:rCol.
+		]
+	    ].
+	].
+	line := line + delta.
+	(line < 1 or:[line > maxLine]) ifTrue:[
+	    ^ notFoundBlock value
+	].
+	lineString := list at:line.
+	forward ifTrue:[
+	    col := 1
+	] ifFalse:[
+	    col := lineString size
+	]
     ].
     "not reached"
 
@@ -3208,8 +3208,8 @@
     |ign match|
 
     searchBarActionBlock notNil ifTrue:[
-        searchBarActionBlock value:#forward value:self.
-        ^ self
+	searchBarActionBlock value:#forward value:self.
+	^ self
     ].
 
     ign := lastSearchIgnoredCase ? LastSearchIgnoredCase ? true.
@@ -3217,17 +3217,17 @@
 
     self setSearchPatternWithMatchEscapes: match.
     lastSearchPattern notNil ifTrue:[
-        lastSearchDirection == #backward ifTrue:[
-            self 
-                searchBwd:lastSearchPattern 
-                ignoreCase:ign
-                match: match
-        ] ifFalse:[
-            self 
-                searchFwd:lastSearchPattern 
-                ignoreCase:ign
-                match: match
-        ]
+	lastSearchDirection == #backward ifTrue:[
+	    self
+		searchBwd:lastSearchPattern
+		ignoreCase:ign
+		match: match
+	] ifFalse:[
+	    self
+		searchFwd:lastSearchPattern
+		ignoreCase:ign
+		match: match
+	]
     ]
 
     "Created: / 03-05-1999 / 15:02:16 / cg"
@@ -3241,43 +3241,43 @@
     |ign selectedVariable|
 
     searchAction notNil ifTrue:[
-        "/autosearch is cleared whenever there is search with user selection 
-        (self hasSelection and:[self hasSearchActionSelection not]) ifTrue: [self clearSearchAction].
+	"/autosearch is cleared whenever there is search with user selection
+	(self hasSelection and:[self hasSearchActionSelection not]) ifTrue: [self clearSearchAction].
     ].
 
     searchAction notNil ifTrue:[
-        "/confusing: this is for autosearch of variables (browse variable uses, for example)
-        self searchUsingSearchAction:#backward.
-        ^ self.
+	"/confusing: this is for autosearch of variables (browse variable uses, for example)
+	self searchUsingSearchAction:#backward.
+	^ self.
     ].
     searchBarActionBlock notNil ifTrue:[
-        searchBarActionBlock value:#backward value:self.
-        ^ self
+	searchBarActionBlock value:#backward value:self.
+	^ self
     ].
     lastSearchWasVariableSearch ifTrue:[
-        selectedVariable := self syntaxElementForSelectedVariable.
-        selectedVariable notNil ifTrue:[
-            self searchVariableWithSyntaxElement:selectedVariable forward:false.
-            ^ self.
-        ].
-        lastSearchWasVariableSearch := false.
+	selectedVariable := self syntaxElementForSelectedVariable.
+	selectedVariable notNil ifTrue:[
+	    self searchVariableWithSyntaxElement:selectedVariable forward:false.
+	    ^ self.
+	].
+	lastSearchWasVariableSearch := false.
     ].
 
     ign := lastSearchIgnoredCase ? LastSearchIgnoredCase ? true.
 
     self setSearchPatternWithMatchEscapes: false.
     lastSearchPattern isNil ifTrue:[
-        LastSearchPatterns size > 0 ifTrue:[
-            lastSearchPattern := LastSearchPatterns first
-        ]
+	LastSearchPatterns size > 0 ifTrue:[
+	    lastSearchPattern := LastSearchPatterns first
+	]
     ].
 
     lastSearchPattern notNil ifTrue:[
-        lastSearchDirection := #backward.
-        self rememberSearchPattern:lastSearchPattern.
-        self 
-            searchBwd:lastSearchPattern 
-            ignoreCase:ign
+	lastSearchDirection := #backward.
+	self rememberSearchPattern:lastSearchPattern.
+	self
+	    searchBwd:lastSearchPattern
+	    ignoreCase:ign
     ]
 
     "Modified: / 08-03-2012 / 14:26:25 / cg"
@@ -3296,10 +3296,10 @@
 searchBwd:pattern ifAbsent:aBlock
     "do a backward search"
 
-    self 
-        searchBwdUsingSpec:(ListView::SearchSpec new
-                                        pattern:pattern)
-        ifAbsent:aBlock
+    self
+	searchBwdUsingSpec:(ListView::SearchSpec new
+					pattern:pattern)
+	ifAbsent:aBlock
 
     "Modified: 13.9.1997 / 01:05:49 / cg"
 !
@@ -3308,12 +3308,12 @@
     "do a backward search"
 
     self
-        searchBwd:pattern
-        ignoreCase:ign
-        ifAbsent:[
-                    self sensor compressKeyPressEventsWithKey:#FindPrev.
-                    self showNotFound
-                 ].
+	searchBwd:pattern
+	ignoreCase:ign
+	ifAbsent:[
+		    self sensor compressKeyPressEventsWithKey:#FindPrev.
+		    self showNotFound
+		 ].
     "/ lastSearchIgnoredCase := ign.
     lastSearchPattern := pattern string
 
@@ -3324,11 +3324,11 @@
 searchBwd:pattern ignoreCase:ign ifAbsent:aBlock
     "do a backward search"
 
-    self 
-        searchBwdUsingSpec:(ListView::SearchSpec new
-                                        pattern:pattern
-                                        ignoreCase:ign)
-        ifAbsent:aBlock
+    self
+	searchBwdUsingSpec:(ListView::SearchSpec new
+					pattern:pattern
+					ignoreCase:ign)
+	ifAbsent:aBlock
 
     "Modified: 13.9.1997 / 01:05:49 / cg"
     "Created: 13.9.1997 / 06:18:41 / cg"
@@ -3347,9 +3347,9 @@
 searchBwdUsingSpec:searchSpec
     "do a backward search"
 
-    self 
-        searchBwdUsingSpec:searchSpec
-        ifAbsent:[self showNotFound].
+    self
+	searchBwdUsingSpec:searchSpec
+	ifAbsent:[self showNotFound].
 
 "/    lastSearchIgnoredCase := false.
     lastSearchPattern := searchSpec pattern string
@@ -3366,31 +3366,31 @@
     startLine := pos y.
     startCol := pos x.
 
-    self 
-        searchBackwardUsingSpec:searchSpec
-        startingAtLine:startLine col:startCol
-        ifFound:[:line :col | self showMatch:searchSpec pattern isMatch:searchSpec match atLine:line col:col] 
-        ifAbsent:aBlock
+    self
+	searchBackwardUsingSpec:searchSpec
+	startingAtLine:startLine col:startCol
+	ifFound:[:line :col | self showMatch:searchSpec pattern isMatch:searchSpec match atLine:line col:col]
+	ifAbsent:aBlock
 !
 
 searchForAndSelectMatchingParenthesisFromLine:startLine col:startCol
     "select characters enclosed by matching parenthesis if one is under startLine/Col"
 
-    self 
-        searchForMatchingParenthesisFromLine:startLine col:startCol
-        ifFound:[:line :col | 
-                  self selectFromLine:startLine col:startCol
-                               toLine:line col:col]
-        ifNotFound:[self showNotFound]
-        onError:[self beep]
+    self
+	searchForMatchingParenthesisFromLine:startLine col:startCol
+	ifFound:[:line :col |
+		  self selectFromLine:startLine col:startCol
+			       toLine:line col:col]
+	ifNotFound:[self showNotFound]
+	onError:[self beep]
 
     "Modified: 9.10.1997 / 12:57:34 / cg"
 !
 
 searchForMatchingParenthesisFromLine:startLine col:startCol
-                     ifFound:foundBlock 
-                  ifNotFound:notFoundBlock
-                     onError:failBlock
+		     ifFound:foundBlock
+		  ifNotFound:notFoundBlock
+		     onError:failBlock
 
     "search for a matching parenthesis; start search with character at startLine/startCol.
      Search for the corresponding character is done forward if its an opening,
@@ -3399,20 +3399,20 @@
      If there is a nesting error, evaluate failBlock."
 
     ^ self
-        searchForMatchingParenthesisFromLine:startLine col:startCol
-        ifFound:foundBlock 
-        ifNotFound:notFoundBlock
-        onError:failBlock
-        ignoring:(parenthesisSpecification at:#ignore ifAbsent:#()) "/ #( $' $" '$[' '$]' '${' '$)' )
+	searchForMatchingParenthesisFromLine:startLine col:startCol
+	ifFound:foundBlock
+	ifNotFound:notFoundBlock
+	onError:failBlock
+	ignoring:(parenthesisSpecification at:#ignore ifAbsent:#()) "/ #( $' $" '$[' '$]' '${' '$)' )
 
     "Modified: / 12-04-2007 / 11:24:24 / cg"
 !
 
 searchForMatchingParenthesisFromLine:startLine col:startCol
-                     ifFound:foundBlock 
-                  ifNotFound:notFoundBlock
-                     onError:failBlock
-                    ignoring:ignoreSet
+		     ifFound:foundBlock
+		  ifNotFound:notFoundBlock
+		     onError:failBlock
+		    ignoring:ignoreSet
 
     "search for a matching parenthesis; start search with character at startLine/startCol.
      Search for the corresponding character is done forward if its an opening,
@@ -3421,24 +3421,24 @@
      If there is a nesting error, evaluate failBlock."
 
     ^ self
-        searchForMatchingParenthesisFromLine:startLine col:startCol
-        ifFound:foundBlock 
-        ifNotFound:notFoundBlock
-        onError:failBlock
-        openingCharacters: (parenthesisSpecification at:#open)  "/ #( $( $[ ${ "$> $<") 
-        closingCharacters: (parenthesisSpecification at:#close) "/ #( $) $] $} "$> $<")
-        ignoredCharacters: ignoreSet
-        specialEOLComment: (parenthesisSpecification at:#eolComment ifAbsent:#()) "/
-
-"/    |i direction lineString 
-"/     parChar charSet  closingChar 
-"/     ignoring 
+	searchForMatchingParenthesisFromLine:startLine col:startCol
+	ifFound:foundBlock
+	ifNotFound:notFoundBlock
+	onError:failBlock
+	openingCharacters: (parenthesisSpecification at:#open)  "/ #( $( $[ ${ "$> $<")
+	closingCharacters: (parenthesisSpecification at:#close) "/ #( $) $] $} "$> $<")
+	ignoredCharacters: ignoreSet
+	specialEOLComment: (parenthesisSpecification at:#eolComment ifAbsent:#()) "/
+
+"/    |i direction lineString
+"/     parChar charSet  closingChar
+"/     ignoring
 "/     line   "{ Class: SmallInteger }"
 "/     col    "{ Class: SmallInteger }"
 "/     delta  "{ Class: SmallInteger }"
 "/     endCol "{ Class: SmallInteger }"
 "/     runCol "{ Class: SmallInteger }"
-"/     cc prevCC nextCC incSet decSet 
+"/     cc prevCC nextCC incSet decSet
 "/     nesting "{ Class: SmallInteger }"
 "/     maxLine "{ Class: SmallInteger }"
 "/     ign skip anySet|
@@ -3512,7 +3512,7 @@
 "/                        ignore == cc ifTrue:[
 "/                            ign := true
 "/                        ] ifFalse:[
-"/                            ignore isString ifTrue:[ 
+"/                            ignore isString ifTrue:[
 "/                                cc == (ignore at:2) ifTrue:[
 "/                                    runCol > 1 ifTrue:[
 "/                                        (lineString at:(runCol-1)) == (ignore at:1) ifTrue:[
@@ -3578,11 +3578,11 @@
 !
 
 searchForMatchingParenthesisFromLine:startLine col:startCol
-                     ifFound:foundBlock 
-                  ifNotFound:notFoundBlock
-                     onError:failBlock
-           openingCharacters:openingCharacters
-           closingCharacters:closingCharacters
+		     ifFound:foundBlock
+		  ifNotFound:notFoundBlock
+		     onError:failBlock
+	   openingCharacters:openingCharacters
+	   closingCharacters:closingCharacters
 
     "search for a matching parenthesis; start search with character at startLine/startCol.
      Search for the corresponding character is done forward if its an opening,
@@ -3591,24 +3591,24 @@
      If there is a nesting error, evaluate failBlock."
 
     ^ self
-        searchForMatchingParenthesisFromLine:startLine col:startCol
-        ifFound:foundBlock 
-        ifNotFound:notFoundBlock
-        onError:failBlock
-        openingCharacters: openingCharacters 
-        closingCharacters: closingCharacters
-        ignoredCharacters: (parenthesisSpecification at:#ignore ifAbsent:#())
-        specialEOLComment: (parenthesisSpecification at:#eolComment ifAbsent:#()) "/
-
-"/    |i direction lineString 
-"/     parChar charSet  closingChar 
-"/     ignoring 
+	searchForMatchingParenthesisFromLine:startLine col:startCol
+	ifFound:foundBlock
+	ifNotFound:notFoundBlock
+	onError:failBlock
+	openingCharacters: openingCharacters
+	closingCharacters: closingCharacters
+	ignoredCharacters: (parenthesisSpecification at:#ignore ifAbsent:#())
+	specialEOLComment: (parenthesisSpecification at:#eolComment ifAbsent:#()) "/
+
+"/    |i direction lineString
+"/     parChar charSet  closingChar
+"/     ignoring
 "/     line   "{ Class: SmallInteger }"
 "/     col    "{ Class: SmallInteger }"
 "/     delta  "{ Class: SmallInteger }"
 "/     endCol "{ Class: SmallInteger }"
 "/     runCol "{ Class: SmallInteger }"
-"/     cc prevCC nextCC incSet decSet 
+"/     cc prevCC nextCC incSet decSet
 "/     nesting "{ Class: SmallInteger }"
 "/     maxLine "{ Class: SmallInteger }"
 "/     ign skip anySet|
@@ -3682,7 +3682,7 @@
 "/                        ignore == cc ifTrue:[
 "/                            ign := true
 "/                        ] ifFalse:[
-"/                            ignore isString ifTrue:[ 
+"/                            ignore isString ifTrue:[
 "/                                cc == (ignore at:2) ifTrue:[
 "/                                    runCol > 1 ifTrue:[
 "/                                        (lineString at:(runCol-1)) == (ignore at:1) ifTrue:[
@@ -3748,13 +3748,13 @@
 !
 
 searchForMatchingParenthesisFromLine:startLine col:startCol
-                     ifFound:foundBlock 
-                  ifNotFound:notFoundBlock
-                     onError:failBlock
-           openingCharacters:openingCharacters
-           closingCharacters:closingCharacters
-           ignoredCharacters:ignoreSet
-          specialEOLComment:eolCommentSequence
+		     ifFound:foundBlock
+		  ifNotFound:notFoundBlock
+		     onError:failBlock
+	   openingCharacters:openingCharacters
+	   closingCharacters:closingCharacters
+	   ignoredCharacters:ignoreSet
+	  specialEOLComment:eolCommentSequence
 
     "search for a matching parenthesis; start search with character at startLine/startCol.
      Search for the corresponding character is done forward if its an opening,
@@ -3762,15 +3762,15 @@
      Evaluate foundBlock with line/col as argument if found, notFoundBlock if not.
      If there is a nesting error, evaluate failBlock."
 
-    |i direction lineString 
-     parChar charSet  closingChar 
-     ignoring 
+    |i direction lineString
+     parChar charSet  closingChar
+     ignoring
      line   "{ Class: SmallInteger }"
      col    "{ Class: SmallInteger }"
      delta  "{ Class: SmallInteger }"
      endCol "{ Class: SmallInteger }"
      runCol "{ Class: SmallInteger }"
-     cc prevCC nextCC incSet decSet 
+     cc prevCC nextCC incSet decSet
      nesting "{ Class: SmallInteger }"
      maxLine "{ Class: SmallInteger }"
      ign skip anySet
@@ -3783,7 +3783,7 @@
     parChar := self characterAtLine:startLine col:startCol.
     i := charSet indexOf:parChar.
     i == 0 ifTrue:[
-        ^ failBlock value   "not a parenthesis"
+	^ failBlock value   "not a parenthesis"
     ].
 
     direction := (i <= openingCharacters size) ifTrue:[#fwd] ifFalse:[#bwd].
@@ -3795,13 +3795,13 @@
     col := startCol.
     line := startLine.
     direction == #fwd ifTrue:[
-        delta := 1.
-        incSet := openingCharacters.
-        decSet := closingCharacters.
+	delta := 1.
+	incSet := openingCharacters.
+	decSet := closingCharacters.
     ] ifFalse:[
-        delta := -1.
-        incSet := closingCharacters.
-        decSet := openingCharacters.
+	delta := -1.
+	incSet := closingCharacters.
+	decSet := openingCharacters.
     ].
     anySet := Set new.
     anySet addAll:incSet; addAll:decSet; addAll:ignoreSet.
@@ -3814,101 +3814,101 @@
 
     col := col + delta.
     [nesting ~~ 0] whileTrue:[
-        (lineString notNil
-        and:[lineString includesAny:anySet]) ifTrue:[
-            direction == #fwd ifTrue:[
-                endCol := lineString size.
-            ] ifFalse:[
-                endCol := 1
-            ].
-
-            col to:endCol by:delta do:[:rCol |
-                runCol := rCol.
-
-                cc := lineString at:runCol.
-                runCol < lineString size ifTrue:[
-                    nextCC := lineString at:runCol+1
-                ] ifFalse:[
-                    nextCC := nil
-                ].
-                runCol > 1 ifTrue:[
-                    prevCC := lineString at:runCol-1
-                ] ifFalse:[
-                    prevCC := nil
-                ].
-
-                ign := skip := false.
-
-                "/ check for comments.
-
-                ((cc == eol1 and:[nextCC == eol2])
-                or:[prevCC == $$ ]) ifTrue:[
-                    "/ do nothing
-
-                    skip := true.
-                ] ifFalse:[
-                    ignoreSet do:[:ignore |
-                        ignore == cc ifTrue:[
-                            ign := true
-                        ] ifFalse:[
-                            ignore isString ifTrue:[ 
-                                cc == (ignore at:2) ifTrue:[
-                                    runCol > 1 ifTrue:[
-                                        (lineString at:(runCol-1)) == (ignore at:1) ifTrue:[
-                                            skip := true
-                                        ]
-                                    ]
-                                ] ifFalse:[
-                                    cc == (ignore at:1) ifTrue:[
-                                        runCol < lineString size ifTrue:[
-                                            (lineString at:(runCol+1)) == (ignore at:2) ifTrue:[
-                                                skip := true
-                                            ]
-                                        ]
-                                    ]
-                                ]
-                            ]
-                        ]
-                    ]
-                ].
-
-                ign ifTrue:[
-                    ignoring := ignoring not
-                ].
-
-                ignoring ifFalse:[
-                    skip ifFalse:[
-                        (incSet includes:cc) ifTrue:[
-                            nesting := nesting + 1
-                        ] ifFalse:[
-                            (decSet includes:cc) ifTrue:[
-                                nesting := nesting - 1
-                            ]
-                        ]
-                    ]
-                ].
-
-                nesting == 0 ifTrue:[
-                    "check if legal"
-                    skip ifFalse:[
-                        cc == closingChar ifFalse:[
-                            ^ failBlock value
-                        ].
-                        ^ foundBlock value:line value:runCol.
-                    ]
-                ]
-            ].
-        ].
-        line := line + delta.
-        (line < 1 or:[line > maxLine]) ifTrue:[
-            ^ failBlock value
-        ].
-        lineString := list at:line.
-        direction == #fwd ifTrue:[
-            col := 1
-        ] ifFalse:[
-            col := lineString size
-        ]
+	(lineString notNil
+	and:[lineString includesAny:anySet]) ifTrue:[
+	    direction == #fwd ifTrue:[
+		endCol := lineString size.
+	    ] ifFalse:[
+		endCol := 1
+	    ].
+
+	    col to:endCol by:delta do:[:rCol |
+		runCol := rCol.
+
+		cc := lineString at:runCol.
+		runCol < lineString size ifTrue:[
+		    nextCC := lineString at:runCol+1
+		] ifFalse:[
+		    nextCC := nil
+		].
+		runCol > 1 ifTrue:[
+		    prevCC := lineString at:runCol-1
+		] ifFalse:[
+		    prevCC := nil
+		].
+
+		ign := skip := false.
+
+		"/ check for comments.
+
+		((cc == eol1 and:[nextCC == eol2])
+		or:[prevCC == $$ ]) ifTrue:[
+		    "/ do nothing
+
+		    skip := true.
+		] ifFalse:[
+		    ignoreSet do:[:ignore |
+			ignore == cc ifTrue:[
+			    ign := true
+			] ifFalse:[
+			    ignore isString ifTrue:[
+				cc == (ignore at:2) ifTrue:[
+				    runCol > 1 ifTrue:[
+					(lineString at:(runCol-1)) == (ignore at:1) ifTrue:[
+					    skip := true
+					]
+				    ]
+				] ifFalse:[
+				    cc == (ignore at:1) ifTrue:[
+					runCol < lineString size ifTrue:[
+					    (lineString at:(runCol+1)) == (ignore at:2) ifTrue:[
+						skip := true
+					    ]
+					]
+				    ]
+				]
+			    ]
+			]
+		    ]
+		].
+
+		ign ifTrue:[
+		    ignoring := ignoring not
+		].
+
+		ignoring ifFalse:[
+		    skip ifFalse:[
+			(incSet includes:cc) ifTrue:[
+			    nesting := nesting + 1
+			] ifFalse:[
+			    (decSet includes:cc) ifTrue:[
+				nesting := nesting - 1
+			    ]
+			]
+		    ]
+		].
+
+		nesting == 0 ifTrue:[
+		    "check if legal"
+		    skip ifFalse:[
+			cc == closingChar ifFalse:[
+			    ^ failBlock value
+			].
+			^ foundBlock value:line value:runCol.
+		    ]
+		]
+	    ].
+	].
+	line := line + delta.
+	(line < 1 or:[line > maxLine]) ifTrue:[
+	    ^ failBlock value
+	].
+	lineString := list at:line.
+	direction == #fwd ifTrue:[
+	    col := 1
+	] ifFalse:[
+	    col := lineString size
+	]
     ].
     ^ notFoundBlock value
 
@@ -3921,55 +3921,55 @@
     |ign match variable|
 
     searchAction notNil ifTrue:[
-        "/ autosearch is cleared whenever there is search with user selection 
-        (self hasSelection and:[self hasSearchActionSelection not]) ifTrue: [self clearSearchAction].
+	"/ autosearch is cleared whenever there is search with user selection
+	(self hasSelection and:[self hasSearchActionSelection not]) ifTrue: [self clearSearchAction].
     ].
 
     searchAction notNil ifTrue:[
-        "/ confusing: this is for autosearch of variables (browse variable uses, for example)
-        self searchUsingSearchAction:#forward.
-        ^ self.
+	"/ confusing: this is for autosearch of variables (browse variable uses, for example)
+	self searchUsingSearchAction:#forward.
+	^ self.
     ].
     searchBarActionBlock notNil ifTrue:[
-        searchBarActionBlock value:#forward value:self.
-        ^ self
+	searchBarActionBlock value:#forward value:self.
+	^ self
     ].
     lastSearchWasVariableSearch ifTrue:[
-        variable := self syntaxElementForSelectedVariable.
-        variable notNil ifTrue:[
-            self searchVariableWithSyntaxElement:variable forward:true.
-            ^ self.
-        ].
-        lastSearchWasVariableSearch := false.
+	variable := self syntaxElementForSelectedVariable.
+	variable notNil ifTrue:[
+	    self searchVariableWithSyntaxElement:variable forward:true.
+	    ^ self.
+	].
+	lastSearchWasVariableSearch := false.
     ].
 
     ign := lastSearchIgnoredCase ? LastSearchIgnoredCase ? true.
     match := lastSearchWasMatch ? LastSearchWasMatch ? false.
 
     selectStyle == #wordLeft ifTrue:[
-        "
-         remove the space from the selection
-        "
-        selectionStartCol := selectionStartCol + 1.
-        super redrawLine:selectionStartLine from:selectionStartCol-1 to:selectionStartCol-1.
-        selectStyle := #word.
-        self selectionChanged.
+	"
+	 remove the space from the selection
+	"
+	selectionStartCol := selectionStartCol + 1.
+	super redrawLine:selectionStartLine from:selectionStartCol-1 to:selectionStartCol-1.
+	selectStyle := #word.
+	self selectionChanged.
     ].
     self setSearchPatternWithMatchEscapes: match.
 
     lastSearchPattern isNil ifTrue:[
-        LastSearchPatterns size > 0 ifTrue:[
-            lastSearchPattern := LastSearchPatterns first
-        ]
+	LastSearchPatterns size > 0 ifTrue:[
+	    lastSearchPattern := LastSearchPatterns first
+	]
     ].
 
     lastSearchPattern notNil ifTrue:[
-        self rememberSearchPattern:lastSearchPattern.
-        lastSearchDirection := #forward.
-        self 
-            searchFwd:lastSearchPattern
-            ignoreCase:ign
-            match: match
+	self rememberSearchPattern:lastSearchPattern.
+	lastSearchDirection := #forward.
+	self
+	    searchFwd:lastSearchPattern
+	    ignoreCase:ign
+	    match: match
     ]
 
     "Modified: / 08-03-2012 / 14:25:42 / cg"
@@ -3989,9 +3989,9 @@
     "do a forward search"
 
     self
-        searchFwdUsingSpec:(ListView::SearchSpec new
-                                pattern:pattern)
-        ifAbsent:aBlock
+	searchFwdUsingSpec:(ListView::SearchSpec new
+				pattern:pattern)
+	ifAbsent:aBlock
 
     "Modified: / 21-09-2006 / 16:51:28 / cg"
 !
@@ -4000,13 +4000,13 @@
     "do a forward search"
 
     self
-        searchFwdUsingSpec:(ListView::SearchSpec new
-                                pattern:pattern
-                                ignoreCase:ign)
-        ifAbsent:[
-                    self sensor compressKeyPressEventsWithKey:#FindNext.
-                    self showNotFound
-                 ].
+	searchFwdUsingSpec:(ListView::SearchSpec new
+				pattern:pattern
+				ignoreCase:ign)
+	ifAbsent:[
+		    self sensor compressKeyPressEventsWithKey:#FindNext.
+		    self showNotFound
+		 ].
     "/ lastSearchIgnoredCase := ign.
     lastSearchPattern := pattern string
 
@@ -4018,10 +4018,10 @@
     "do a forward search"
 
     self
-        searchFwdUsingSpec:(ListView::SearchSpec new
-                                pattern:pattern
-                                ignoreCase:ign)
-        ifAbsent:aBlock
+	searchFwdUsingSpec:(ListView::SearchSpec new
+				pattern:pattern
+				ignoreCase:ign)
+	ifAbsent:aBlock
 
     "Modified: 13.9.1997 / 01:05:35 / cg"
     "Created: 13.9.1997 / 06:18:27 / cg"
@@ -4031,14 +4031,14 @@
     "do a forward search"
 
     self
-        searchFwdUsingSpec:(ListView::SearchSpec new
-                                pattern:pattern
-                                ignoreCase:ign
-                                match:match)
-        ifAbsent:[
-                    self sensor compressKeyPressEventsWithKey:#FindNext.
-                    self showNotFound
-                 ].
+	searchFwdUsingSpec:(ListView::SearchSpec new
+				pattern:pattern
+				ignoreCase:ign
+				match:match)
+	ifAbsent:[
+		    self sensor compressKeyPressEventsWithKey:#FindNext.
+		    self showNotFound
+		 ].
     "/ lastSearchIgnoredCase := ign.
     "/ lastSearchWasMatch := match.
     lastSearchPattern := pattern string
@@ -4050,12 +4050,12 @@
 searchFwd:pattern ignoreCase:ign match: match ifAbsent:aBlock
     "do a forward search"
 
-    self 
-        searchFwdUsingSpec:(ListView::SearchSpec new
-                                pattern:pattern
-                                ignoreCase:ign
-                                match:match)
-        ifAbsent:aBlock
+    self
+	searchFwdUsingSpec:(ListView::SearchSpec new
+				pattern:pattern
+				ignoreCase:ign
+				match:match)
+	ifAbsent:aBlock
 
     "Modified: 13.9.1997 / 01:05:35 / cg"
     "Created: 13.9.1997 / 06:18:27 / cg"
@@ -4064,21 +4064,21 @@
 searchFwd:pattern ignoreCase:ign match: match startingAtLine:startLine col:startCol ifAbsent:aBlock
     "do a forward search"
 
-    self 
-        searchFwdUsingSpec:(ListView::SearchSpec new
-                                pattern:pattern
-                                ignoreCase:ign
-                                match:match)
-        startingAtLine:startLine col:startCol
-        ifAbsent:aBlock
+    self
+	searchFwdUsingSpec:(ListView::SearchSpec new
+				pattern:pattern
+				ignoreCase:ign
+				match:match)
+	startingAtLine:startLine col:startCol
+	ifAbsent:aBlock
 !
 
 searchFwdUsingSpec:searchSpec
     "do a forward search"
 
-    self 
-        searchFwdUsingSpec:searchSpec 
-        ifAbsent:[self showNotFound].
+    self
+	searchFwdUsingSpec:searchSpec
+	ifAbsent:[self showNotFound].
 
 "/    lastSearchIgnoredCase := false.
     lastSearchPattern := searchSpec pattern string
@@ -4095,10 +4095,10 @@
     startLine := pos y.
     startCol := pos x.
 
-    self 
-        searchFwdUsingSpec:searchSpec 
-        startingAtLine:startLine col:startCol
-        ifAbsent:aBlock
+    self
+	searchFwdUsingSpec:searchSpec
+	startingAtLine:startLine col:startCol
+	ifAbsent:aBlock
 
     "Modified: 13.9.1997 / 01:05:35 / cg"
     "Created: 13.9.1997 / 06:18:27 / cg"
@@ -4107,11 +4107,11 @@
 searchFwdUsingSpec:searchSpec startingAtLine:startLine col:startCol ifAbsent:aBlock
     "do a forward search"
 
-    self 
-        searchForwardUsingSpec:searchSpec
-        startingAtLine:startLine col:startCol
-        ifFound:[:line :col | self showMatch:searchSpec pattern isMatch:searchSpec match atLine:line col:col]
-        ifAbsent:aBlock
+    self
+	searchForwardUsingSpec:searchSpec
+	startingAtLine:startLine col:startCol
+	ifFound:[:line :col | self showMatch:searchSpec pattern isMatch:searchSpec match atLine:line col:col]
+	ifAbsent:aBlock
 !
 
 searchPattern
@@ -4121,33 +4121,33 @@
 !
 
 searchUsingSearchAction:direction
-    self 
-        searchUsingSearchAction:direction
-        ifAbsent:[
-                    self sensor compressKeyPressEventsWithKey:#FindNext.
-                    self showNotFound
-                 ]
+    self
+	searchUsingSearchAction:direction
+	ifAbsent:[
+		    self sensor compressKeyPressEventsWithKey:#FindNext.
+		    self showNotFound
+		 ]
 !
 
 searchUsingSearchAction:direction ifAbsent:notFoundAction
     |pos startLine startCol|
 
-    pos :=  direction == #backward 
-                ifTrue:[self startPositionForSearchBackward] 
-                ifFalse:[self startPositionForSearchForward].
+    pos :=  direction == #backward
+		ifTrue:[self startPositionForSearchBackward]
+		ifFalse:[self startPositionForSearchForward].
     startLine := pos y.
     startCol := pos x.
 
     searchAction notNil ifTrue:[
-        searchAction 
-            value:direction 
-            value:startLine 
-            value:startCol 
-            value:[:line :col | self selectFromLine:line toLine:line] 
-            value:notFoundAction. 
-        self hasSelection ifTrue: [
-            self changeTypeOfSelectionTo: #searchAction.
-        ].
+	searchAction
+	    value:direction
+	    value:startLine
+	    value:startCol
+	    value:[:line :col | self selectFromLine:line toLine:line]
+	    value:notFoundAction.
+	self hasSelection ifTrue: [
+	    self changeTypeOfSelectionTo: #searchAction.
+	].
     ].
 !
 
@@ -4161,9 +4161,9 @@
     "set the searchpattern for future searches"
 
     aStringOrNil isEmptyOrNil ifTrue:[
-        lastSearchPattern := nil. 
+	lastSearchPattern := nil.
     ] ifFalse:[
-        lastSearchPattern := aStringOrNil asString withoutSeparators string.
+	lastSearchPattern := aStringOrNil asString withoutSeparators string.
     ].
 
     "Modified: / 6.3.1999 / 23:47:36 / cg"
@@ -4185,9 +4185,9 @@
 
     sel := self selection.
     sel notNil ifTrue:[
-        searchPattern := sel asString.
-        match ifTrue:[searchPattern := searchPattern withMatchEscapes].
-        self setSearchPattern:searchPattern. 
+	searchPattern := sel asString.
+	match ifTrue:[searchPattern := searchPattern withMatchEscapes].
+	self setSearchPattern:searchPattern.
     ]
 
     "Modified: / 6.3.1999 / 23:48:04 / cg"
@@ -4211,16 +4211,16 @@
     realPattern := pattern.
 
     isMatch ifTrue: [
-        (realPattern startsWith:$*) ifTrue:[
-            realPattern := realPattern copyFrom:2
-        ].
-        (realPattern endsWith:$*) ifTrue:[
-            realPattern := realPattern copyWithoutLast:1
-        ].
+	(realPattern startsWith:$*) ifTrue:[
+	    realPattern := realPattern copyFrom:2
+	].
+	(realPattern endsWith:$*) ifTrue:[
+	    realPattern := realPattern copyWithoutLast:1
+	].
     ].
 
     self selectFromLine:line col:col
-                 toLine:line col:(col + realPattern size - 1).
+		 toLine:line col:(col + realPattern size - 1).
     self makeLineVisible:line
 !
 
@@ -4233,11 +4233,11 @@
 
     savedCursor := cursor.
     [
-        self cursor:(Cursor cross).
-        self beep.
-        Processor activeProcess millisecondDelay:300.
+	self cursor:(Cursor cross).
+	self beep.
+	Processor activeProcess millisecondDelay:300.
     ] ensure:[
-        self cursor:savedCursor
+	self cursor:savedCursor
     ]
 
     "Modified: 20.2.1997 / 12:49:27 / cg"
@@ -4251,11 +4251,11 @@
     |startLine startCol|
 
     selectionStartLine notNil ifTrue:[
-        startLine := selectionStartLine.
-        startCol := selectionStartCol
+	startLine := selectionStartLine.
+	startCol := selectionStartCol
     ] ifFalse:[
-        startLine := 1.
-        startCol := 1
+	startLine := 1.
+	startCol := 1
     ].
 
     ^ startCol @ startLine
@@ -4269,11 +4269,11 @@
     |startLine startCol|
 
     selectionStartLine notNil ifTrue:[
-        startLine := selectionStartLine.
-        startCol := selectionStartCol
+	startLine := selectionStartLine.
+	startCol := selectionStartCol
     ] ifFalse:[
-        startLine := 1.
-        startCol := 1
+	startLine := 1.
+	startCol := 1
     ].
 
     ^ startCol @ startLine
@@ -4290,30 +4290,30 @@
     |l t|
 
     selectionStartLine notNil ifTrue:[
-        expandingTop == true ifTrue:[
-            l := selectionStartLine.
-            selectionStartLine := selectionStartLine + 1.
-            (selectionStartLine > clickLine
-            or:[selectionStartLine == clickLine and:[selectionStartCol > clickCol]])
-            ifTrue:[
-                t := selectionStartLine.
-                selectionStartLine := selectionEndLine.
-                selectionEndLine := t.
-                t := selectionStartCol.
-                selectionStartCol := selectionEndCol.
-                selectionEndCol := t.
-                expandingTop := false
-            ].
-        ] ifFalse:[
-            l := selectionEndLine.
-            selectionEndLine := selectionEndLine + 1.
-        ].
-"/        self redrawLine:l. 
+	expandingTop == true ifTrue:[
+	    l := selectionStartLine.
+	    selectionStartLine := selectionStartLine + 1.
+	    (selectionStartLine > clickLine
+	    or:[selectionStartLine == clickLine and:[selectionStartCol > clickCol]])
+	    ifTrue:[
+		t := selectionStartLine.
+		selectionStartLine := selectionEndLine.
+		selectionEndLine := t.
+		t := selectionStartCol.
+		selectionStartCol := selectionEndCol.
+		selectionEndCol := t.
+		expandingTop := false
+	    ].
+	] ifFalse:[
+	    l := selectionEndLine.
+	    selectionEndLine := selectionEndLine + 1.
+	].
+"/        self redrawLine:l.
 "/        self redrawLine:l+1.
-        self validateNewSelection.
-        self setPrimarySelection.
-        self redrawFromLine:l to:l+1.
-        self makeSelectionVisible.
+	self validateNewSelection.
+	self setPrimarySelection.
+	self redrawFromLine:l to:l+1.
+	self makeSelectionVisible.
     ].
 
     "Created: / 01-03-1996 / 23:35:08 / cg"
@@ -4325,33 +4325,33 @@
     |c l t c1 c2|
 
     selectionStartLine notNil ifTrue:[
-        expandingTop == true ifTrue:[
-            selectionStartCol == 0 ifTrue:[^ self].
-            l := selectionStartLine.
-            selectionStartCol := (selectionStartCol - 1) max:1.
-            c := selectionStartCol.
-        ] ifFalse:[
-            l := selectionEndLine.
-            selectionEndCol := (selectionEndCol - 1) max:0.
-            c := selectionEndCol.
-            selectionEndLine == selectionStartLine ifTrue:[
-                selectionEndCol <= selectionStartCol ifTrue:[
-                    t := selectionStartCol. selectionStartCol := selectionEndCol.
-                    selectionEndCol := t.
-                    expandingTop := true.
-                    c := selectionStartCol.
-                ]
-            ].
-        ].
-        c1 := c.
-        c2 := c1 + 1.
-        c1 == 0 ifTrue:[
-            c1 := 1
-        ].
-        self validateNewSelection.
-        self setPrimarySelection.
-        self redrawLine:l from:c1 to:c2. 
-        self makeSelectionVisible.
+	expandingTop == true ifTrue:[
+	    selectionStartCol == 0 ifTrue:[^ self].
+	    l := selectionStartLine.
+	    selectionStartCol := (selectionStartCol - 1) max:1.
+	    c := selectionStartCol.
+	] ifFalse:[
+	    l := selectionEndLine.
+	    selectionEndCol := (selectionEndCol - 1) max:0.
+	    c := selectionEndCol.
+	    selectionEndLine == selectionStartLine ifTrue:[
+		selectionEndCol <= selectionStartCol ifTrue:[
+		    t := selectionStartCol. selectionStartCol := selectionEndCol.
+		    selectionEndCol := t.
+		    expandingTop := true.
+		    c := selectionStartCol.
+		]
+	    ].
+	].
+	c1 := c.
+	c2 := c1 + 1.
+	c1 == 0 ifTrue:[
+	    c1 := 1
+	].
+	self validateNewSelection.
+	self setPrimarySelection.
+	self redrawLine:l from:c1 to:c2.
+	self makeSelectionVisible.
     ].
 
     "Modified: / 18-03-1996 / 17:05:46 / cg"
@@ -4362,28 +4362,28 @@
     |l c t|
 
     selectionStartLine notNil ifTrue:[
-        expandingTop == true ifTrue:[
-            l := selectionStartLine.
-            c := selectionStartCol.
-            selectionStartCol := selectionStartCol + 1.
-            l == selectionEndLine ifTrue:[
-                c >= selectionEndCol ifTrue:[
-                    expandingTop := false.
-                    t := selectionStartCol. selectionStartCol := selectionEndCol.
-                    selectionEndCol := t.
-                    c := selectionStartCol.
-                ]
-            ]
-        ] ifFalse:[
-            l := selectionEndLine.
-            c := selectionEndCol.
-            selectionEndCol := selectionEndCol + 1.
-        ].
-
-        self validateNewSelection.
-        self setPrimarySelection.
-        self redrawLine:l from:c to:c+1.
-        self makeSelectionVisible.
+	expandingTop == true ifTrue:[
+	    l := selectionStartLine.
+	    c := selectionStartCol.
+	    selectionStartCol := selectionStartCol + 1.
+	    l == selectionEndLine ifTrue:[
+		c >= selectionEndCol ifTrue:[
+		    expandingTop := false.
+		    t := selectionStartCol. selectionStartCol := selectionEndCol.
+		    selectionEndCol := t.
+		    c := selectionStartCol.
+		]
+	    ]
+	] ifFalse:[
+	    l := selectionEndLine.
+	    c := selectionEndCol.
+	    selectionEndCol := selectionEndCol + 1.
+	].
+
+	self validateNewSelection.
+	self setPrimarySelection.
+	self redrawLine:l from:c to:c+1.
+	self makeSelectionVisible.
     ].
 
     "Created: / 01-03-1996 / 23:33:17 / cg"
@@ -4395,32 +4395,32 @@
     |l t|
 
     selectionStartLine notNil ifTrue:[
-        expandingTop == true ifTrue:[
-            selectionStartLine := (selectionStartLine - 1) max:1.
-            l := selectionStartLine. 
-        ] ifFalse:[
-            selectionEndLine := (selectionEndLine - 1) max:0.
-
-            l := selectionEndLine.
-            (selectionEndLine < clickLine
-            or:[(selectionEndLine == clickLine and:[selectionEndCol < clickCol])])
-            ifTrue:[
-                t := selectionStartLine.
-                selectionStartLine := selectionEndLine.
-                selectionEndLine := t.
-                t := selectionStartCol.
-                selectionStartCol := selectionEndCol.
-                selectionEndCol := t.
-                l := selectionStartLine.
-                expandingTop := true
-            ].
-        ].
-        self validateNewSelection.
-        self setPrimarySelection.
-        "/ self redrawLine:l. 
-        "/ self redrawLine:l+1. 
-        self redrawFromLine:l to:l+1.
-        self makeSelectionVisible.
+	expandingTop == true ifTrue:[
+	    selectionStartLine := (selectionStartLine - 1) max:1.
+	    l := selectionStartLine.
+	] ifFalse:[
+	    selectionEndLine := (selectionEndLine - 1) max:0.
+
+	    l := selectionEndLine.
+	    (selectionEndLine < clickLine
+	    or:[(selectionEndLine == clickLine and:[selectionEndCol < clickCol])])
+	    ifTrue:[
+		t := selectionStartLine.
+		selectionStartLine := selectionEndLine.
+		selectionEndLine := t.
+		t := selectionStartCol.
+		selectionStartCol := selectionEndCol.
+		selectionEndCol := t.
+		l := selectionStartLine.
+		expandingTop := true
+	    ].
+	].
+	self validateNewSelection.
+	self setPrimarySelection.
+	"/ self redrawLine:l.
+	"/ self redrawLine:l+1.
+	self redrawFromLine:l to:l+1.
+	self makeSelectionVisible.
     ].
 
     "Modified: / 06-03-1996 / 14:12:06 / cg"
@@ -4456,15 +4456,15 @@
     selectionEndLine   isNil ifTrue:[^ false].
 
     (line between:selectionStartLine and:selectionEndLine) ifFalse:[
-        ^ false
+	^ false
     ].
 
     line == selectionStartLine ifTrue:[
-        aColNr < selectionStartCol ifTrue:[^ false]
+	aColNr < selectionStartCol ifTrue:[^ false]
     ].
 
     line == selectionEndLine ifTrue:[
-        (selectionEndCol ~~ 0 and:[selectionEndCol < aColNr]) ifTrue:[^ false]
+	(selectionEndCol ~~ 0 and:[selectionEndCol < aColNr]) ifTrue:[^ false]
     ].
     ^ true
 !
@@ -4475,15 +4475,15 @@
     |line col|
 
     selectionStartLine notNil ifTrue:[
-        expandingTop == true ifTrue:[
-            line := selectionStartLine.
-            col := selectionStartCol.
-        ] ifFalse:[
-            line := selectionEndLine.
-            col := selectionEndCol.
-        ].
-        self makeLineVisible:line.
-        self makeColVisible:col inLine:line.        
+	expandingTop == true ifTrue:[
+	    line := selectionStartLine.
+	    col := selectionStartCol.
+	] ifFalse:[
+	    line := selectionEndLine.
+	    col := selectionEndCol.
+	].
+	self makeLineVisible:line.
+	self makeColVisible:col inLine:line.
     ]
 
     "Modified: 6.3.1996 / 13:53:45 / cg"
@@ -4525,36 +4525,36 @@
 
     self unselect.
     startLine notNil ifTrue:[
-        "new:"
-        endLine < startLine ifTrue:[
-            ^ self selectFromLine:endLine col:endCol toLine:startLine col:startCol
-        ].
-        (endLine == startLine and:[endCol < startCol]) ifTrue:[
-            endCol ~~ 0 ifTrue:[
-                self selectFromLine:endLine col:endCol toLine:startLine col:startCol.
-            ].
-            ^ self
-        ].
+	"new:"
+	endLine < startLine ifTrue:[
+	    ^ self selectFromLine:endLine col:endCol toLine:startLine col:startCol
+	].
+	(endLine == startLine and:[endCol < startCol]) ifTrue:[
+	    endCol ~~ 0 ifTrue:[
+		self selectFromLine:endLine col:endCol toLine:startLine col:startCol.
+	    ].
+	    ^ self
+	].
 
 " old:
-        endLine < startLine ifTrue:[^ self].
-        (startLine == endLine and:[endCol < startCol]) ifTrue:[^ self].
+	endLine < startLine ifTrue:[^ self].
+	(startLine == endLine and:[endCol < startCol]) ifTrue:[^ self].
 "
-        selectionStartLine := startLine.
-        selectionStartCol := startCol.
-        selectionEndLine := endLine.
-        selectionEndCol := endCol.
-        self validateNewSelection.
-        self setPrimarySelection.
-
-        (selectionStartLine == selectionEndLine) ifTrue:[
-            self redrawLine:selectionStartLine from:selectionStartCol to:selectionEndCol
-        ] ifFalse:[
-            selectionStartLine to:selectionEndLine do:[:lineNr |
-                self redrawLine:lineNr
-            ]
-        ].
-        selectStyle := nil.
+	selectionStartLine := startLine.
+	selectionStartCol := startCol.
+	selectionEndLine := endLine.
+	selectionEndCol := endCol.
+	self validateNewSelection.
+	self setPrimarySelection.
+
+	(selectionStartLine == selectionEndLine) ifTrue:[
+	    self redrawLine:selectionStartLine from:selectionStartCol to:selectionEndCol
+	] ifFalse:[
+	    selectionStartLine to:selectionEndLine do:[:lineNr |
+		self redrawLine:lineNr
+	    ]
+	].
+	selectStyle := nil.
     ]
 
     "
@@ -4611,14 +4611,14 @@
 
     selectLine := self lineAtY:y. "/ self visibleLineToListLine:(self visibleLineOfY:y).
     selectLine notNil ifTrue:[
-        self selectLine:selectLine
+	self selectLine:selectLine
     ]
 !
 
 selectLineWhereCharacterPosition:pos
     "select the line, where characterPosition pos is living.
      The argument pos starts at 1 from the start of the text
-     and counts characters (i.e. can be used to convert from 
+     and counts characters (i.e. can be used to convert from
      character position within a string to line-position in view)."
 
     self selectLine:(self lineOfCharacterPosition:pos)
@@ -4627,13 +4627,13 @@
 selectWordAtLine:line col:col
     "select the word at given line/col"
 
-    self 
-        wordAtLine:line col:col do:[
-            :beginLine :beginCol :endLine :endCol :style |
-
-            self selectFromLine:beginLine col:beginCol toLine:endLine col:endCol.
-            selectStyle := style
-        ]
+    self
+	wordAtLine:line col:col do:[
+	    :beginLine :beginCol :endLine :endCol :style |
+
+	    self selectFromLine:beginLine col:beginCol toLine:endLine col:endCol.
+	    selectStyle := style
+	]
 
     "Modified: 18.3.1996 / 17:30:38 / cg"
 !
@@ -4647,8 +4647,8 @@
     selectVisibleLine := self visibleLineOfY:y.
     selectLine := self visibleLineToListLine:selectVisibleLine.
     selectLine notNil ifTrue:[
-        selectCol := self colOfX:x inVisibleLine:selectVisibleLine.
-        self selectWordAtLine:selectLine col:selectCol
+	selectCol := self colOfX:x inVisibleLine:selectVisibleLine.
+	self selectWordAtLine:selectLine col:selectCol
     ]
 
     "Modified: / 8.9.1998 / 21:22:46 / cg"
@@ -4670,9 +4670,9 @@
     selectionStartLine isNil ifTrue:[^ nil].
     sel := self textFromLine:selectionStartLine col:(selectionStartCol max:1) toLine:selectionEndLine col:selectionEndCol.
     sel notNil ifTrue:[
-        (characterEncoding ? #'iso10646-1' "eg unicode") ~~ #'iso10646-1' ifTrue:[
-            sel := sel encodeFrom:characterEncoding into:#'iso10646-1'
-        ].
+	(characterEncoding ? #'iso10646-1' "eg unicode") ~~ #'iso10646-1' ifTrue:[
+	    sel := sel encodeFrom:characterEncoding into:#'iso10646-1'
+	].
     ].
     ^ sel
 
@@ -4715,9 +4715,9 @@
     "can be redefined for notification or special actions"
 
     device notNil ifTrue:[
-        "On X11, be nice and set the PRIMARY selection.
-         (#setPrimaryText:ownerView: is void in DeviceWorkstation)"
-        device setPrimaryText: self selectionAsString ownerView: self.
+	"On X11, be nice and set the PRIMARY selection.
+	 (#setPrimaryText:ownerView: is void in DeviceWorkstation)"
+	device setPrimaryText: self selectionAsString ownerView: self.
     ].
 
     "Created: / 17-04-2012 / 20:59:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -4740,34 +4740,34 @@
     |startLine endLine startVisLine endVisLine|
 
     selectionStartLine notNil ifTrue:[
-        startLine := selectionStartLine.
-        endLine := selectionEndLine.
-
-        self unselectWithoutRedraw.
-
-        "/ if the selection is not visible, we are done
-
-        startLine >= (firstLineShown + nLinesShown) ifTrue:[^ self].
-        endLine < firstLineShown ifTrue:[^ self].
-
-        startLine < firstLineShown ifTrue:[
-            startVisLine := 1
-        ] ifFalse:[
-            startVisLine := self listLineToVisibleLine:startLine
-        ].
-        endLine >= (firstLineShown + nLinesShown) ifTrue:[
-            endVisLine := nLinesShown
-        ] ifFalse:[
-            endVisLine := self listLineToVisibleLine:endLine
-        ].
-
-        "/ if its only part of a line, just redraw what has to be
-
-        (startLine == endLine) ifTrue:[
-            super redrawVisibleLine:startVisLine from:selectionStartCol to:selectionEndCol
-        ] ifFalse:[
-            self redrawFromVisibleLine:startVisLine to:endVisLine
-        ].
+	startLine := selectionStartLine.
+	endLine := selectionEndLine.
+
+	self unselectWithoutRedraw.
+
+	"/ if the selection is not visible, we are done
+
+	startLine >= (firstLineShown + nLinesShown) ifTrue:[^ self].
+	endLine < firstLineShown ifTrue:[^ self].
+
+	startLine < firstLineShown ifTrue:[
+	    startVisLine := 1
+	] ifFalse:[
+	    startVisLine := self listLineToVisibleLine:startLine
+	].
+	endLine >= (firstLineShown + nLinesShown) ifTrue:[
+	    endVisLine := nLinesShown
+	] ifFalse:[
+	    endVisLine := self listLineToVisibleLine:endLine
+	].
+
+	"/ if its only part of a line, just redraw what has to be
+
+	(startLine == endLine) ifTrue:[
+	    super redrawVisibleLine:startVisLine from:selectionStartCol to:selectionEndCol
+	] ifFalse:[
+	    self redrawFromVisibleLine:startVisLine to:endVisLine
+	].
     ].
     selectStyle := nil
 
@@ -4804,11 +4804,11 @@
 !TextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.345 2013-01-21 13:46:16 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.346 2013-01-26 21:11:40 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.345 2013-01-21 13:46:16 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/TextView.st,v 1.346 2013-01-26 21:11:40 cg Exp $'
 ! !