<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>