Вы были очень близки, я просто переделаны несколько вещей:
(?i:(?!\$[a-z_][a-z0-9_]*->)([a-z_][a-z_0-9]*)\s*\()
Первое, что я сделал, было обернуть все выражение в «случае без учета регистра» модификатор, так что ничего не пропало. Наверное, не нужно, но что угодно. Во-вторых, и что более важно, я взял вашу первую группу, которая была вне круглых скобок, и сделала их негативным взглядом. Таким образом, они соответствуют имени класса и стрелке, но не сообщают об этом - в основном говорят: «Сопоставьте все, что впереди нас, пока мы существуем перед ним, но не будем нам соответствовать».
Теперь у вас будет область действия, совпадающая с именем метода.
Demo
Теперь, вот что я не понимаю - почему вы должны сделать это. Я поддерживаю как language syntax, так и color scheme, поэтому у меня есть большой опыт работы с областями в Sublime Text и TextMate. И, насколько мне известно, PHP .tmLanguage
уже включает области для вызовов функций. Я не эксперт PHP любых средств, но я знаю основы, так что я сделал три примера различных вызовов функции PHP:
Green выдвигает на первый план большого разнообразия вызовов функций на разных языках. В верхнем примере baz_quux
имеет номер meta.function-call.object.php
, в среднем примере это meta.function-call.static.php
, а в нижней части - meta.function-call.php
. Я не понимаю, откуда вы получаете variable.other.property.php
.
Однако, если я забрать скобки после вызова функции выше:
Я получаю следующую области действия, сверху вниз: variable.other.property.php
(! аха), constant.other.class.php
и constant.other.php
. Если я вернусь назад, и добавьте пробел или три после окончания имени функции, они будут выделены как функции зеленым цветом.
Итак, пока у нас было какое-то удовольствие с регулярными выражениями сегодня, в конечном итоге ваша работа уже была сделана для вас.Если вы собираетесь заниматься поиском больше, я настоятельно рекомендую плагин ScopeAlways
, который, как и его название, всегда отображает всю область текущего положения курсора в нижней панели (вы можете отключить ее с помощью команды Палитра, если хотите). Если я получаю запрос на выделение подсветки моей цветовой схемы на новый язык, я просто открываю столько кода, сколько могу найти и протащить мышкой, глядя на разные области, а затем редактирую тему, чтобы при необходимости исправить цвета, или добавить новые для новых областей. I , затем сканирование через файл .tmLanguage
(после converting it to YAML) и посмотреть, пропустил ли я что-нибудь.
Удачи вам в работе!
так что вы пробовали? – MattDMo
Я редактировал сообщение, чтобы включить то, что я пробовал –