diff --git a/autoload/zencoding/lang/html.vim b/autoload/zencoding/lang/html.vim
index fd4b33a..255504a 100644
--- a/autoload/zencoding/lang/html.vim
+++ b/autoload/zencoding/lang/html.vim
@@ -92,7 +92,7 @@ function! zencoding#lang#html#parseIntoTree(abbr, type)
if multiplier <= 0 | let multiplier = 1 | endif
" make default node
- let current = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0 }
+ let current = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'] }
let current.name = tag_name
let current.important = important
@@ -182,6 +182,7 @@ function! zencoding#lang#html#parseIntoTree(abbr, type)
let val = val[1:-2]
endif
let current.attr[key] = val
+ let current.attrs_order = current.attrs_order + [key]
let atts = atts[stridx(atts, amat) + len(amat):]
endwhile
endif
@@ -317,7 +318,8 @@ function! zencoding#lang#html#toString(settings, current, type, inline, filters,
endif
if len(current_name) > 0
let str .= '<' . current_name
- for attr in keys(current.attr)
+ for attr in current.attrs_order
+ if (has_key(current.attr, attr))
let val = current.attr[attr]
if dollar_expr
while val =~ '\$\([^#{]\|$\)'
@@ -330,6 +332,7 @@ function! zencoding#lang#html#toString(settings, current, type, inline, filters,
if attr == 'id' | let comment .= '#' . val | endif
if attr == 'class' | let comment .= '.' . val | endif
endif
+ endif
endfor
if len(comment) > 0
let str = "\n" . str