[TxMt] Re: Bug in enclose selection with multi-key characters using US-International keyboard layout

Allan Odgaard mailinglist at textmate.org
Fri Sep 19 16:31:25 UTC 2014


On 19 Sep 2014, at 17:28, Eduardo Francos wrote:

> […] It seems from the program's behavior that TM's keyboard<->action 
> binding system activates the action as soon as it receives the initial 
> dead key character and before the sequence of characters is finished 
> (hasMarkedText would/should return TRUE). If it could wait until all 
> the insertText calls are issued followed by the unmarkText call then 
> it would have the real character intended by the user.

I don’t think this is the problem, rather, in the case of typing é 
via a dead key, the user first types ´ and the system asks TextMate to 
insert ´ and have it *selected*, this is where TextMate will overwrite 
your current selection (and make a new), but since it’s part of a 
multi-input sequence, it won’t really do more. Next the user press E 
and the system then asks TextMate to insert é, this time not as 
selected, but as we already have ´ as selected text, it’ll replace 
what’s already typed (and the original selection you want to wrap was 
lost in first step).

> I dived in the code (mainly OakTextView) and couldn't understand what 
> was going on […]

I can’t claim to fully understand Apple’s NSTextInput protocol and 
the current code is the result of lots of trial-and-error with various 
official and third party input modes, so I’m not keen on touching it 
to try and address your issue, not to say it’s impossible.

The NSTextInput protocol has since been superseded, and at some time I 
will update the code to use the new protocol, I’ll keep your issue in 
mind when updating it.


More information about the textmate mailing list