Thank you Alan and Hans for your answer.
On Aug 30, 2012, at 11:11 AM, Hans-Jörg Bibiko bibiko@eva.mpg.de wrote:
select: "something a_method(with, arguments)"
and invoke that snippet
${1:variable} = `echo -ne "$TM_SELECTED_TEXT" | perl -pe 's/^\s*\w+\s*//'` `echo -ne "$TM_SELECTED_TEXT" | perl -pe 's/^\s*(\w+)\s*.*/\1/'` ${1/\s*//}
Neat approach but no need to call out to shell / perl:
${1:variable} = ${TM_SELECTED_TEXT/\A\s*\w+\s*//} ${TM_SELECTED_TEXT/\A\s*(\w+).*/$1/} ${1}
It is working with the exact (very simple) example that I've written previously. But it is not working at all with a slightly more complicated real example like that :
@articles = @article.category_id.present? ? Article.where('category_id = ?', @article.category_id) : []
I'd like to obtain this :
variable = Article.where('category_id = ?', @article.category_id) @articles = @article.category_id.present? ? variable : []
I guess your solution doesn't work in this example because of the whitespaces, …
In Vim, it seems that it can be done with a prompt of the desired variable name, then replacing the selected text with it, and finally inserting the assignment on a new line above.
Does this seems feasible in TextMate?
And here’s a tip regarding selection: in 2.0 using a “unit selection”, i.e. the stuff under Edit → Select, using shift + movement will always extend selection, so e.g. with something like:
something a_method(with, arguments), something_else
Place caret inside parenthesis, use ⇧⌘B (select to enclosing pairs) and then one can use ⌥⇧← to extend the selection to the method name (with 1.x unit selections would produce a regular “anchored” selection, so using left/right movement would shrink/expand respectively).
I should have stated that I'm using TextMate Version 1.5.11 (1634)
I'm not a big fan of alpha software for my day to day use ;-)
Thank you so much for your help, it's really appreciated.
Jérémy Lecour Conception et développement d'applications web http://jeremy.wordpress.com - http://twitter.com/jlecour