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 ответа
Одна из возможных причин, почему это так, заключается в том, что фрагмент, который генерирует угловые скобки для вас, определяется следующим образом:
<%= $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, и эта проблема должна исчезнуть.