Auto Enclose broken (was: Re: [squeak-dev] The shiftEnclose: horror show)

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Tue Aug 9 10:12:07 UTC 2011


Chris,
I don't understand this sentence

2011/8/9 Chris Muller <asqueaker at gmail.com>:
> Only the closing character is typed, not the opening..
>
> On Thu, Aug 4, 2011 at 3:15 AM, Nicolas Cellier
> <nicolas.cellier.aka.nice at gmail.com> wrote:
>> I'm typing this message on a mac French keyboard.
>> That means I can obtain the holy brackets [ | ] only through weird
>> keystroke combinations
>> | = shit+option+L
>> [ = shift+option+( where shift+5 is (
>>
>> Enclosing a text in square brackets would require some finger torture
>> both in Squeak/Pharo
>> shift+option+command+(
>> But this does not work because of #shiftEnclose: rules encountered in
>> #initializeShiftCmdKeyShortcuts
>> (found both ParagraphEditor class and TextEditor class)
>>
>>        "Note: Command key overrides shift key, so, for example, cmd-shift-9
>> produces $9 not $("
>>        '9[,''' do: [ :char | cmdMap at: (char asciiValue + 1) put:
>> #shiftEnclose: ].       "({< and double-quote"
>>        "Note: Must use cmd-9 or ctrl-9 to get '()' since cmd-shift-9 is a
>> Mac FKey command."
>>
>> shiftEnclose: is badly designed because it does hardcode the keyboard
>> layout (see below).
>> This is not compatible with modern VMs, at least the mac ones, because
>> they deliver a unicode codePoint for $[ or $|, not a raw keycode.
>> It's easy to remove this anachronism and correct the mapping:
>>
>>        "On some keyboards, these characters require a shift"
>>        '([<{|"''' do: [:char | cmdMap at: char asciiValue + 1 put: #enclose:].
>>
>> To avoid pushing a mac-centric change in trunk, I need to know if the
>> Linux/Windows VM would support above modification.
>> Can anyone check for me ?
>>
>> Nicolas
>>
>>
>>
>>
>>
>> Example of hardcoded keyboard layout:
>> TextEditor>>shiftEnclose: aKeyboardEvent
>>        "Insert or remove bracket characters around the current selection.
>>         Flushes typeahead."
>>
>>        | char left right startIndex stopIndex oldSelection which text |
>>        char := aKeyboardEvent keyCharacter.
>>        char = $9 ifTrue: [ char := $( ].
>>        char = $, ifTrue: [ char := $< ].
>>        char = $[ ifTrue: [ char := ${ ].
>>        char = $' ifTrue: [ char := $" ].
>>        char asciiValue = 27 ifTrue: [ char := ${ ].    "ctrl-["
>> snip...
>>
>>
>
>



More information about the Squeak-dev mailing list