• Aptana Zen Coding v0.2

    Обновил плагин Aptana Zen Coding до версии 0.2:

    • Добавлена поддержка CSS.
    • В настройки внесены все HTML и CSS аббревиатуры и сниппеты.
    • zen_settings.html.short_names переименован в zen_settings.html.aliases для более точного соответствия смыслу.
    • Добавлен новый синтаксис для секции default_attributes: [{name1: 'value1'}, {name1: 'value2'}] из-за бажной версии движка Rhino, который всегда хранит ключи объекта в алфавитном порядке (из-за этого нельзя было задать точный порядок следования атрибутов). Старый синтаксис продолжает действовать.
    • Новый синтаксис для секции aliases (бывшая short_names): 'name:*': 'name'. Это значит, что для всех аббревиатур, начинающихся с ‘name:’ (например, input:radio, script:src), будет использоваться имя тэга ‘name’. Таким образом удобно создавать заготовки тэгов с необходимыми атрибутами.
    • Свои собственные настройки теперь можно хранить в файле my-settings.js и добавлять в глобальную коллекцию. Поэтому можно спокойно обновлять библиотеку не опасаясь потерять свои заготовки. Например, для того, чтобы добавить свои собственные HTML-сниппеты в файле my-settings.js нужно написать вот такой код:
      zenExtend(zen_settings.html.snippets, {
      	foo: 'bar',
      	snip2: 'Hello world!'
      });
      

    Комментарии и пожелания приветствуются :)

    Метки: , , ,
  • 38 комментариев

    1. remal
      15 апреля 2009

      Поправь, если ошибаюсь, но JS интерпритатор не должен гарантировать порядок свойств объектов при перечислении. Для этого есть массивы…

    2. Сергей Чикуенок
      15 апреля 2009

      Не знаю, в Ecma-262 сказано: An Object is an unordered collection of properties. Но вообще во всех браузерах учитывается порядок свойств. А про бажность Rhino я написал потому, что там используется версия 1.6.7, с которой я намучился при написании JS-скриптов для Ant. К слову, последняя версия — 1.7, там никаких проблем замечено не было.

    3. 15 апреля 2009

      Отлично, только откуда скачать 0.2 ?

      На гугл.код висит Aptana Zen HTML 0.1 beta Featured

    4. 15 апреля 2009

      Позанудствую по поводу свойств объекта — в той же ECMA-262 сказано что: The mechanics of enumerating the properties is implementation dependent. Т.е. рассчитывать на какой-то определенный порядок нельзя.

    5. Сергей Чикуенок
      15 апреля 2009

      Отлично, только откуда скачать 0.2 ?

      Туплю :) Выложил файл.

    6. igor
      15 апреля 2009

      Можно для дурных пошаговую инструкцию установки Aptana Zen Coding в чистую Aptana. Что-то ну никак не получается установить :(

    7. Сергей Чикуенок
      15 апреля 2009

      Создайте проект, сделайте там папку scripts и в нее положите содержимое архива.
      UPD: не забывайте сделать Refresh у проекта, куда распаковали файлы. Либо включите опцию General → Workspace → Refresh automatically

    8. igor
      15 апреля 2009

      Да вот сделал. Но что-то не видит Aptana этого…

    9. Сергей Чикуенок
      15 апреля 2009

      Можете мне на почту скинуть скриншот эклипса? С раскрытыми папками проекта, куда скопировали скрипты.

    10. 15 апреля 2009

      Обновился до 0.2, буду тестировать.

    11. Vii
      15 апреля 2009

      Да вот сделал. Но что-то не видит Aptana этого…

      Когда первый раз устанавливал, аптана тоже не видела файлы пока я во View «Scripts» (Window -> Show Aptana View -> Scripts) не нажал Refresh

    12. 15 апреля 2009

      <th>strong</th>

      Курсор стоит на конце слова strong, жму Alt + E, получаю

      <<th><strong></strong></th></th>

    13. Yrgl
      15 апреля 2009

      Здравствуйте!
      Как я понял, данный скрипт/плагин предназначен для Aptana, так как в нём встроен Eclipse Monkey. А возможно ли его использовать на чистом Eclipse? Что необходимо доставить, чтобы всё завелось?

      P.S. Попытки поставить Eclipse Monkey в Eclipse результатов не дали, так как этот проект закрыт и его нет в репозитариях Эклипса, а ставить всю Аптану в Эклипсе как-то громоздко

    14. Сергей Чикуенок
      15 апреля 2009

      2Samborsky: да, есть такое. Просто символ > является допустимым, поэтому парсер получил аббревиатуру th>strong. Я попробую в следующей версии обойти это, пока можно просто выделить нужные слова и нажать Alt+E

    15. Сергей Чикуенок
      15 апреля 2009

      А возможно ли его использовать на чистом Eclipse? Что необходимо доставить, чтобы всё завелось?

      Посмотрите комментарий Артура Бурцева.

    16. Yrgl
      15 апреля 2009

      Огромное спасибо за ссылку!

    17. Артур Бурцев
      16 апреля 2009

      Сейчас происходит преобразование fdsdsfdf в <fdsdsfdf>, но вопрос в другом, было бы неплохо сделать возможным преобразование по TAB, сейчас можно в метаданных изменить шоткат, но перестаёт работать TAB по прямому назначению, и если TAB для одной строки достаточно просто сделать скриптами, то TAB для нескольких строк уже сложнее, в связи с этим вопрос, можно ли сделать, чтобы преобразовывались только аббревиатуры из wiki докуентации, а разные fdsdsfdf не преобразовывались и если аббревиатуры не найдено, то совершать действие TAB по умолчанию ( т.е. какбы не делать preventDefault() )

    18. Сергей Чикуенок
      16 апреля 2009

      было бы неплохо сделать возможным преобразование по TAB

      Такие мысли были. Попробую сделать.

      можно ли сделать, чтобы преобразовывались только аббревиатуры из wiki докуентации, а разные fdsdsfdf не преобразовывались

      Предполагалось, что этот плагин можно будет использовать и в других редакторах, в частности, в XML. И там это будет проблемой. С другой стороны, я могу определять текущий content type и для text/html блокировать такие аббревиатуры. В конце концов, можно сделать опцию, включающую/отключающую такую блокировку

    19. Николай
      16 апреля 2009

      Здравствуйте. Заметил небольшие нестыковочки. Пока что в Zen HTML: (сокращение -> что есть -> что написано в wiki)

      1) meta:compat -> -> ;
      2) sect -> -> ;
      3) art -> -> ;
      4) hdr -> -> ;
      5) ftr -> -> ;
      6) adr -> -> ;
      7) dlg -> -> ;
      8) a:link -> -> ;
      9) a:mail -> -> ;
      10) str -> -> ;
      11) prog -> -> ;
      12) area:d -> -> ;
      13) fset -> -> ;
      14) input:datetime-local -> ничего не происходит -> ;
      15) input:date -> -> ;
      16) input:range -> -> ;
      17) input:r -> присутствует как для radio, так и для reset. заточен под reset ;
      18) datag -> -> ;
      19) datal -> -> ;
      20) keygen -> -> ;
      21) kg -> -> ;
      22) out -> -> ;
      23) det -> -> ;
      24) command -> -> ;
      25) cmd -> -> ;
      26) menu:context -> -> ;
      27) menu:c -> -> ;
      28) menu:toolbar -> -> ;
      29) menu:t -> -> ;

      P.S. в wiki не описано cc:ie6 , а оно есть :)

    20. Николай
      16 апреля 2009
    21. alexbaum
      22 апреля 2009

      Подскажите, как можно сделать, чтобы в конце блока с div’aми добалялся коммент вида <!— /класс_дива —>,
      то есть div.footer раскрывался в <div class="footer"></div><!— /footer —>

      И (набравшись наглости) еще спрошу по Aptana, как сделать так, чтобы при команде format (форматировать код) комментарий не переносился после дива —
      есть:
      </div>
      <!— /footer —>

      очень хочется:
      </div><!— /footer —>
      Искал в настройках, но именно "не трогать комменты" не увидел :(
      Заранее огромное спасибо! :)

    22. Сергей Чикуенок
      22 апреля 2009

      Подскажите, как можно сделать, чтобы в конце блока с div’aми добалялся коммент

      Такой возможности нет.

      И (набравшись наглости) еще спрошу по Aptana, как сделать так, чтобы при команде format (форматировать код) комментарий не переносился после дива

      Тоже не заметил такой настройки. Возможно, вам поможет http://eclipsetidy.sourceforge.net/

      Ну и немного глупый вопрос: а зачем вам этот комментарий в конце дива? :)

    23. alexbaum
      22 апреля 2009

      > а зачем вам этот комментарий в конце дива? :)

      Я путаюсь во множестве вложенных дивов. Вначале понятно, что куда, по class=»что-то-там», а вот в конце страницы сложно бывает понять, какой закрывающий див к какому блоку отностится.
      </div>
      </div>
      </div> тут я уже перестаю понимать :)

      </div> <!– /footer –> — так мне понятнее.

      Если есть какое-то другое решение не путаться, буду рад услышать.

      ПС:
      Я думал и гордился, что изобрел закрывающий коммент у дива, но потом увидел код сайта apple :(
      http://www.apple.com/mac/

    24. Сергей Чикуенок
      22 апреля 2009

      Если есть какое-то другое решение не путаться, буду рад услышать.

      Аптана умеет подсвечивать парные тэги, то есть ставите курсор, например, в закрывающий тэг, а в редакторе подсвечивается открывающий. Это не всегда удобно, особенно если в коде каша. Я планировал в рамках Zen Coding написать несколько скриптов для навигации по коду: перейти к открывающему/закрывающему тэгу, выделить содержимое тэга, перейти к следующему/предыдущему пустому тэгу/атрибуту.

      PS: в IntelliJ IDEA очень круто решена эта проблема, там когда ставишь курсор в закрывающий тэг в отдельной области сверху высвечивается открывающий тэг. Возможно, я смогу сделать что-то подобное для аптаны.

    25. vladfrandom
      24 апреля 2009

      Можно к вам в посудную лавку? Прикрутил вот под [Tab]. Не судите сторого.

      Unix diff — unified:

      — Expand Abbreviation.js 15.04.2009 1:22:58
      +++ Expand Abbreviation-tab.js 24.04.2009 20:16:12
      @@ -2,8 +2,8 @@
      * Menu: Zen Coding > Expand Abbreviation
      * Kudos: Sergey Chikuyonok (http://chikuyonok.ru), Vadim Makeev (http://pepelsbey.net)
      * License: EPL 1.0
      — * Key: M3+E
      + * Key: tab
      * Listener: commandService().addExecutionListener(this);
      * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
      *
      @@ -39,44 +39,45 @@

      replaceAbbreviationWithContent(abbr, content);
      }
      + else replaceAbbreviationWithContent(«», «t|»);
      }

      /**
      @@ -51,58 +52,58 @@
      function replaceAbbreviationWithContent(abbr, content) {
      var editor = editors.activeEditor;

      — if (!content)
      + if (!content) content=abbr+»t|»;
      — return;

      // content = content.replace(/n/g, zen_coding.getNewline());

    26. Сергей Чикуенок
      24 апреля 2009

      Все не так просто :) Tab отвечает за изменение, а не добавление отступов. То есть я могу выделить фрагмент кода (несколько строк) и изменить ему отступ. Если вам не лень, то вот что нужно сделать: если аббревиатура не была раскрыта, нужно выделить полностью символы во всех строках (выделение не обязательно будет начинаться с начала строки и заканчиваться в конце), применить метод zen_coding.padString() и вывести в редактор.

    27. dmitriy
      6 мая 2009

      Подскажите пожалуйста удалось ли кому-либо поставить это на чистый эклипс?
      Пробовал делать по комментарию Артура Бурцева, но не получилось пишет:

      org.mozila.javascript.EcmaError
      ReferenceError: «editor» is not defined.
      /var/www/site/scripts/Expand Abbreviation.js line 94

      Если кто сталкивался с такой проблемой или же решил её иным способом напишите пожалуйста.

    28. Сергей Чикуенок
      7 мая 2009

      Похоже на то, что EclipseMonkey до конца не сработал или не установился.
      editor — это основной объект, через который идет вся работа.

    29. dmitriy
      7 мая 2009

      Сейчас попробовал на голый эклипс поставить EclipseMonkey отсюда http://download.eclipse.org/technology/dash/update/ но результат почему-то такой же… “editor” is not defined. :(

    30. Сергей Чикуенок
      7 мая 2009

      Дэш сейчас в каком-то непонятном состоянии находится. Обратите внимание, что Артур пишет про то, что нужно достать из аптаны некоторые плагины, которые и обеспечивают нормальную работу скриптов.

    31. Руслан
      26 мая 2009

      Здравствуйте Сергей. Возможно вы мне подскажите решение такой проблемы: в редакторе CSS при вводе url() для background не выпадает «code assist» с выбором файла. Аналогичная штука реализована в редакторе HTML для свойства src=»» (при нажатии ctrl+space). Я понимаю, что Zen Coding тут не причем, но данная возможность невероятно ускорила бы процесс верстки :)

    32. Сергей Чикуенок
      26 мая 2009

      Это «глюк» аптаны, так было с самого начала и разработчики до сих пор не внедрили эту фичу (я давно слежу за разработкой этого проекта). Равно как и для атрибута href=»» в HTML.

    33. Руслан
      26 мая 2009

      Спасибо. Будем надеятся на скорое решение данной проблемы.

    34. Сергей Навроцкий
      24 июня 2009

      Сергей, я попытался распаковать TextMate.Zen.HTML.1.3.zip под виндой, но она не
      разрешает символ «*» в именах файлов. Если я переименую эти файлы, это как-то скажется на
      функциональности?

    35. Сергей Чикуенок
      24 июня 2009

      Этой веткой (1.х) занимается Вадим Макеев, лучше ему задать этот вопрос. Думаю, что отвалятся некоторые аббревиатуры.

    36. Елена
      22 марта 2011

      Здравствуйте, Сергей. На одном компьютере установила зен-кодинг нормально, всё работает. Поставила на ноут — частично не работает. Например, Ctrl+i, alt+w работают, а вот аббревиатуры сами нет, хотя устанавливала вроде одинаково. и символ, кот-ый поставила для вызова функции не печатается, но и ничего не происходит. Может быть, Вы сталкивались с таким и раньше?

    37. Сергей Чикуенок
      22 марта 2011

      Елена, вы эту версию плагина ставили? https://github.com/sergeche/eclipse-zencoding

    38. Елена
      18 октября 2011

      Благодарю, Сергей. Уже разобралась. Спасибо большое за прекрасный зен-кодинг) Пользуемся вместе с товарищами и очень довольны!