[TxMt] Modifying word selection

James Andrews james.andrews at re-cog.com
Tue Apr 11 17:02:22 UTC 2006


On 11 Apr 2006, at 16:02, Allan Odgaard wrote:

> Try this:
>
>  1) Automation -> Start Macro Recording
>  2) Edit -> Find -> FindÉ
>  3) Enter this as search string: (?<![a-z])[a-z]+(?![a-z])
>  4) Check the regular expression and ignore case checkboxes
>  5) Click Previous and close the Find dialog
>  6) Automation -> Stop Macro Recording
>
> Now you have a macro which _selects_ the current word defined as  
> only consisting of a-z.

Thanks Allan, this works a treat - I modified the regex to include  
numbers: (?<![a-z0-9])[a-z0-9]+(?![a-z0-9])

> You can save this macro on any key you like, e.g. put it on option- 
> W to signal Òmodified word selectionÓ.

Option-w creates this: · so I settled on ctrl-opt-w. Since repeated  
presses causes the selection to move backwards through words/word  
elements, I've actually recorded another version on linked keys to  
move forwards (shift-ctrl-opt-w).

> You can give this (saved) macro a scope selector. For example if  
> this is how you want word selections in CSS properties, give it a  
> scope selector of meta.property-list.css or just source.css -- then  
> you can record macros (with changed character sets) for other  
> scopes and use the same key (and TM will pick the proper macro), or  
> you can use different keys for different variants.

It's great that scopes can alter the behaviour of this depending on  
the type of content you're working on - I'll wait to see if I  
actually need to use this.

Perhaps there isn't the demand for this from elsewhere, but I would  
like to see my original suggestion implemented within TM at some  
point, as the macro approach does have some drawbacks in terms of  
expected or desired behaviour (Issues 1 & 2 are linked and probably  
fixable by modifying the macro):

1/ unlike ctrl-w, the current selection changes with repeated presses  
(though I've tried to make a virtue of this fact.)
2/ if at the start of the word/'word element' it selects the previous  
word or word element rather than the current one.
3/ cannot extend the selection to include the whole of the next 'word  
element' as you can do with words (using shift-opt-left or right.)
4/ cannot jump the cursor to the next 'word element' boundary -  
equivalent of cmd-left or cmd-right.
5/ cannot utilise mouse equivalents of selecting the whole word  
(double-click.)
6/ requires a change of mental context to switch to a command based  
keystroke rather than using current selection keys or mousing  
techniques with an additional modifier.

This probably 'ain't a priority', but I just wanted to suggest the  
idea so it was 'out'. After all, I already have a solution that does  
most of what I need (once again proving the power and flexibility of  
TM) and the full answer may lie in adding even more functionality to  
macros to obviate the issues I raised.

Thanks for the help and responses and thanks for listening.
James



James Andrews
Director

r e  -  c o g
http://re-cog.com  http://re-cogmedia.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macromates.com/textmate/attachments/20060411/19ab86b2/attachment.html>


More information about the textmate mailing list