My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
DreamweaverExtension  
Zen Coding extension for Adobe Dreamweaver
Phase-Deploy
Updated May 21, 2011 by GreLIm...@gmail.com

Introduction

Zen Coding is an editor plugin for high-speed HTML, XML, XSL (or any other structured code format) coding and editing. The core of this plugin is a powerful abbreviation engine which allows you to expand expressions—similar to CSS selectors—into HTML code. You can find more information on project main page.

How to install

To install it you need to download zip-package of the extension, unpack “Zen Coding v.0.7.5.mxp”. Run Adobe Extension Manager under Commands menu in Dreamweaver and install this file with it.

Note: if you just double click on file, there could be bugs if you have different languages of OS and editor. They can be fixed by running Adobe Extension Manager under commands menu and enabling/installing extension with it.

Source code is also included to package. You can make changes if you want and install mxi or package and install new extension then.

After installing you need to restart Adobe Dreamweaver (or reload extensions) if it running.

Whats new in version 0.7.5

  • Added "Reflect CSS value" command from Zen Coding 0.7.
  • Added "Select Next/Previous Item" commands from Zen Coding 0.7.
  • Extension now uses $# for output from Zen Coding 0.7. E.g. ul>li{$#}* creates a list with each string in its own list item.
  • Multi-line selection indenting now works with Tab key.
  • Fixed XSLT document recognizing.

Whats new in version 0.7.2

  • "Evaluate Math Expression" command now evaluates all simple math expressions found in selection. Supported operators: addition “+”, subtraction “”, multiplying “*”, division “/”, rounded division “\” and power “^”.
  • Different line paddings with tabs/spaces variations now processed correctly.
  • Smarter "Insert formatted newline" behavior after start curly brace “{” in CSS.
  • Bug fixes related to comments processing.

Whats new in version 0.7.1

  • Tab expanding now works with strict rules. If you are not editing HTML/CSS/XML code or selected text or caret is in tag no expanding will occur (except for CSS in style attribute) and normal tab will be inserted (or whatever in your settings). (Issue 231)
  • Abbreviations itself now also got stricter rules for expanding, thus fixing Issue 232 with CSS snippet expanding after opening curly brace.
  • Reworked menu commands shortcuts in order to try keep consistency with other plugins as much as possible. Sorry if you already accustomed to the old ones. I hope you will like it and quickly adapt to the new shortcuts. See #Shortcuts_table for information.
  • Also if you if you specify only the class or id for inline subelement in abbreviation it automatically will be span not div (Issue 227).
  • As it was asked in comments “Merge Lines” without selection now automatically recognize blocks in CSS parsing mode ({…}). It correctly works with nested blocks and totally ignores braces in comments and quoted strings.
  • New action “Rename tag” were also added. It just changes a name of tag and leaves its attributes untouched. If it isn't enough for your “Wrap with abbreviation”/“Remove tag” combination is recommended.
  • “Insert Formatted Newline” action were (re-)added. Being executed between newly created opening and closing tags or curly brackets it breaks them to separate lines and puts caret into middle line with indentation.
  • Various indentation issues were also fixed.

About Adobe Dreamweaver extension

This extension contains all Zen Coding features which can be done using editor extension engine. The bad news is that Dreamweaver doesn't have multiple tab stops and can't read image (binary) files. So, related features like “encode to base64” aren't realized. Maybe someone will do it with C-level extensibility.

But the good news is that since version 0.7 you can expand abbreviations with Tab button! Also some new actions were added and almost all actions now have shortcuts.

Actions and shortcuts

Except Tab key you can expand abbreviations with “Ctrl+,” as before. Unfortunately it conflicts with hotkeys in some Dreamweaver localizations. If you faced with this issue you should manage hotkeys manually via Edit → Keyboard Shortcuts menu.

As for other shortcuts I tried to assign non-used ones. The two of them with Ctrl key: “Ctrl+H” and “Ctrl+K” were assigned to “Wrap with Abbreviation” and “Select Line”. With some others “Alt” key became very helpful because Dreamweaver doesn't allow to assign it via user interaction. (I think in order to avoid collisions with menu bar.) You can still assign your own shortcuts via Keyboard Shortcuts editor.

The only action without shortcut is “Balance Tag”. There are two reasons: outward (same by default) and inward versions of the action and similar function of Dreamweaver “Select Parent Tag” (“Ctrl+[”).

Shortcuts table

Note: This table matches to the latest extension version: 0.7.5.

Expand Abbreviation             Tab or Ctrl+, (on selection only Ctrl+,)
Wrap with Abbreviation          Ctrl+H
Re_flect CSS Value              Ctrl+R

Balance Tag Outward             Alt+[
Balance Tag Inward              Alt+]
Next Edit Point                 Ctrl+Alt+Right
Previous Edit Point             Ctrl+Alt+Left
Go to Matching Pair             Alt+/
Select Next Item                Alt+Right
Select Previous Item            Alt+Left

Insert Formatted Newline        Ctrl+Enter
Select Line                     Ctrl+K
Merge Lines                     Ctrl+\
Toggle Comment                  Ctrl+/
Split/Join Tag                  Ctrl+Shift+\
Rename Tag                      Ctrl+Shift+B
Remove Tag                      Alt+-
Evaluate Math Expression        Alt+=

Increment number by 1           Ctrl+Up
Decrement number by 1           Ctrl+Down
Increment number by 10          Ctrl+Alt+Up
Decrement number by 10          Ctrl+Alt+Down
Increment number by 0.1         Alt+Up
Decrement number by 0.1         Alt+Down

New CSS shortcuts

With standard CSS-properties and its aliases there also were added some new shortcuts:

color:transparent;                             c:t
color:rgb();                                   c:r
color:rgba();                                  c:ra
color:hsl();                                   c:h
color:hsla();                                  c:ha
 
text-overflow:;                                tov
text-overflow:"";                              tov+
text-overflow:clip;                            tov:c
text-overflow:ellipsis;                        tov:e
 
box-decoration-break:clone;                    bxdb (the only non-default option)
box-decoration-break:slice;                    bxdb:s
 
transition:                                    ts
transition-property:;                          tsp
transition-duration:;                          tsd
transition-delay:;                             tsdl
transition-timing-function:;                   tst
transition-timing-function:ease;               tst:e
transition-timing-function:linear;             tst:l
transition-timing-function:ease-in;            tst:i
transition-timing-function:ease-out;           tst:o
transition-timing-function:ease-in-out;        tst:io
transition-timing-function:step-start;         tst:ss
transition-timing-function:step-end;           tst:se
transition-timing-function:steps();            tst:s
transition-timing-function:cubic-bezier();     tst:cb

direction                                      dir
direction:ltr                                  dir:l
direction:rtl                                  dir:r

@page {}                                       @p
@top-left-corner {}                            @tlc
@top-left {}                                   @tl
@top-center {}                                 @tc
@top-right {}                                  @tr
@top-right-corner {}                           @trc
@bottom-left-corner {}                         @blc
@bottom-left {}                                @bl
@bottom-center {}                              @bc
@bottom-right {}                               @br
@bottom-right-corner {}                        @brc
@footnote {}                                   @fn
@counter-style   ""                            @cs

Extensibility

Also my_zen_settings.js was added to package to help you adding of new snippets. It can be located in source files (and then deployed with extension reinstall) or in “Commands\ZenCoding” folder under your configuration folder. You should reload extensions or restart Dreamweaver to make changes work. Note, that your changes will be lost with extension update and uninstall. So backup if it is worth for you.

For example to my_zen_settings.js were included next snippets:

HTML:
jq      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
cc:ie8  <!--[if gte IE 8]><![endif]-->
cc:ie9  <!--[if gte IE 9]><![endif]-->

CSS:
@md     @-moz-document url-prefix() {}
Comment by sublimey...@gmail.com, Dec 21, 2010

Thanks for your great work ;)

Comment by sublimey...@gmail.com, Dec 21, 2010

Отличная идея с auto-increment и калькулятором. Еще с пол года назад хотел добраться до написания .js для DW и внедрить эту же самую идею, но так и не дошли руки. Да и в API разбирался бы долго.

У меня сейчас стоит CS4 и CS5, но из-за некоторых глюков CS5 предпочитаю оставаться пока на CS4. Хотел спросить почему набор команд для CS4 отличается от CS5? И нельзя ли их подогнать под CS4 в таком же виде, а так же с expandAbbreviation по кнопке "tab"?

Не пойму, куда делся в CS5: "Insert Formatted line break". Отличная вещь, которой не хватает в DW на уровне движка. Удобно назначать команду на CTRL + Enter (я бы добавил это как note для пользователей, а то по дефолту в dw всё равно ерунда какая-то стоит на ctrl+enter :)

Так же хочу поделиться своими идеями. Думаю их можно было бы внедрить в ваш zen-coding для DW.

Insert auto-indented block statement braces: { ... }

(Просто вставляет фигурные кавычки. Первая ставится непосредственно после селектора (или согласно опциям выставленным в DW, если возможно прочитать), а вторая кавычка доставляется через одну строку с учетом табуляции (кол-во табов у селектора) ну и вставлять курсор на следующую строку, чтоб сразу приступать к вводу CSS свойств.

Merge\Unmerge CSS Selector

Не знаю возможно ли это реализовать. Лично я Merge Lines в 95% случаев использую для сжатия CSS селектора после того, как закончу стилизацию блока. До этого держу свойства на отдельных строках, чтоб было наглядней. Хотелось бы "сжимать" CSS селектор без предварительного выделения и вызова команды MergeLines??, а просто находясь внутри селектора { ....|...} после вызова команды он бы сжимался, оставляя отступ после себя. Думаю, если вы используете merge lines тоже для этих целей, эта идея должна понравится.

Rename\Refactor tag pair

Если это реально. Тоже удобная штука. (<div>Some text</div> -> div->refactor(span) == <span>Some text</span>)

Comment by project member GreLIm...@gmail.com, Dec 24, 2010

Это странно, что набор команд отличается, я у себя такого не наблюдал. Может возникли глюки при установке расширения? У меня такие бывали, помогала переустановка расширения.

Возможно, осталось с какой-то старой глючной версии, тогда надо вручную чистить menus.xml (рекомендуют не в Дримвивере).

Разве Дримвивер не сохраняет весь документ в соответствии с настройками окончания строки (Preferences → Code Format)? Потому команда «Insert Formatted line break» мне кажется бесполезной.

Вообще всё должно быть одинаково чуть ли не с 6 (MX) версии: использовался только основной API.

По предложениям:

  • Про кавычки мысль возникала и у меня. Также как и по псевдо-селекторам. Мысль интересная и новая, но вводить новое сложнее, чем адаптировать уже имеющееся. Нужно время.
  • Тоже думал, хотя использую Merge Lines преимущественно для HTML. Хотя и сейчас это можно сделать в два хода: Ctrl+' (Balance Braces), затем Ctrl+/ (Merge Lines).
  • А вот в последнем смысла не вижу: это не имеет отношение к высокоскоростному кодингу. По-моему опять же проще сделать в два хода: обернуть аббревиатурой, а зачем удалить лишнее с помощью Remove Tag. Нажатий клавиш по крайней мере не больше.

Comment by sublimey...@gmail.com, Dec 27, 2010

1. Набор команд "заглючил" из-за menus.xml. Он обновился частично (или вообще не обновился).

2. В версии 0.6 я не замечал команды "Insert Formatted Line Break", а заметил только в версии 0.7. Точнее ее как раз и нету в 0.7, но из-за моего глюка в menus.xml я заметил ее :) Похоже мое применение команде отличается от первоначально задуманного. Я использую ее для отбивки закрывающего тэга сразу на +1 строку. У нас есть: <div>{cursor}</div>

После нажатия ctrl + enter (insert formatted lb) получается: <div>

{cursor}
</div>

Думал это и была изначальная задумка. В aptana, jetbrains такое поведение по-умолчанию, удобно.

--- На счет кавычек могу предложить пока временный вариант: Использовать code snippets + hotkey (хотя можно и text-expander какой-нибудь настроить). В code snippets режим "Insert Text" и для before cursor "{/n", а для after cursor "/n}". Этого почти достаточно, но не работает нормально в случае когда смещен базовый отступ. Например в следующем примере, при таком сниппете вложенные кавычки будут без отступа. .user {

width: 50%
}
.user .name {
color: hot;
} "а должна быть на уровне .user или color"

---

За "Balance Braces" + "Merge lines" - спасибо :) Хотя одной кнопкой было бы удобней. И иногда бывает нужно "разжать" селектор, если вдруг начинаются глюки и нужно "отлаживать" правила :)

--- Последние про "rename tag" увидел в aptana/jetbrains/netbeans. Может и не имеет отношения к высокоскоростному кодингу, но упрощяет жизнь. Да и проще это, нежели удалять и обворачивать заново. Это почти как +1, -1, +10, -10 команды - они же тоже не совсем относятся к высокоскоростному кодингу :)

Если бы это работало примерно как wrap with abbreviation с выпадающим окном. Курсор на тег - {hotkey} - выпадает окно с выделенным тэгом и можно сразу ввести другой тег - enter При этом все классы и id остаются.

Но вообще это действительно довольно редко необходимая команда.

Comment by project member GreLIm...@gmail.com, Dec 27, 2010

1. Да, и у меня такое есть. Думал, от экспериментов, но может в какую-то версию закрался глюк.

2. О таком применении не думал. Тогда это действительно полезная команда, надо будет добавить.

По поводу сниппетов: добавление своих в my_zen_settings.js вполне работает. См. DreamweaverExtension#Extensibility.

Надо будет доработать Merge Lines для работы в CSS-профиле.

Странно, я не могу найти «Rename Tag». Может эта команда не имеет отношение к Дзен Кодингу? Посмотрю что можно сделать, возможно, сработает такой же алгоритм.

Comment by project member serge....@gmail.com, Dec 27, 2010

Rename Tag нет в ZC, но, в принципе, я планировал её добавить в версию 0.7, это не сложно

Comment by project member GreLIm...@gmail.com, Jan 9, 2011

Вот и вышла новая версия: исправления ошибок и новые возможности по просьбам посетителей. Фигурные скобки в CSS автоматически не вставляются, но между ними работает „Insert Formatted Newline“ как и с тегами. „Merge Lines“ теперь работает умнее „Balance Braces“ :-). На моём компьютере работает с приемлемой скоростью: примерно до 50 мс на 200 КБ css-файле — бо́льшие файлы нет смысла поддерживать из-за ограничений IE.

Comment by sublimey...@gmail.com, Jan 13, 2011

Отличная работа! Большое спасибо за правки и нововведения ;)

Comment by darkdelphin@gmail.com, Feb 18, 2011

А сложно ли добавить функцию обертывания нескольких строк выделенного текста, так, чтобы он попали не в сам тэг, в атрибут? Пример: сейчас есть такой функционал у нас есть, нарпимер, выделенные qwe asd zxc обертываем правилом li и получаем <li>qwe</li> <li>asd</li> <li>zxc</li>

так вот, можно ли сделать следующее? У нас есть выделенные строки: 001.jpg 002.jpg 003.jpg обернуть их каким нибудь правилом типа img[src=] или еше каким нибудь удобным выражением и получить: <img src="001.jpg" /> <img src="002.jpg" /> <img src="003.jpg" />

Comment by project member serge....@gmail.com, Feb 18, 2011

В Zen Coding версии 0.7 такое можно сделать: надо обернуть аббревиатурой img[src=${output}]*

Comment by darkdelphin@gmail.com, Feb 18, 2011

Спасибо, за подсказку! А можно как-нибудь изменить/упростить/модифицировать эту конструкцию? Например, хотя бы чтобы каждый элемент был на новой строке?

Comment by project member GreLIm...@gmail.com, Feb 18, 2011

Можно обернуть в блочный тэг: например, div*>img[src=${output}] тогда будет на новой строке. Точно не помню, есть ли другой вариант, но когда искал, не нашёл.

Comment by darkdelphin@gmail.com, May 20, 2011

Насчет конструкций типа img[src=${output}], пробовал такую обертку (с использованием ${output}) в других редакторах с zencoding, таких как Notepad++ 5x и Komodo Edit 6x, но почему-то ничего не вышло( Это штука специфична только для реализации под дрим? Есть ли аналоги для других редакторов? И можно ли в других реализациях также как и в my_zen_settings.js добавлять свои снипеты?

Заранее спасибо.

Comment by project member GreLIm...@gmail.com, May 21, 2011

В Zen Coding 0.7 используется написание $#, и в обновлении расширения я перевёл используемый формат на него. Также это зависит от версии плагинов и их поддержки. Старые могут просто не поддерживать такое.

Comment by yveli...@gmail.com, Jun 25, 2011

Не получается использовать zen-coding для расширения .less Добавляю расширение в файле zen-setting.js не помогает. 'css': {

'filters': 'html,css,less',
Что мне нужно добавить или прописать что бы zen-coding в дримвивере заработал и для файлов c расширением less

Comment by project member GreLIm...@gmail.com, Jul 4, 2011

Надо связать расширение .less с Дримививером в ОС. Например попробовать открыть, указав Dw при задействованной галочке «Использовать программу для всех файлов такого типа».

Comment by ram.zesi...@gmail.com, Mar 6, 2012

Подскажите пожалуйста, есть ли возможность использовать zen-coding для less работая в DW?

Comment by ramonk...@gmail.com, May 16, 2012

can't make it work on dreamweaver cs6, any hint on that??

Comment by dinsad...@gmail.com, May 22, 2012

doesn't work in cs6. please help ?

Comment by vidar.e....@gmail.com, Yesterday (34 hours ago)

It works fine, just create new bindings for it @ the following:

Edit > Keyboard Shortcuts > Commands: Menu Commands > Commands > Zen Coding


Sign in to add a comment
Powered by Google Project Hosting