diff --git a/autoload/emmet.vim b/autoload/emmet.vim index 96df940..44f973d 100644 --- a/autoload/emmet.vim +++ b/autoload/emmet.vim @@ -1,7 +1,7 @@ "============================================================================= " emmet.vim " Author: Yasuhiro Matsumoto -" Last Change: 19-Aug-2013. +" Last Change: 20-Aug-2013. let s:save_cpo = &cpo set cpo&vim @@ -131,17 +131,23 @@ function! emmet#mergeConfig(lhs, rhs) endfunction function! emmet#newNode() - return { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'basevalue': 0, 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'] } + return { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'basevalue': 0, 'basedirect': 1, 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'] } endfunction function! s:itemno(itemno, current) let current = a:current - if current.basevalue == 0 - return a:itemno - elseif current.basevalue > 0 - return current.basevalue - 1 + a:itemno - elseif current.basevalue < 0 - return current.multiplier - current.basevalue - 2 - a:itemno + if current.basedirect > 0 + if current.basevalue == 0 + return a:itemno + else + return current.basevalue - 1 + a:itemno + endif + else + if current.basevalue == 0 + return current.multiplier - 1 - a:itemno + else + return current.multiplier + current.basevalue - 2 - a:itemno + endif endif endfunction diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim index fa79e10..e8479b2 100644 --- a/autoload/emmet/lang/html.vim +++ b/autoload/emmet/lang/html.vim @@ -9,8 +9,8 @@ let s:mx = '\([+>]\|[<^]\+\)\{-}\s*' \ .'\)*' \ .'\)' \ .'\%(\({\%([^$}]\+\|\$#\|\${\w\+}\|\$\+\)*}\)\)\{0,1}' -\ .'\%(\(@-\{0,1}[0-9]\+\)\{0,1}\*\([0-9]\+\)\)\{0,1}' -\ .'\(\%()\%(\(@-\{0,1}[0-9]\+\)\{0,1}\*[0-9]\+\)\{0,1}\)*\)' +\ .'\%(\(@-\{0,1}[0-9]*\)\{0,1}\*\([0-9]\+\)\)\{0,1}' +\ .'\(\%()\%(\(@-\{0,1}[0-9]*\)\{0,1}\*[0-9]\+\)\{0,1}\)*\)' function! emmet#lang#html#findTokens(str) let str = a:str @@ -90,7 +90,8 @@ function! emmet#lang#html#parseIntoTree(abbr, type) let attributes = tag_name . attributes let tag_name = 'div' endif - let basevalue = 0 + basevalue[1:] + let basedirect = basevalue[1] == '-' ? -1 : 1 + let basevalue = 0 + abs(basevalue[1:]) if multiplier <= 0 | let multiplier = 1 | endif " make default node @@ -218,6 +219,7 @@ function! emmet#lang#html#parseIntoTree(abbr, type) else let current.value = value endif + let current.basedirect = basedirect let current.basevalue = basevalue let current.multiplier = multiplier