a question about cut

Scott Wallace scott.wallace at squeakland.org
Thu Sep 23 04:29:49 UTC 2004


Hi, John,

Well it's certainly an intentional feature.

Though it's not a feature of VisualWorks, nor perhaps of any other 
Smalltalk for that matter, for many years it has been a trademark 
feature of Squeak that any text-editing command that requires a 
non-empty selection, if issued when the selection is an insertion 
point (i.e. is empty,) will first select the current line before 
executing the command.

This convention is followed for all the twenty-some-odd commands that 
can be invoked from within the text-editor which require a non-empty 
selection.

For many users (including me) this convention is a huge time saver 
and wrist-preserver.

For example, on a blank line anywhere that text can be typed, you can type:
      Morph <cmd-b>
and without needing to click the mouse or fish into a menu, you will 
have a browser open on class Morph.

Similarly, you can type
     lineSelec <cmd-q> <cmd-n>
and you'll immediately be presented with all senders of 
#lineSelectAndEmptyCheck: -- which, incidentally, will reveal all the 
commands to which the convention applies.

Or, similarly, type
     cut <cmd-shift-W>
to discover all selectors that contain the keyword "cut".

I suppose that if there are others like you who find this feature 
unsettling, we could make it be governed by a Preference.

Or perhaps you're only objecting to having the feature apply to 
"cut," but would be happy to see it continue to work for all the 
other two dozen commands which can be invoked within the text-editor 
and which require a non-null selection?

Cheers,

  -- Scott

At 8:22 PM -0700 9/22/04, John M McIntosh wrote:
>I was testing host menu support today and as part of the testing 
>noticed something odd, but in fact it's been there a long time.
>You see if you select nothing in a text field (aka a 
>ParagraphEditor) it makes the entire line disappear.  WHAT?
>
>mmm a bug on my part, no.
>
>You see ParagraphEditor>>cut reads...
>
>cut
>	"Cut out the current selection and redisplay the paragraph if 
>necessary.  Undoer & Redoer: undoCutCopy:"
>
>	self lineSelectAndEmptyCheck: [^ self].
>
>	self replaceSelectionWith: self nullText.
>	self undoer: #undoCutCopy: with: self clipboardText.
>	self clipboardTextPut: UndoSelection
>
>Part of the logic in lineSelectAndEmptyCheck: selects the entire 
>line if the selection point is nil and there is a run of something 
>to select, otherwise it flashes the text area. So it on purpose 
>selects the line, then does the cut.
>
>In checking VisualWorks 5.x I see it doesn't have this behavior, and 
>usually I've selected some text when I do a cut.
>So the question is should we change things? I just found this 
>behavior a bit odd.
>
>--
>===========================================================================
>John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
>Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
>===========================================================================




More information about the Squeak-dev mailing list