2013-02-24 2 views
0

Точно так же, как я могу вытащить выделенный текст в фрагмент, используя $ TM_SELECTED_TEXT, есть ли способ получить текст из моего кода, например имя метода или имя класса, содержащее текущую позицию каретки?В фрагменте TextMate, как я могу взять текущее имя класса и/или метода?

Это было бы очень полезно для быстрого создания полезных сообщений журнала.

Так что, если у меня были некоторые, скажем, код JavaScript (с | представляющий курсор/местоположение курсора):

function doSomething() { 
    somethingElse(); 
    | 
} 

Я хотел бы быть в состоянии выплюнуть DoSomething через сниппета.

Что-то подобное,

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

ли что-то подобное возможно?

ответ

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 ('/', ''), если интересующий вас язык использует разделитель пространства имен, например «::».

+0

Спасибо за ответ. К сожалению, код и ваше описание немного над моей головой. Это просто выполнение некоторого регулярного выражения по имени файла? Является ли какая-нибудь часть этого вопроса ближе к извлечению имени текущего метода и выводу его через фрагмент? – SCCOTTT