<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
Hi Eliot --<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt"> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">I can't see how to do it at all. I have no "enclose" preferences set.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">Please enable that preference. The older "shortcuts" were in no way cross-language compatible. They even broke on a German keyboard layout.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">TextEditor encloseSelection: true.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">Then make a text selection and type the opening bracket of your choice, which is on a US-Layout:</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">Shift+9 for ( ... )</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">[ for [ ... ]</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">Shift+[ for { ... }</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 10pt">Marcel</span></div><div class="mb_sig"></div>
<blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
<p style="color: #AAAAAA; margin-top: 10px;">Am 14.12.2021 23:06:17 schrieb Eliot Miranda <eliot.miranda@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size: 10pt">Hi Marcel,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Dec 4, 2021 at 3:26 AM <<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex;border-left-width: 1px;border-left-style: solid;border-left-color: rgb(204,204,204);padding-left: 1ex;min-width: 500px">Marcel Taeumel uploaded a new version of Morphic to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Morphic-mt.1812.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/trunk/Morphic-mt.1812.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-mt.1812<br>
Author: mt<br>
Time: 4 December 2021, 12:26:07.860493 pm<br>
UUID: 89876df1-baaa-314b-9274-bc585d62f388<br>
Ancestors: Morphic-mt.1811<br>
<br>
Removes US-layout specific keyboard shortcuts for 'Enclose selection' in favor of the cross-platform compatible preference 'Enclose selection with brackets'. Just type the bracket character like you would in normal text editing. No extra shortcut to remember.<br>
<br>
Note that the "replace expression" operation needs an extra Del/Backspace hit if "Enclose selection with brackets" is enabled (by default).<br>
<br>
Note that dead keys might be an issue when the second key press yields two characters, which effectively toggles the brackets around the selection twice. I did observe that with the single-quote/double-quote key in an US-layout on Windows 10.<br></blockquote><div><br></div><div class="gmail_default" style="font-size: 10pt">So how do I enclose the selection with brackets now? I can't see how to do it at all. I have no "enclose" preferences set.</div><div class="gmail_default" style="font-size: 10pt"><br></div><div class="gmail_default" style="font-size: 10pt">Also, if I select something in a class definition in a browser, type Command-9 I get "MessageNotUnderstood: TextKern>>turnOff.</div><div class="gmail_default" style="font-size: 10pt"><br></div><div class="gmail_default" style="font-size: 10pt">Frustratedly...</div><div class="gmail_default" style="font-size: 10pt"><br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex;border-left-width: 1px;border-left-style: solid;border-left-color: rgb(204,204,204);padding-left: 1ex;min-width: 500px">
<br>
=============== Diff against Morphic-mt.1811 ===============<br>
<br>
Item was changed:<br>
----- Method: TextEditor class>>encloseSelection (in category 'preferences') -----<br>
encloseSelection<br>
<preference: 'Enclose selection with brackets () {} [] '''' "" || <>'<br>
categoryList: #('Morphic' 'editing')<br>
description: 'When true, selecting text and typing an opening parenthesis, bracket, square-bracket, single quote, or double quote will add corresponding character around the selection without requiring a cmd key.'<br>
type: #Boolean><br>
<br>
+ ^ EncloseSelection ifNil: [ true ]!<br>
- ^ EncloseSelection ifNil: [ false ]!<br>
<br>
Item was changed:<br>
----- Method: TextEditor class>>initializeCmdKeyShortcuts (in category 'keyboard shortcut tables') -----<br>
initializeCmdKeyShortcuts<br>
"Initialize the (unshifted) command-key (or alt-key) shortcut table."<br>
<br>
"NOTE: if you don't know what your keyboard generates, use Sensor kbdTest"<br>
<br>
"TextEditor initialize"<br>
<br>
| cmdMap cmds |<br>
cmdMap := Array new: 256 withAll: #noop:. "use temp in case of a crash"<br>
cmdMap at: 1 + 1 put: #cursorHome:. "home key"<br>
cmdMap at: 4 + 1 put: #cursorEnd:. "end key"<br>
cmdMap at: 8 + 1 put: #backspace:. "ctrl-H or delete key"<br>
cmdMap at: 11 + 1 put: #cursorPageUp:. "page up key"<br>
cmdMap at: 12 + 1 put: #cursorPageDown:. "page down key"<br>
cmdMap at: 13 + 1 put: #crWithIndent:. "cmd-Return"<br>
cmdMap at: 27 + 1 put: #offerMenuFromEsc:. "escape key"<br>
cmdMap at: 28 + 1 put: #cursorLeft:. "left arrow key"<br>
cmdMap at: 29 + 1 put: #cursorRight:. "right arrow key"<br>
cmdMap at: 30 + 1 put: #cursorUp:. "up arrow key"<br>
cmdMap at: 31 + 1 put: #cursorDown:. "down arrow key"<br>
cmdMap at: 32 + 1 put: #selectWord:. "space bar key"<br>
cmdMap at: 127 + 1 put: #forwardDelete:. "del key"<br>
<br>
'0123456789-=' <br>
do: [:char | cmdMap at: char asciiValue + 1 put: #changeEmphasis:].<br>
- <br>
- '([<{|"''' do: [:char | cmdMap at: char asciiValue + 1 put: #enclose:].<br>
<br>
cmds := #($a #selectAll: $c #copySelection: $e #exchange: $f #find: $g #findAgain: $j #doAgain: $k #offerFontMenu: $u #align: $v #paste: $w #backWord: $x #cut: $y #swapChars: $z #undo:).<br>
1 to: cmds size<br>
by: 2<br>
do: [:i | cmdMap at: (cmds at: i) asciiValue + 1 put: (cmds at: i + 1)].<br>
<br>
cmdActions := cmdMap!<br>
<br>
Item was changed:<br>
----- Method: TextEditor class>>initializeShiftCmdKeyShortcuts (in category 'keyboard shortcut tables') -----<br>
initializeShiftCmdKeyShortcuts <br>
"Initialize the shift-command-key (or control-key) shortcut table."<br>
"NOTE: if you don't know what your keyboard generates, use Sensor kbdTest"<br>
"wod 11/3/1998: Fix setting of cmdMap for shifted keys to actually use the <br>
capitalized versions of the letters.<br>
TPR 2/18/99: add the plain ascii values back in for those VMs that don't return the shifted values."<br>
<br>
"TextEditor initialize"<br>
<br>
| cmdMap cmds |<br>
<br>
"shift-command and control shortcuts"<br>
cmdMap := Array new: 256 withAll: #noop:. "use temp in case of a crash"<br>
cmdMap at: ( 1 + 1) put: #cursorHome:. "home key"<br>
cmdMap at: ( 4 + 1) put: #cursorEnd:. "end key"<br>
cmdMap at: ( 8 + 1) put: #forwardDelete:. "ctrl-H or delete key"<br>
cmdMap at: (11 + 1) put: #cursorPageUp:. "page up key"<br>
cmdMap at: (12 + 1) put: #cursorPageDown:. "page down key"<br>
cmdMap at: (13 + 1) put: #crWithIndent:. "ctrl-Return"<br>
cmdMap at: (27 + 1) put: #offerMenuFromEsc:. "escape key"<br>
cmdMap at: (28 + 1) put: #cursorLeft:. "left arrow key"<br>
cmdMap at: (29 + 1) put: #cursorRight:. "right arrow key"<br>
cmdMap at: (30 + 1) put: #cursorUp:. "up arrow key"<br>
cmdMap at: (31 + 1) put: #cursorDown:. "down arrow key"<br>
cmdMap at: (32 + 1) put: #selectWord:. "space bar key"<br>
cmdMap at: (45 + 1) put: #changeEmphasis:. "cmd-sh-minus"<br>
cmdMap at: (61 + 1) put: #changeEmphasis:. "cmd-sh-plus"<br>
cmdMap at: (127 + 1) put: #forwardDelete:. "del key"<br>
<br>
- "On some keyboards, these characters require a shift"<br>
- '([<{|"''9' do: [:char | cmdMap at: char asciiValue + 1 put: #enclose:].<br>
- <br>
- "NB: sw 12/9/2001 commented out the idiosyncratic line just below, which was grabbing shift-esc in the text editor and hence which argued with the wish to have shift-esc be a universal gesture for escaping the local context and calling up the desktop menu." <br>
- "cmdMap at: (27 + 1) put: #shiftEnclose:." "ctrl-["<br>
- <br>
- "'""''(' do: [ :char | cmdMap at: (char asciiValue + 1) put: #enclose:]."<br>
- <br>
cmds := #(<br>
$c compareToClipboard:<br>
$h cursorTopHome:<br>
$j doAgainUpToEnd:<br>
$k changeStyle:<br>
$m selectCurrentTypeIn:<br>
$s findAgain:<br>
$u changeLfToCr:<br>
$x makeLowercase:<br>
$y makeUppercase:<br>
$z redo: "makeCapitalized:"<br>
).<br>
1 to: cmds size by: 2 do: [ :i |<br>
cmdMap at: ((cmds at: i) asciiValue + 1) put: (cmds at: i + 1). "plain keys"<br>
cmdMap at: ((cmds at: i) asciiValue - 32 + 1) put: (cmds at: i + 1). "shifted keys"<br>
cmdMap at: ((cmds at: i) asciiValue - 96 + 1) put: (cmds at: i + 1). "ctrl keys"<br>
].<br>
shiftCmdActions := cmdMap!<br>
<br>
Item was changed:<br>
----- Method: TextEditor>>enclose: (in category 'editing keys') -----<br>
enclose: aKeyboardEvent<br>
"Insert or remove bracket characters around the current selection."<br>
<br>
| character left right startIndex stopIndex oldSelection which t |<br>
+ character := aKeyboardEvent keyCharacter.<br>
- character := aKeyboardEvent shiftPressed<br>
- ifTrue: ['{}|"<>' at: ('[]\'',.' indexOf: aKeyboardEvent keyCharacter) ifAbsent: [aKeyboardEvent keyCharacter]]<br>
- ifFalse: [aKeyboardEvent keyCharacter].<br>
self closeTypeIn.<br>
startIndex := self startIndex.<br>
stopIndex := self stopIndex.<br>
oldSelection := self selection.<br>
+ which := '([<{|"''' indexOf: character ifAbsent: [ ^ false ].<br>
+ left := '([<{|"''' at: which.<br>
+ right := ')]>}|"''' at: which.<br>
- which := '([<{|"''9' indexOf: character ifAbsent: [ ^ false ].<br>
- "Allow Control key in lieu of Alt+Shift for (, {, and double-quote."<br>
- left := ((Preferences cmdKeysInText and: [ aKeyboardEvent controlKeyPressed ])<br>
- ifTrue: [ '({<{|""(' ]<br>
- ifFalse: ['([<{|"''(']) at: which.<br>
- right := ((Preferences cmdKeysInText and: [ aKeyboardEvent controlKeyPressed ])<br>
- ifTrue: [ ')}>}|"")' ] <br>
- ifFalse: [')]>}|"'')']) at: which.<br>
t := self text.<br>
((startIndex > 1 and: [stopIndex <= t size])<br>
and: [ (t at: startIndex-1) = left and: [(t at: stopIndex) = right]])<br>
ifTrue:<br>
["already enclosed; strip off brackets"<br>
self selectFrom: startIndex-1 to: stopIndex.<br>
self replaceSelectionWith: oldSelection]<br>
ifFalse:<br>
["not enclosed; enclose by matching brackets"<br>
self replaceSelectionWith:<br>
(Text string: (String with: left), oldSelection string, (String with: right) attributes: emphasisHere).<br>
self selectFrom: startIndex+1 to: stopIndex].<br>
^true!<br>
<br>
Item was changed:<br>
+ (PackageInfo named: 'Morphic') postscript: 'Editor initialize. "Removes US-layout specific keyboard shortcuts for ''Enclose selection'' in favor of the cross-platform compatible preference ''Enclose selection with brackets''."'!<br>
- (PackageInfo named: 'Morphic') postscript: 'SystemProgressMorph reset. "New layer number"<br>
- <br>
- "Morphic-ct.1796 - Inverts the preference ''halo encloses full bounds'' by pressing the control key while invocating a halo."<br>
- (Preferences preferenceAt: #haloEnclosesFullBounds) instVarNamed: ''helpString'' put: ''If enabled, halos will enclose the full bounds of the target morph, rather than just the bounds. You can also invert this behavior temporarily by holding down Ctrl while invoking a halo on a morph.''.'!<br>
<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-size: 10pt;border-collapse: separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div></div>
</div></blockquote></div>