在TextMate片段中,如何引入当前类和/或方法名称?

时间:2013-02-24 01:12:22

标签: textmate code-snippets

就像我可以使用 $ TM_SELECTED_TEXT 将当前选定的文本拉入一个片段一样,有什么办法可以从我的代码中检索文本,比如包含当前插入符号的方法名称或类名位置?

这对于快速创建有用的日志消息非常有用。

所以,如果我有一些,比方说,JavaScript代码(用|表示光标/插入位置):

function doSomething() {
   somethingElse();
   |
}

我希望能够通过一个片段吐出 doSomething

类似的东西,

 console.log($TM_CURRENT_METHOD_NAME + "() $1");

这样的事情可能吗?

1 个答案:

答案 0 :(得分:0)

在我的fork of the Ember bundle中,我将此脚本放在Support/bin/camelize_filename

#!/usr/bin/env ruby
c=%w{config helpers mixins controllers models routes templates views}.join('|')
r = %r{.*/(?:#{c})/(.*)\.js}
puts ENV['TM_FILEPATH'].sub(%r{.*/(?:#{c})/(.*)\.js},'\1').
  gsub(/(?:_|(\/)|^)([a-z\d]*)/){|s| "#{$1}#{$2.capitalize}" }.gsub('/','')

然后我在片段中使用它:

console.groupCollapsed("`camelize_filename`#model");

您可以通过调整正则表达式来匹配其他框架,以匹配哪个目录段属于类的命名空间,哪些不匹配,以及更改gsub(' /',&#39 ;')如果您感兴趣的语言使用名称空间分隔符,例如' ::'。