On 17 Dec 2011, at 21:34, Gerd Knops wrote:
TM2 still appears to have the same troublesome selection behavior TM1 has. As an example take this line in Perl:
die("$self failed to implement ".(caller(0))[3]);
Ideally I could select '$self' by double-clicking. For that to work I would need to tell TM2 that $ is a word character in Perl, per grammar word character definitions are needed. (That may be there already, but I can't find it being mentioned anywhere.)
If I double-click $self it selects the entire thing incl. ‘$’.
TM2 allows you to set characterClass per scope — the ‘$self’ in your example is scoped as ‘variable.other…’ and in the source bundle we set ‘{ characterClass = 'variable'; }’ for the ‘variable’ scope which means that TM2 will consider that a different unit than the surrounding text (for word movement, selection, etc.)
Now double-clicking on 'self' and moving the mouse to the left to add the '$' doesn't work because it adds '("$'. TM2 should treat non-word characters as individual characters instead of grouping them together into a "word" when extending a selection that started with a double-click.
Sounds like you may have a local source bundle that eclipse the default one or similar.
Similarly it is impossible to select 'caller(0)' by double-clicking 'caller' and extending to the right, instead one ends up with 'caller(0))['.
For me ‘(’ is another unit than ‘0’ but ‘))[’ is all the same unit — though could be changed via grammar rules — that might be cumbersome, but OTOH hardcoding it in TM isn’t exactly any simpler (and less flexible).