Пакет для синтаксиса хэша Ruby 1.9 или способ изменить существующие совпадения?

Я работаю с Rails и использую Ruby 1.9 в SublimeText, но он делает некоторую причудливую подсветку с новым синтаксисом хэша Ruby 1.9.

Например, со следующим хэшем, который довольно распространен для рельсов:

<%= link_to some_page_here_path, class: "btn btn-primary" %>

Ключевое слово class выделяется, когда на самом деле это не настоящее ключевое слово, а просто простой хеш-ключ. Я бы предпочел, чтобы оно было оформлено как символ (как в Ruby 1.9), а не как зарезервированное слово. Это относится и к другим зарезервированным словам: for, while, do и т. д.

Есть ли способ заставить это работать в существующем Ruby.tmLanguage или в файле tmLanguage, который уже это делает? Цените любую помощь. Спасибо!


person trisweb    schedule 13.07.2012    source источник


Ответы (1)


У меня была та же проблема, поэтому я пошел дальше и отредактировал файл Ruby.tmLanguage, чтобы исправить ее.

Вы можете найти определение зарезервированных ключевых слов, выполнив поиск в файле keyword.control.ruby; соответствующее регулярное выражение выглядит

(?&lt;!\.)\b(BEGIN|begin|case|class|...|when|while)\b(?![?!])

Отрицательный просмотр в конце (?![?!]) не позволяет ему сопоставлять имена методов, такие как class? и class!, поэтому добавление двоеточия в список (?![?!:]) также остановит сопоставление хеш-ключей, таких как class:.

person Andrew Haines    schedule 12.08.2012
comment
Это работает отлично! Я не думаю, что нашел бы это за миллион лет. Большое спасибо, что вернулись и оставили ответ здесь, очень признателен. - person trisweb; 25.08.2012
comment
Это только что сделало всю мою неделю. Спасибо, Энди! Кстати, в этом файле есть еще несколько регулярных выражений, которые нуждаются в такой же обработке. Я провел поиск этого отрицательного просмотра во всем файле и добавил двоеточие к тем, где это имело смысл. - person Jazz; 30.01.2013