class: EditTextView
changed: #doKeyPress:x:y:
combination of autoIndent and st80 cursor mode.
--- a/EditTextView.st Sat Nov 09 04:26:01 2013 +0000
+++ b/EditTextView.st Mon Nov 11 21:43:18 2013 +0100
@@ -12,128 +12,128 @@
"{ Package: 'stx:libwidg' }"
TextView subclass:#EditTextView
- instanceVariableNames:'cursorLine cursorVisibleLine cursorCol cursorShown
- prevCursorState readOnly modifiedChannel fixedSize exceptionBlock
- cursorFgColor cursorBgColor cursorNoFocusFgColor cursorType
- cursorTypeNoFocus typeOfSelection lastAction replacing
- showMatchingParenthesis hasKeyboardFocus acceptAction lockUpdates
- tabMeansNextField autoIndent insertMode editMode trimBlankLines
- wordWrap replacementWordSelectStyle acceptChannel acceptEnabled
- st80Mode disableIfInvisible cursorMovementWhenUpdating learnMode
- learnedMacro cursorLineHolder cursorColHolder tabRequiresControl
- undoSupport lastStringFromReplaceForNextSearch
- lastReplacementInfo completionSupport codeAspectHolder'
- classVariableNames:'DefaultCursorForegroundColor DefaultCursorBackgroundColor
- DefaultCursorType DefaultCursorNoFocusForegroundColor
- DefaultCursorTypeNoFocus LastColumnNumberForSort Macros'
- poolDictionaries:''
- category:'Views-Text'
+ instanceVariableNames:'cursorLine cursorVisibleLine cursorCol cursorShown
+ prevCursorState readOnly modifiedChannel fixedSize exceptionBlock
+ cursorFgColor cursorBgColor cursorNoFocusFgColor cursorType
+ cursorTypeNoFocus typeOfSelection lastAction replacing
+ showMatchingParenthesis hasKeyboardFocus acceptAction lockUpdates
+ tabMeansNextField autoIndent insertMode editMode trimBlankLines
+ wordWrap replacementWordSelectStyle acceptChannel acceptEnabled
+ st80Mode disableIfInvisible cursorMovementWhenUpdating learnMode
+ learnedMacro cursorLineHolder cursorColHolder tabRequiresControl
+ undoSupport lastStringFromReplaceForNextSearch
+ lastReplacementInfo completionSupport codeAspectHolder'
+ classVariableNames:'DefaultCursorForegroundColor DefaultCursorBackgroundColor
+ DefaultCursorType DefaultCursorNoFocusForegroundColor
+ DefaultCursorTypeNoFocus LastColumnNumberForSort Macros'
+ poolDictionaries:''
+ category:'Views-Text'
!
Object subclass:#EditAction
- instanceVariableNames:'userFriendlyInfo'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'userFriendlyInfo'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#DeleteRange
- instanceVariableNames:'line1 col1 line2 col2'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'line1 col1 line2 col2'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#DeleteCharacters
- instanceVariableNames:'line col1 col2'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'line col1 col2'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
Object subclass:#EditMode
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditMode subclass:#InsertAndSelectMode
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView::EditMode
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView::EditMode
!
EditTextView::EditMode subclass:#InsertMode
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView::EditMode
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView::EditMode
!
EditTextView::EditMode subclass:#OverwriteMode
- instanceVariableNames:''
- classVariableNames:'InsertMode OverwriteMode InsertAndSelectMode'
- poolDictionaries:''
- privateIn:EditTextView::EditMode
+ instanceVariableNames:''
+ classVariableNames:'InsertMode OverwriteMode InsertAndSelectMode'
+ poolDictionaries:''
+ privateIn:EditTextView::EditMode
!
Query subclass:#ExecutingMacroQuery
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
Object subclass:#LastReplacementInfo
- instanceVariableNames:'lastReplacement lastStringToReplace lastReplaceWasMatch
- lastReplaceIgnoredCase stillCollectingInput previousReplacements'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'lastReplacement lastStringToReplace lastReplaceWasMatch
+ lastReplaceIgnoredCase stillCollectingInput previousReplacements'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#PasteString
- instanceVariableNames:'line col string selected'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'line col string selected'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#ReplaceCharacter
- instanceVariableNames:'line col character'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'line col character'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#ReplaceCharacters
- instanceVariableNames:'line col1 col2 characters'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'line col1 col2 characters'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#ReplaceContents
- instanceVariableNames:'text'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'text'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#ReplaceLine
- instanceVariableNames:'line text'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'line text'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
EditTextView::EditAction subclass:#ReplaceLines
- instanceVariableNames:'line text'
- classVariableNames:''
- poolDictionaries:''
- privateIn:EditTextView
+ instanceVariableNames:'line text'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:EditTextView
!
!EditTextView class methodsFor:'documentation'!
@@ -5075,7 +5075,7 @@
]
]
] ifTrue:[
- |left right|
+ |left right oldIndent|
"/ old version just unselected ...
"/ self unselect; makeCursorVisible.
@@ -5105,7 +5105,13 @@
i := i - 4.
].
].
- self indentFromLine:cursorLine toLine:cursorLine by:i.
+ oldIndent := self leftIndentOfLine:cursorLine.
+ self indentFromLine:cursorLine toLine:cursorLine by:(i-oldIndent).
+ self st80EditMode ifTrue:[
+ (self listAt:cursorLine) size < i ifTrue:[
+ self insertStringAtCursor:(String new:((i-oldIndent) max:0)).
+ ].
+ ].
self cursorCol:(i+1 max:1)
].
]
@@ -8501,10 +8507,10 @@
!EditTextView class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.596 2013-11-08 11:37:06 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.597 2013-11-11 20:43:18 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.596 2013-11-08 11:37:06 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.597 2013-11-11 20:43:18 cg Exp $'
! !