TextMate js.erb: переключатель <% =%>, <%%>

Я использую шаблон js.erb для рендеринга некоторых jQuery. При редактировании файла html.erb в TextMate я часто использую удобную комбинацию клавиш ctrl +>, чтобы создать, а затем переключать следующие теги:

<%=  %>
<%  %>
<%-  -%>
<%#  %>

Этот ярлык не работает по умолчанию при редактировании файлов js.erb. В редакторе пакетов я нашел фрагмент с надписью "Вставить ERb <%..%> или <% =..%>" под "Рубином". Добавив "source.js" к селектору области действия, я смог заставить вставку работать, но когда я нажимал комбинацию клавиш несколько раз, вместо переключения тега я получал тег внутри тега, например:

<%= <%=  %> %>

Я попытался изменить область действия команды под названием "Toggle ERb Tags", но не могу заставить ее работать. Какие-либо предложения?

Обновление 19 ноября 2010 года:

Это больше не проблема в новой версии Textmate, вышедшей на этой неделе: 1.5.10 (1623).

4 ответа

Решение

Это было исправлено с обновлением Textmate 1.5.10 (1623).

Одна из возможных причин, почему это так, заключается в том, что фрагмент, который генерирует угловые скобки для вас, определяется следующим образом:

<%= $0 %>

Это помещает этот текст в ваш источник после срабатывания триггера. $0 заполнитель для курсора; это место последнего упокоения после того, как фрагмент закончен. Поскольку курсор находится посередине, а это простой фрагмент, повторное выполнение триггера табуляции будет заключать эти скобки.

Чтобы добиться того, что вы хотите, вы должны сделать это в сценарии. Вы можете использовать любой язык сценариев, если вы укажете строку shebang. Я не опытный сценарист, поэтому я попытаюсь решить эту проблему с помощью псевдокода.

if selected_text
    if no_wrapping_angle_brackets
        surround_with_angle_brackets
    else
        strip_angle_brackets
else
    if no_wrapping_angle_brackets
        surround_with_angle_brackets
    else
        strip_angle_brackets

Это немного, но я надеюсь, что это поможет

Я тоже столкнулся с этой проблемой, даже с обновленными TextMate и пакетами. Я исправил это, добавив source.js.rails к селектору области действия фрагмента "Вставить ERb's <%..%> или <% =..%>". Убедитесь, что вы не изменили селектор области действия для аналогичной команды "Переключить теги ERb". Это вставляет теги ERb правильно, а также переключает их, как и ожидалось.

Ваш пакет Ruby on Rails Textmate может быть устаревшим из-за изменений в Ruby 1.9.

Обновите свой tmbundle, и эта проблема должна исчезнуть.

Другие вопросы по тегам