This commit is contained in:
mattn
2014-12-17 03:59:40 +09:00
parent 1c1c511896
commit 5bfcf0abfd
3 changed files with 169 additions and 168 deletions

View File

@@ -3,12 +3,12 @@
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com> " Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
" Last Change: 17-Dec-2014. " Last Change: 17-Dec-2014.
let s:save_cpo = &cpo let s:save_cpo = &cpoptions
set cpo&vim set cpoptions&vim
let s:filtermx = '|\(\%(bem\|html\|haml\|slim\|e\|c\|s\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$' let s:filtermx = '|\(\%(bem\|html\|haml\|slim\|e\|c\|s\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$'
function! emmet#getExpandos(type, key) function! emmet#getExpandos(type, key) abort
let expandos = emmet#getResource(a:type, 'expandos', {}) let expandos = emmet#getResource(a:type, 'expandos', {})
if has_key(expandos, a:key) if has_key(expandos, a:key)
return expandos[a:key] return expandos[a:key]
@@ -16,27 +16,27 @@ function! emmet#getExpandos(type, key)
return a:key return a:key
endfunction endfunction
function! emmet#splitFilterArg(filters) function! emmet#splitFilterArg(filters) abort
for f in a:filters for f in a:filters
if f =~ '^/' if f =~# '^/'
return f[1:] return f[1:]
endif endif
endfor endfor
return '' return ''
endfunction endfunction
function! emmet#useFilter(filters, filter) function! emmet#useFilter(filters, filter) abort
for f in a:filters for f in a:filters
if a:filter == '/' && f =~ '^/' if a:filter ==# '/' && f =~# '^/'
return 1 return 1
elseif f == a:filter elseif f ==# a:filter
return 1 return 1
endif endif
endfor endfor
return 0 return 0
endfunction endfunction
function! emmet#getIndentation(...) function! emmet#getIndentation(...) abort
if a:0 > 0 if a:0 > 0
let type = a:1 let type = a:1
else else
@@ -47,12 +47,12 @@ function! emmet#getIndentation(...)
elseif has_key(s:emmet_settings, 'indentation') elseif has_key(s:emmet_settings, 'indentation')
let indent = s:emmet_settings.indentation let indent = s:emmet_settings.indentation
else else
let indent = (&l:expandtab || &l:tabstop != &l:shiftwidth) ? repeat(' ', &l:shiftwidth) : "\t" let indent = (&l:expandtab || &l:tabstop !=# &l:shiftwidth) ? repeat(' ', &l:shiftwidth) : "\t"
endif endif
return indent return indent
endfunction endfunction
function! emmet#getBaseType(type) function! emmet#getBaseType(type) abort
if !has_key(s:emmet_settings, a:type) if !has_key(s:emmet_settings, a:type)
return '' return ''
endif endif
@@ -60,20 +60,20 @@ function! emmet#getBaseType(type)
return a:type return a:type
endif endif
let extends = s:emmet_settings[a:type].extends let extends = s:emmet_settings[a:type].extends
if type(extends) == 1 if type(extends) ==# 1
let tmp = split(extends, '\s*,\s*') let tmp = split(extends, '\s*,\s*')
let ext = tmp[0] let ext = tmp[0]
else else
let ext = extends[0] let ext = extends[0]
endif endif
if a:type != ext if a:type !=# ext
return emmet#getBaseType(ext) return emmet#getBaseType(ext)
endif endif
return '' return ''
endfunction endfunction
function! emmet#isExtends(type, extend) function! emmet#isExtends(type, extend) abort
if a:type == a:extend if a:type ==# a:extend
return 1 return 1
endif endif
if !has_key(s:emmet_settings, a:type) if !has_key(s:emmet_settings, a:type)
@@ -83,34 +83,34 @@ function! emmet#isExtends(type, extend)
return 0 return 0
endif endif
let extends = s:emmet_settings[a:type].extends let extends = s:emmet_settings[a:type].extends
if type(extends) == 1 if type(extends) ==# 1
let tmp = split(extends, '\s*,\s*') let tmp = split(extends, '\s*,\s*')
unlet! extends unlet! extends
let extends = tmp let extends = tmp
endif endif
for ext in extends for ext in extends
if a:extend == ext if a:extend ==# ext
return 1 return 1
endif endif
endfor endfor
return 0 return 0
endfunction endfunction
function! emmet#parseIntoTree(abbr, type) function! emmet#parseIntoTree(abbr, type) abort
let abbr = a:abbr let abbr = a:abbr
let type = a:type let type = a:type
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
return emmet#lang#{rtype}#parseIntoTree(abbr, type) return emmet#lang#{rtype}#parseIntoTree(abbr, type)
endfunction endfunction
function! emmet#expandAbbrIntelligent(feedkey) function! emmet#expandAbbrIntelligent(feedkey) abort
if !emmet#isExpandable() if !emmet#isExpandable()
return a:feedkey return a:feedkey
endif endif
return "\<plug>(emmet-expand-abbr)" return "\<plug>(emmet-expand-abbr)"
endfunction endfunction
function! emmet#isExpandable() function! emmet#isExpandable() abort
let line = getline('.') let line = getline('.')
if col('.') < len(line) if col('.') < len(line)
let line = matchstr(line, '^\(.*\%'.col('.').'c\)') let line = matchstr(line, '^\(.*\%'.col('.').'c\)')
@@ -122,9 +122,9 @@ function! emmet#isExpandable()
return len(part) > 0 return len(part) > 0
endfunction endfunction
function! emmet#mergeConfig(lhs, rhs) function! emmet#mergeConfig(lhs, rhs) abort
let [lhs, rhs] = [a:lhs, a:rhs] let [lhs, rhs] = [a:lhs, a:rhs]
if type(lhs) == 3 && type(rhs) == 3 if type(lhs) ==# 3 && type(rhs) ==# 3
let lhs += rhs let lhs += rhs
if len(lhs) if len(lhs)
call remove(lhs, 0, len(lhs)-1) call remove(lhs, 0, len(lhs)-1)
@@ -132,14 +132,14 @@ function! emmet#mergeConfig(lhs, rhs)
for rhi in rhs for rhi in rhs
call add(lhs, rhs[rhi]) call add(lhs, rhs[rhi])
endfor endfor
elseif type(lhs) == 4 && type(rhs) == 4 elseif type(lhs) ==# 4 && type(rhs) ==# 4
for key in keys(rhs) for key in keys(rhs)
if type(rhs[key]) == 3 if type(rhs[key]) ==# 3
if !has_key(lhs, key) if !has_key(lhs, key)
let lhs[key] = [] let lhs[key] = []
endif endif
let lhs[key] += rhs[key] let lhs[key] += rhs[key]
elseif type(rhs[key]) == 4 elseif type(rhs[key]) ==# 4
if has_key(lhs, key) if has_key(lhs, key)
call emmet#mergeConfig(lhs[key], rhs[key]) call emmet#mergeConfig(lhs[key], rhs[key])
else else
@@ -152,20 +152,20 @@ function! emmet#mergeConfig(lhs, rhs)
endif endif
endfunction endfunction
function! emmet#newNode() function! emmet#newNode() abort
return { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'basevalue': 0, 'basedirect': 1, '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 endfunction
function! s:itemno(itemno, current) function! s:itemno(itemno, current) abort
let current = a:current let current = a:current
if current.basedirect > 0 if current.basedirect > 0
if current.basevalue == 0 if current.basevalue ==# 0
return a:itemno return a:itemno
else else
return current.basevalue - 1 + a:itemno return current.basevalue - 1 + a:itemno
endif endif
else else
if current.basevalue == 0 if current.basevalue ==# 0
return current.multiplier - 1 - a:itemno return current.multiplier - 1 - a:itemno
else else
return current.multiplier + current.basevalue - 2 - a:itemno return current.multiplier + current.basevalue - 2 - a:itemno
@@ -173,21 +173,21 @@ function! s:itemno(itemno, current)
endif endif
endfunction endfunction
function! emmet#toString(...) function! emmet#toString(...) abort
let current = a:1 let current = a:1
if a:0 > 1 if a:0 > 1
let type = a:2 let type = a:2
else else
let type = &ft let type = &filetype
endif endif
if len(type) == 0 | let type = 'html' | endif if len(type) ==# 0 | let type = 'html' | endif
if a:0 > 2 if a:0 > 2
let inline = a:3 let inline = a:3
else else
let inline = 0 let inline = 0
endif endif
if a:0 > 3 if a:0 > 3
if type(a:4) == 1 if type(a:4) ==# 1
let filters = split(a:4, '\s*,\s*') let filters = split(a:4, '\s*,\s*')
else else
let filters = a:4 let filters = a:4
@@ -212,7 +212,7 @@ function! emmet#toString(...)
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
while itemno < current.multiplier while itemno < current.multiplier
if len(current.name) if len(current.name)
if current.multiplier == 1 if current.multiplier ==# 1
let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(group_itemno, current), indent) let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(group_itemno, current), indent)
else else
let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(itemno, current), indent) let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(itemno, current), indent)
@@ -223,7 +223,7 @@ function! emmet#toString(...)
let str .= inner let str .= inner
else else
let snippet = current.snippet let snippet = current.snippet
if len(snippet) == 0 if len(snippet) ==# 0
let snippets = emmet#getResource(type, 'snippets', {}) let snippets = emmet#getResource(type, 'snippets', {})
if !empty(snippets) && has_key(snippets, 'emmet_snippet') if !empty(snippets) && has_key(snippets, 'emmet_snippet')
let snippet = snippets['emmet_snippet'] let snippet = snippets['emmet_snippet']
@@ -271,16 +271,16 @@ function! emmet#toString(...)
return str return str
endfunction endfunction
function! emmet#getSettings() function! emmet#getSettings() abort
return s:emmet_settings return s:emmet_settings
endfunction endfunction
function! emmet#getFilters(type) function! emmet#getFilters(type) abort
let filterstr = emmet#getResource(a:type, 'filters', '') let filterstr = emmet#getResource(a:type, 'filters', '')
return split(filterstr, '\s*,\s*') return split(filterstr, '\s*,\s*')
endfunction endfunction
function! emmet#getResource(type, name, default) function! emmet#getResource(type, name, default) abort
if exists('b:emmet_' . a:name) if exists('b:emmet_' . a:name)
return get(b:, 'emmet_' . a:name) return get(b:, 'emmet_' . a:name)
endif endif
@@ -291,14 +291,14 @@ function! emmet#getResource(type, name, default)
if has_key(s:emmet_settings[a:type], 'extends') if has_key(s:emmet_settings[a:type], 'extends')
let extends = s:emmet_settings[a:type].extends let extends = s:emmet_settings[a:type].extends
if type(extends) == 1 if type(extends) ==# 1
let tmp = split(extends, '\s*,\s*') let tmp = split(extends, '\s*,\s*')
unlet! extends unlet! extends
let extends = tmp let extends = tmp
endif endif
for ext in extends for ext in extends
if has_key(s:emmet_settings, ext) && has_key(s:emmet_settings[ext], a:name) if has_key(s:emmet_settings, ext) && has_key(s:emmet_settings[ext], a:name)
if type(ret) == 3 || type(ret) == 4 if type(ret) ==# 3 || type(ret) ==# 4
call emmet#mergeConfig(ret, s:emmet_settings[ext][a:name]) call emmet#mergeConfig(ret, s:emmet_settings[ext][a:name])
else else
let ret = s:emmet_settings[ext][a:name] let ret = s:emmet_settings[ext][a:name]
@@ -308,7 +308,7 @@ function! emmet#getResource(type, name, default)
endif endif
if has_key(s:emmet_settings[a:type], a:name) if has_key(s:emmet_settings[a:type], a:name)
if type(ret) == 3 || type(ret) == 4 if type(ret) ==# 3 || type(ret) ==# 4
call emmet#mergeConfig(ret, s:emmet_settings[a:type][a:name]) call emmet#mergeConfig(ret, s:emmet_settings[a:type][a:name])
else else
let ret = s:emmet_settings[a:type][a:name] let ret = s:emmet_settings[a:type][a:name]
@@ -318,18 +318,18 @@ function! emmet#getResource(type, name, default)
return ret return ret
endfunction endfunction
function! emmet#getFileType(...) function! emmet#getFileType(...) abort
let flg = get(a:000, 0, 0) let flg = get(a:000, 0, 0)
let type = '' let type = ''
for part in split(&ft, '\.') for part in split(&filetype, '\.')
if emmet#lang#exists(part) if emmet#lang#exists(part)
let type = part let type = part
break break
endif endif
let base = emmet#getBaseType(part) let base = emmet#getBaseType(part)
if base != '' if base !=# ''
if flg if flg
let type = &ft let type = &filetype
else else
let type = base let type = base
endif endif
@@ -337,27 +337,27 @@ function! emmet#getFileType(...)
break break
endif endif
endfor endfor
if type == 'html' if type ==# 'html'
let pos = emmet#util#getcurpos() let pos = emmet#util#getcurpos()
let type = synIDattr(synID(pos[1], pos[2], 1), "name") let type = synIDattr(synID(pos[1], pos[2], 1), 'name')
if type =~ '^css\w' if type =~# '^css\w'
let type = 'css' let type = 'css'
endif endif
if type =~ '^html\w' if type =~# '^html\w'
let type = 'html' let type = 'html'
endif endif
if type =~ '^javaScript' if type =~# '^javaScript'
let type = 'javascript' let type = 'javascript'
endif endif
if len(type) == 0 && type =~ '^xml' if len(type) ==# 0 && type =~# '^xml'
let type = 'xml' let type = 'xml'
endif endif
endif endif
if len(type) == 0 | let type = 'html' | endif if len(type) ==# 0 | let type = 'html' | endif
return type return type
endfunction endfunction
function! emmet#getDollarExprs(expand) function! emmet#getDollarExprs(expand) abort
let expand = a:expand let expand = a:expand
let dollar_list = [] let dollar_list = []
let dollar_reg = '\%(\\\)\@<!\${\(\([^{}]\|\%(\\\)\@\<=[{}]\)\{}\)}' let dollar_reg = '\%(\\\)\@<!\${\(\([^{}]\|\%(\\\)\@\<=[{}]\)\{}\)}'
@@ -365,11 +365,11 @@ function! emmet#getDollarExprs(expand)
let matcharr = matchlist(expand, dollar_reg) let matcharr = matchlist(expand, dollar_reg)
if len(matcharr) > 0 if len(matcharr) > 0
let key = get(matcharr, 1) let key = get(matcharr, 1)
if key !~ '^\d\+:' if key !~# '^\d\+:'
let key = substitute(key, '\\{', '{', 'g') let key = substitute(key, '\\{', '{', 'g')
let key = substitute(key, '\\}', '}', 'g') let key = substitute(key, '\\}', '}', 'g')
let value = emmet#getDollarValueByKey(key) let value = emmet#getDollarValueByKey(key)
if type(value) == type('') if type(value) ==# type('')
let expr = get(matcharr, 0) let expr = get(matcharr, 0)
call add(dollar_list, {'expr': expr, 'value': value}) call add(dollar_list, {'expr': expr, 'value': value})
endif endif
@@ -382,31 +382,31 @@ function! emmet#getDollarExprs(expand)
return dollar_list return dollar_list
endfunction endfunction
function! emmet#getDollarValueByKey(key) function! emmet#getDollarValueByKey(key) abort
let ret = 0 let ret = 0
let key = a:key let key = a:key
let ftsetting = get(s:emmet_settings, emmet#getFileType()) let ftsetting = get(s:emmet_settings, emmet#getFileType())
if type(ftsetting) == 4 && has_key(ftsetting, key) if type(ftsetting) ==# 4 && has_key(ftsetting, key)
let V = get(ftsetting, key) let V = get(ftsetting, key)
if type(V) == 1 | return V | endif if type(V) ==# 1 | return V | endif
endif endif
if type(ret) != 1 && has_key(s:emmet_settings.variables, key) if type(ret) !=# 1 && has_key(s:emmet_settings.variables, key)
let V = get(s:emmet_settings.variables, key) let V = get(s:emmet_settings.variables, key)
if type(V) == 1 | return V | endif if type(V) ==# 1 | return V | endif
endif endif
if has_key(s:emmet_settings, 'custom_expands') && type(s:emmet_settings['custom_expands']) == 4 if has_key(s:emmet_settings, 'custom_expands') && type(s:emmet_settings['custom_expands']) ==# 4
for k in keys(s:emmet_settings['custom_expands']) for k in keys(s:emmet_settings['custom_expands'])
if key =~ k if key =~# k
let V = get(s:emmet_settings['custom_expands'], k) let V = get(s:emmet_settings['custom_expands'], k)
if type(V) == 1 | return V | endif if type(V) ==# 1 | return V | endif
if type(V) == 2 | return V(key) | endif if type(V) ==# 2 | return V(key) | endif
endif endif
endfor endfor
endif endif
return ret return ret
endfunction endfunction
function! emmet#reExpandDollarExpr(expand, times) function! emmet#reExpandDollarExpr(expand, times) abort
let expand = a:expand let expand = a:expand
let dollar_exprs = emmet#getDollarExprs(expand) let dollar_exprs = emmet#getDollarExprs(expand)
if len(dollar_exprs) > 0 if len(dollar_exprs) > 0
@@ -423,14 +423,14 @@ function! emmet#reExpandDollarExpr(expand, times)
return expand return expand
endfunction endfunction
function! emmet#expandDollarExpr(expand) function! emmet#expandDollarExpr(expand) abort
return emmet#reExpandDollarExpr(a:expand, 0) return emmet#reExpandDollarExpr(a:expand, 0)
endfunction endfunction
function! emmet#expandCursorExpr(expand, mode) function! emmet#expandCursorExpr(expand, mode) abort
let expand = a:expand let expand = a:expand
if expand !~ '\${cursor}' if expand !~# '\${cursor}'
if a:mode == 2 if a:mode ==# 2
let expand = '${cursor}' . expand let expand = '${cursor}' . expand
else else
let expand .= '${cursor}' let expand .= '${cursor}'
@@ -438,16 +438,16 @@ function! emmet#expandCursorExpr(expand, mode)
endif endif
let expand = substitute(expand, '\${cursor}', '$cursor$', '') let expand = substitute(expand, '\${cursor}', '$cursor$', '')
let expand = substitute(expand, '\${cursor}', '', 'g') let expand = substitute(expand, '\${cursor}', '', 'g')
let expand = substitute(expand, '\${\d\+:\([^}]\+\)}', '$select$\1$select$', 'g') let expand = substitute(expand, '\${\d\+:\?\([^}]\+\)}', '$select$\1$select$', 'g')
let expand = substitute(expand, '\${cursor}', '', 'g') let expand = substitute(expand, '\${cursor}', '', 'g')
return expand return expand
endfunction endfunction
function! emmet#unescapeDollarExpr(expand) function! emmet#unescapeDollarExpr(expand) abort
return substitute(a:expand, '\\\$', '$', 'g') return substitute(a:expand, '\\\$', '$', 'g')
endfunction endfunction
function! emmet#expandAbbr(mode, abbr) range function! emmet#expandAbbr(mode, abbr) range abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#getFileType(1) let rtype = emmet#getFileType(1)
let indent = emmet#getIndentation(type) let indent = emmet#getIndentation(type)
@@ -457,22 +457,22 @@ function! emmet#expandAbbr(mode, abbr) range
let rest = '' let rest = ''
let filters = emmet#getFilters(type) let filters = emmet#getFilters(type)
if len(filters) == 0 if len(filters) ==# 0
let filters = ['html'] let filters = ['html']
endif endif
if a:mode == 2 if a:mode ==# 2
let leader = substitute(input('Tag: ', ''), '^\s*\(.*\)\s*$', '\1', 'g') let leader = substitute(input('Tag: ', ''), '^\s*\(.*\)\s*$', '\1', 'g')
if len(leader) == 0 if len(leader) ==# 0
return '' return ''
endif endif
if leader =~ s:filtermx if leader =~# s:filtermx
let filters = map(split(matchstr(leader, s:filtermx)[1:], '\s*[^\\]\zs,\s*'), 'substitute(v:val, "\\\\\\\\zs.\\\\ze", "&", "g")') let filters = map(split(matchstr(leader, s:filtermx)[1:], '\s*[^\\]\zs,\s*'), 'substitute(v:val, "\\\\\\\\zs.\\\\ze", "&", "g")')
let leader = substitute(leader, s:filtermx, '', '') let leader = substitute(leader, s:filtermx, '', '')
endif endif
if leader =~ '\*' if leader =~# '\*'
let query = substitute(leader, '*', '*' . (a:lastline - a:firstline + 1), '') let query = substitute(leader, '*', '*' . (a:lastline - a:firstline + 1), '')
if query !~ '}\s*$' if query !~# '}\s*$'
let query .= '>{$#}' let query .= '>{$#}'
endif endif
if emmet#useFilter(filters, '/') if emmet#useFilter(filters, '/')
@@ -535,7 +535,7 @@ function! emmet#expandAbbr(mode, abbr) range
let str .= lpart . "\n" let str .= lpart . "\n"
endif endif
endfor endfor
if stridx(leader, '{$#}') == -1 if stridx(leader, '{$#}') ==# -1
let leader .= '{$#}' let leader .= '{$#}'
endif endif
let items = emmet#parseIntoTree(leader, type).child let items = emmet#parseIntoTree(leader, type).child
@@ -545,7 +545,7 @@ function! emmet#expandAbbr(mode, abbr) range
silent! normal! gvygv silent! normal! gvygv
let str = @" let str = @"
call setreg('"', save_regcont, save_regtype) call setreg('"', save_regcont, save_regtype)
if stridx(leader, '{$#}') == -1 if stridx(leader, '{$#}') ==# -1
let leader .= '{$#}' let leader .= '{$#}'
endif endif
let items = emmet#parseIntoTree(leader, type).child let items = emmet#parseIntoTree(leader, type).child
@@ -558,27 +558,27 @@ function! emmet#expandAbbr(mode, abbr) range
let expand = substitute(expand, '<', '\&lt;', 'g') let expand = substitute(expand, '<', '\&lt;', 'g')
let expand = substitute(expand, '>', '\&gt;', 'g') let expand = substitute(expand, '>', '\&gt;', 'g')
endif endif
if stridx(leader, '{$#}') != -1 if stridx(leader, '{$#}') !=# -1
let expand = substitute(expand, '\$#', '\="\n" . str', 'g') let expand = substitute(expand, '\$#', '\="\n" . str', 'g')
endif endif
endif endif
elseif a:mode == 4 elseif a:mode ==# 4
let line = getline('.') let line = getline('.')
let spaces = matchstr(line, '^\s*') let spaces = matchstr(line, '^\s*')
if line !~ '^\s*$' if line !~# '^\s*$'
put =spaces.a:abbr put =spaces.a:abbr
else else
call setline('.', spaces.a:abbr) call setline('.', spaces.a:abbr)
endif endif
normal! $ normal! $
call emmet#expandAbbr(0, "") call emmet#expandAbbr(0, '')
return '' return ''
else else
let line = getline('.') let line = getline('.')
if col('.') < len(line) if col('.') < len(line)
let line = matchstr(line, '^\(.*\%'.col('.').'c\)') let line = matchstr(line, '^\(.*\%'.col('.').'c\)')
endif endif
if a:mode == 1 if a:mode ==# 1
let part = matchstr(line, '\([a-zA-Z0-9:_\-\@|]\+\)$') let part = matchstr(line, '\([a-zA-Z0-9:_\-\@|]\+\)$')
else else
let part = matchstr(line, '\(\S.*\)$') let part = matchstr(line, '\(\S.*\)$')
@@ -586,13 +586,13 @@ function! emmet#expandAbbr(mode, abbr) range
let part = emmet#lang#{ftype}#findTokens(part) let part = emmet#lang#{ftype}#findTokens(part)
let line = line[0: strridx(line, part) + len(part) - 1] let line = line[0: strridx(line, part) + len(part) - 1]
endif endif
if col('.') == col('$') if col('.') ==# col('$')
let rest = '' let rest = ''
else else
let rest = getline('.')[len(line):] let rest = getline('.')[len(line):]
endif endif
let str = part let str = part
if str =~ s:filtermx if str =~# s:filtermx
let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*') let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*')
let str = substitute(str, s:filtermx, '', '') let str = substitute(str, s:filtermx, '', '')
endif endif
@@ -611,20 +611,20 @@ function! emmet#expandAbbr(mode, abbr) range
let expand = emmet#expandCursorExpr(expand, a:mode) let expand = emmet#expandCursorExpr(expand, a:mode)
if len(expand) if len(expand)
if has_key(s:emmet_settings, 'timezone') && len(s:emmet_settings.timezone) if has_key(s:emmet_settings, 'timezone') && len(s:emmet_settings.timezone)
let expand = substitute(expand, '${datetime}', strftime("%Y-%m-%dT%H:%M:%S") . s:emmet_settings.timezone, 'g') let expand = substitute(expand, '${datetime}', strftime('%Y-%m-%dT%H:%M:%S') . s:emmet_settings.timezone, 'g')
else else
" TODO: on windows, %z/%Z is 'Tokyo(Standard)' " TODO: on windows, %z/%Z is 'Tokyo(Standard)'
let expand = substitute(expand, '${datetime}', strftime("%Y-%m-%dT%H:%M:%S %z"), 'g') let expand = substitute(expand, '${datetime}', strftime('%Y-%m-%dT%H:%M:%S %z'), 'g')
endif endif
let expand = emmet#unescapeDollarExpr(expand) let expand = emmet#unescapeDollarExpr(expand)
if a:mode == 2 && visualmode() ==# 'v' if a:mode ==# 2 && visualmode() ==# 'v'
if a:firstline == a:lastline if a:firstline ==# a:lastline
let expand = substitute(expand, '\n\s*', '', 'g') let expand = substitute(expand, '\n\s*', '', 'g')
else else
let expand = substitute(expand, '\n$', '', 'g') let expand = substitute(expand, '\n$', '', 'g')
endif endif
silent! normal! gv silent! normal! gv
let col = col("'<") let col = col('''<')
silent! normal! c silent! normal! c
let line = getline('.') let line = getline('.')
let lhs = matchstr(line, '.*\%<'.col.'c.') let lhs = matchstr(line, '.*\%<'.col.'c.')
@@ -636,21 +636,21 @@ function! emmet#expandAbbr(mode, abbr) range
call append(line('.'), lines[1:]) call append(line('.'), lines[1:])
endif endif
else else
if line[:-len(part)-1] =~ '^\s\+$' if line[:-len(part)-1] =~# '^\s\+$'
let indent = line[:-len(part)-1] let indent = line[:-len(part)-1]
else else
let indent = '' let indent = ''
endif endif
let expand = substitute(expand, '\n\s*$', '', 'g') let expand = substitute(expand, '\n\s*$', '', 'g')
if emmet#useFilter(filters, 's') if emmet#useFilter(filters, 's')
let epart = substitute(expand, "\n\s\*", "", 'g') let epart = substitute(expand, "\n\s\*", '', 'g')
else else
let epart = substitute(expand, "\n", "\n" . indent, 'g') let epart = substitute(expand, "\n", "\n" . indent, 'g')
endif endif
let expand = line[:-len(part)-1] . epart . rest let expand = line[:-len(part)-1] . epart . rest
let lines = split(expand, "\n", 1) let lines = split(expand, "\n", 1)
if a:mode == 2 if a:mode ==# 2
silent! exe "normal! gvc" silent! exe 'normal! gvc'
endif endif
call setline('.', lines[0]) call setline('.', lines[0])
if len(lines) > 1 if len(lines) > 1
@@ -664,11 +664,11 @@ function! emmet#expandAbbr(mode, abbr) range
if search('\ze\$\(cursor\|select\)\$') if search('\ze\$\(cursor\|select\)\$')
let oldselection = &selection let oldselection = &selection
let &selection = 'inclusive' let &selection = 'inclusive'
if foldclosed(line('.')) != -1 if foldclosed(line('.')) !=# -1
silent! foldopen silent! foldopen
endif endif
let pos = emmet#util#getcurpos() let pos = emmet#util#getcurpos()
if getline('.')[col('.')-1:] =~ '^\$select' if getline('.')[col('.')-1:] =~# '^\$select'
let pos[2] += 1 let pos[2] += 1
silent! s/\$select\$// silent! s/\$select\$//
let next = searchpos('.\ze\$select\$', 'nW') let next = searchpos('.\ze\$select\$', 'nW')
@@ -687,7 +687,7 @@ function! emmet#expandAbbr(mode, abbr) range
return '' return ''
endfunction endfunction
function! emmet#updateTag() function! emmet#updateTag() abort
let type = emmet#getFileType() let type = emmet#getFileType()
let region = emmet#util#searchRegion('<\S', '>') let region = emmet#util#searchRegion('<\S', '>')
if !emmet#util#regionIsValid(region) || !emmet#util#cursorInRegion(region) if !emmet#util#regionIsValid(region) || !emmet#util#cursorInRegion(region)
@@ -695,7 +695,7 @@ function! emmet#updateTag()
endif endif
let content = emmet#util#getContent(region) let content = emmet#util#getContent(region)
let content = matchstr(content, '^<[^><]\+>') let content = matchstr(content, '^<[^><]\+>')
if content !~ '^<[^><]\+>$' if content !~# '^<[^><]\+>$'
return '' return ''
endif endif
let current = emmet#lang#html#parseTag(content) let current = emmet#lang#html#parseTag(content)
@@ -715,19 +715,19 @@ function! emmet#updateTag()
return '' return ''
endfunction endfunction
function! emmet#moveNextPrevItem(flag) function! emmet#moveNextPrevItem(flag) abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
return emmet#lang#{rtype}#moveNextPrevItem(a:flag) return emmet#lang#{rtype}#moveNextPrevItem(a:flag)
endfunction endfunction
function! emmet#moveNextPrev(flag) function! emmet#moveNextPrev(flag) abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
return emmet#lang#{rtype}#moveNextPrev(a:flag) return emmet#lang#{rtype}#moveNextPrev(a:flag)
endfunction endfunction
function! emmet#imageSize() function! emmet#imageSize() abort
let orgpos = emmet#util#getcurpos() let orgpos = emmet#util#getcurpos()
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
@@ -736,46 +736,46 @@ function! emmet#imageSize()
return '' return ''
endfunction endfunction
function! emmet#encodeImage() function! emmet#encodeImage() abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
return emmet#lang#{rtype}#encodeImage() return emmet#lang#{rtype}#encodeImage()
endfunction endfunction
function! emmet#toggleComment() function! emmet#toggleComment() abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
call emmet#lang#{rtype}#toggleComment() call emmet#lang#{rtype}#toggleComment()
return '' return ''
endfunction endfunction
function! emmet#balanceTag(flag) range function! emmet#balanceTag(flag) range abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
return emmet#lang#{rtype}#balanceTag(a:flag) return emmet#lang#{rtype}#balanceTag(a:flag)
endfunction endfunction
function! emmet#splitJoinTag() function! emmet#splitJoinTag() abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
return emmet#lang#{rtype}#splitJoinTag() return emmet#lang#{rtype}#splitJoinTag()
endfunction endfunction
function! emmet#mergeLines() range function! emmet#mergeLines() range abort
let lines = join(map(getline(a:firstline, a:lastline), 'matchstr(v:val, "^\\s*\\zs.*\\ze\\s*$")'), '') let lines = join(map(getline(a:firstline, a:lastline), 'matchstr(v:val, "^\\s*\\zs.*\\ze\\s*$")'), '')
let indent = substitute(getline('.'), '^\(\s*\).*', '\1', '') let indent = substitute(getline('.'), '^\(\s*\).*', '\1', '')
silent! exe "normal! gvc" silent! exe 'normal! gvc'
call setline('.', indent . lines) call setline('.', indent . lines)
endfunction endfunction
function! emmet#removeTag() function! emmet#removeTag() abort
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
call emmet#lang#{rtype}#removeTag() call emmet#lang#{rtype}#removeTag()
return '' return ''
endfunction endfunction
function! emmet#anchorizeURL(flag) function! emmet#anchorizeURL(flag) abort
let mx = 'https\=:\/\/[-!#$%&*+,./:;=?@0-9a-zA-Z_~]\+' let mx = 'https\=:\/\/[-!#$%&*+,./:;=?@0-9a-zA-Z_~]\+'
let pos1 = searchpos(mx, 'bcnW') let pos1 = searchpos(mx, 'bcnW')
let url = matchstr(getline(pos1[0])[pos1[1]-1:], mx) let url = matchstr(getline(pos1[0])[pos1[1]-1:], mx)
@@ -793,9 +793,9 @@ function! emmet#anchorizeURL(flag)
let type = emmet#getFileType() let type = emmet#getFileType()
let rtype = emmet#lang#exists(type) ? type : 'html' let rtype = emmet#lang#exists(type) ? type : 'html'
if &ft == 'markdown' if &filetype ==# 'markdown'
let expand = printf("[%s](%s)", substitute(title, '[\[\]]', '\\&', 'g'), url) let expand = printf('[%s](%s)', substitute(title, '[\[\]]', '\\&', 'g'), url)
elseif a:flag == 0 elseif a:flag ==# 0
let a = emmet#lang#html#parseTag('<a>') let a = emmet#lang#html#parseTag('<a>')
let a.attr.href = url let a.attr.href = url
let a.value = '{' . title . '}' let a.value = '{' . title . '}'
@@ -826,9 +826,9 @@ function! emmet#anchorizeURL(flag)
return '' return ''
endfunction endfunction
function! emmet#codePretty() range function! emmet#codePretty() range abort
let type = input('FileType: ', &ft, 'filetype') let type = input('FileType: ', &filetype, 'filetype')
if len(type) == 0 if len(type) ==# 0
return return
endif endif
let block = emmet#util#getVisualBlock() let block = emmet#util#getVisualBlock()
@@ -847,18 +847,18 @@ function! emmet#codePretty() range
call emmet#util#setContent(block, content) call emmet#util#setContent(block, content)
endfunction endfunction
function! emmet#expandWord(abbr, type, orig) function! emmet#expandWord(abbr, type, orig) abort
let str = a:abbr let str = a:abbr
let type = a:type let type = a:type
let indent = emmet#getIndentation(type) let indent = emmet#getIndentation(type)
if len(type) == 0 | let type = 'html' | endif if len(type) ==# 0 | let type = 'html' | endif
if str =~ s:filtermx if str =~# s:filtermx
let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*') let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*')
let str = substitute(str, s:filtermx, '', '') let str = substitute(str, s:filtermx, '', '')
else else
let filters = emmet#getFilters(a:type) let filters = emmet#getFilters(a:type)
if len(filters) == 0 if len(filters) ==# 0
let filters = ['html'] let filters = ['html']
endif endif
endif endif
@@ -874,28 +874,29 @@ function! emmet#expandWord(abbr, type, orig)
let expand = substitute(expand, '>', '\&gt;', 'g') let expand = substitute(expand, '>', '\&gt;', 'g')
endif endif
if emmet#useFilter(filters, 's') if emmet#useFilter(filters, 's')
let expand = substitute(expand, "\n\s\*", "", 'g') let expand = substitute(expand, "\n\s\*", '', 'g')
endif endif
if a:orig == 0 if a:orig ==# 0
let expand = emmet#expandDollarExpr(expand) let expand = emmet#expandDollarExpr(expand)
let expand = substitute(expand, '\${cursor}', '', 'g') let expand = substitute(expand, '\${cursor}', '', 'g')
let expand = substitute(expand, '\${\d\+\(:[^}]\+\|\)}', '\1', 'g')
endif endif
return expand return expand
endfunction endfunction
function! emmet#getSnippets(type) function! emmet#getSnippets(type) abort
let type = a:type let type = a:type
if len(type) == 0 || !has_key(s:emmet_settings, type) if len(type) ==# 0 || !has_key(s:emmet_settings, type)
let type = 'html' let type = 'html'
endif endif
return emmet#getResource(type, 'snippets', {}) return emmet#getResource(type, 'snippets', {})
endfunction endfunction
function! emmet#completeTag(findstart, base) function! emmet#completeTag(findstart, base) abort
if a:findstart if a:findstart
let line = getline('.') let line = getline('.')
let start = col('.') - 1 let start = col('.') - 1
while start > 0 && line[start - 1] =~ '[a-zA-Z0-9:_\@\-]' while start > 0 && line[start - 1] =~# '[a-zA-Z0-9:_\@\-]'
let start -= 1 let start -= 1
endwhile endwhile
return start return start
@@ -905,13 +906,13 @@ function! emmet#completeTag(findstart, base)
let snippets = emmet#getResource(type, 'snippets', {}) let snippets = emmet#getResource(type, 'snippets', {})
for item in keys(snippets) for item in keys(snippets)
if stridx(item, a:base) != -1 if stridx(item, a:base) !=# -1
call add(res, substitute(item, '\${cursor}\||', '', 'g')) call add(res, substitute(item, '\${cursor}\||', '', 'g'))
endif endif
endfor endfor
let aliases = emmet#getResource(type, 'aliases', {}) let aliases = emmet#getResource(type, 'aliases', {})
for item in values(aliases) for item in values(aliases)
if stridx(item, a:base) != -1 if stridx(item, a:base) !=# -1
call add(res, substitute(item, '\${cursor}\||', '', 'g')) call add(res, substitute(item, '\${cursor}\||', '', 'g'))
endif endif
endfor endfor
@@ -1860,7 +1861,7 @@ if exists('g:user_emmet_settings')
call emmet#mergeConfig(s:emmet_settings, g:user_emmet_settings) call emmet#mergeConfig(s:emmet_settings, g:user_emmet_settings)
endif endif
let &cpo = s:save_cpo let &cpoptions = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:set et: " vim:set et:

View File

@@ -1,8 +1,8 @@
function! emmet#lang#css#findTokens(str) function! emmet#lang#css#findTokens(str) abort
return substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '') return substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '')
endfunction endfunction
function! emmet#lang#css#parseIntoTree(abbr, type) function! emmet#lang#css#parseIntoTree(abbr, type) abort
let abbr = a:abbr let abbr = a:abbr
let type = a:type let type = a:type
let prefix = 0 let prefix = 0
@@ -17,8 +17,8 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
" emmet " emmet
let tokens = split(abbr, '+\ze[^+)!]') let tokens = split(abbr, '+\ze[^+)!]')
let block = emmet#util#searchRegion("{", "}") let block = emmet#util#searchRegion('{', '}')
if abbr !~ '^@' && emmet#getBaseType(type) == 'css' && type != 'sass' && block[0] == [0,0] && block[1] == [0,0] if abbr !~# '^@' && emmet#getBaseType(type) ==# 'css' && type !=# 'sass' && block[0] ==# [0,0] && block[1] ==# [0,0]
let current = emmet#newNode() let current = emmet#newNode()
let current.snippet = abbr . " {\n" . indent . "${cursor}\n}" let current.snippet = abbr . " {\n" . indent . "${cursor}\n}"
let current.name = '' let current.name = ''
@@ -29,7 +29,7 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
let prop = matchlist(token, '^\(-\{0,1}[a-zA-Z]\+\|[a-zA-Z0-9]\++\{0,1}\|([a-zA-Z0-9]\++\{0,1})\)\(\%([0-9.-]\+[pe]\{0,1}-\{0,1}\|-auto\)*\)$') let prop = matchlist(token, '^\(-\{0,1}[a-zA-Z]\+\|[a-zA-Z0-9]\++\{0,1}\|([a-zA-Z0-9]\++\{0,1})\)\(\%([0-9.-]\+[pe]\{0,1}-\{0,1}\|-auto\)*\)$')
if len(prop) if len(prop)
let token = substitute(prop[1], '^(\(.*\))', '\1', '') let token = substitute(prop[1], '^(\(.*\))', '\1', '')
if token =~ '^-' if token =~# '^-'
let prefix = 1 let prefix = 1
let token = token[1:] let token = token[1:]
endif endif
@@ -38,18 +38,18 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
if len(value) > 0 if len(value) > 0
let value .= ' ' let value .= ' '
endif endif
if token =~ '^[z]' if token =~# '^[z]'
" TODO " TODO
let value .= substitute(v, '[^0-9.]*$', '', '') let value .= substitute(v, '[^0-9.]*$', '', '')
elseif v =~ 'p$' elseif v =~# 'p$'
let value .= substitute(v, 'p$', '%', '') let value .= substitute(v, 'p$', '%', '')
elseif v =~ 'e$' elseif v =~# 'e$'
let value .= substitute(v, 'e$', 'em', '') let value .= substitute(v, 'e$', 'em', '')
elseif v =~ '\.' elseif v =~# '\.'
let value .= v . 'em' let value .= v . 'em'
elseif v == 'auto' elseif v ==# 'auto'
let value .= v let value .= v
elseif v == '0' elseif v ==# '0'
let value .= '0' let value .= '0'
else else
let value .= v . 'px' let value .= v . 'px'
@@ -58,7 +58,7 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
endif endif
let tag_name = token let tag_name = token
if tag_name =~ '.!$' if tag_name =~# '.!$'
let tag_name = tag_name[:-2] let tag_name = tag_name[:-2]
let important = 1 let important = 1
else else
@@ -150,7 +150,7 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
call add(root.child, deepcopy(current)) call add(root.child, deepcopy(current))
let current.snippet = snippet let current.snippet = snippet
call add(root.child, current) call add(root.child, current)
elseif token =~ '^c#\([0-9a-fA-F]\{3}\|[0-9a-fA-F]\{6}\)\(\.[0-9]\+\)\?' elseif token =~# '^c#\([0-9a-fA-F]\{3}\|[0-9a-fA-F]\{6}\)\(\.[0-9]\+\)\?'
let cs = split(token, '\.') let cs = split(token, '\.')
let current.name = '' let current.name = ''
let [r,g,b] = [0,0,0] let [r,g,b] = [0,0,0]
@@ -171,7 +171,7 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
let current.snippet = printf('color:rgb(%d, %d, %d, %s);', r, g, b, string(str2float('0.'.cs[1]))) let current.snippet = printf('color:rgb(%d, %d, %d, %s);', r, g, b, string(str2float('0.'.cs[1])))
endif endif
call add(root.child, current) call add(root.child, current)
elseif token =~ '^c#' elseif token =~# '^c#'
let current.name = '' let current.name = ''
let current.snippet = 'color:\${cursor};' let current.snippet = 'color:\${cursor};'
call add(root.child, current) call add(root.child, current)
@@ -183,7 +183,7 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
return root return root
endfunction endfunction
function! emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent) function! emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent) abort
let current = a:current let current = a:current
let value = current.value[1:-2] let value = current.value[1:-2]
if emmet#useFilter(a:filters, 'fc') if emmet#useFilter(a:filters, 'fc')
@@ -197,7 +197,7 @@ function! emmet#lang#css#toString(settings, current, type, inline, filters, item
return value return value
endfunction endfunction
function! emmet#lang#css#imageSize() function! emmet#lang#css#imageSize() abort
let img_region = emmet#util#searchRegion('{', '}') let img_region = emmet#util#searchRegion('{', '}')
if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region) if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region)
return return
@@ -205,9 +205,9 @@ function! emmet#lang#css#imageSize()
let content = emmet#util#getContent(img_region) let content = emmet#util#getContent(img_region)
let fn = matchstr(content, '\<url(\zs[^)]\+\ze)') let fn = matchstr(content, '\<url(\zs[^)]\+\ze)')
let fn = substitute(fn, '[''" \t]', '', 'g') let fn = substitute(fn, '[''" \t]', '', 'g')
if fn =~ '^\s*$' if fn =~# '^\s*$'
return return
elseif fn !~ '^\(/\|http\)' elseif fn !~# '^\(/\|http\)'
let fn = simplify(expand('%:h') . '/' . fn) let fn = simplify(expand('%:h') . '/' . fn)
endif endif
let [width, height] = emmet#util#getImageSize(fn) let [width, height] = emmet#util#getImageSize(fn)
@@ -215,12 +215,12 @@ function! emmet#lang#css#imageSize()
return return
endif endif
let indent = emmet#getIndentation('css') let indent = emmet#getIndentation('css')
if content =~ '.*\<width\s*:[^;]*;.*' if content =~# '.*\<width\s*:[^;]*;.*'
let content = substitute(content, '\<width\s*:[^;]*;', 'width: ' . width . 'px;', '') let content = substitute(content, '\<width\s*:[^;]*;', 'width: ' . width . 'px;', '')
else else
let content = substitute(content, '}', indent . 'width: ' . width . "px;\n}", '') let content = substitute(content, '}', indent . 'width: ' . width . "px;\n}", '')
endif endif
if content =~ '.*\<height\s*:[^;]*;.*' if content =~# '.*\<height\s*:[^;]*;.*'
let content = substitute(content, '\<height\s*:[^;]*;', 'height: ' . height . 'px;', '') let content = substitute(content, '\<height\s*:[^;]*;', 'height: ' . height . 'px;', '')
else else
let content = substitute(content, '}', indent . 'height: ' . height . "px;\n}", '') let content = substitute(content, '}', indent . 'height: ' . height . "px;\n}", '')
@@ -228,17 +228,17 @@ function! emmet#lang#css#imageSize()
call emmet#util#setContent(img_region, content) call emmet#util#setContent(img_region, content)
endfunction endfunction
function! emmet#lang#css#encodeImage() function! emmet#lang#css#encodeImage() abort
endfunction endfunction
function! emmet#lang#css#parseTag(tag) function! emmet#lang#css#parseTag(tag) abort
return {} return {}
endfunction endfunction
function! emmet#lang#css#toggleComment() function! emmet#lang#css#toggleComment() abort
let line = getline('.') let line = getline('.')
let mx = '^\(\s*\)/\*\s*\(.*\)\s*\*/\s*$' let mx = '^\(\s*\)/\*\s*\(.*\)\s*\*/\s*$'
if line =~ '{\s*$' if line =~# '{\s*$'
let block = emmet#util#searchRegion('/\*', '\*/\zs') let block = emmet#util#searchRegion('/\*', '\*/\zs')
if emmet#util#regionIsValid(block) if emmet#util#regionIsValid(block)
let content = emmet#util#getContent(block) let content = emmet#util#getContent(block)
@@ -251,7 +251,7 @@ function! emmet#lang#css#toggleComment()
endif endif
endif endif
else else
if line =~ mx if line =~# mx
let space = substitute(matchstr(line, mx), mx, '\1', '') let space = substitute(matchstr(line, mx), mx, '\1', '')
let line = substitute(matchstr(line, mx), mx, '\2', '') let line = substitute(matchstr(line, mx), mx, '\2', '')
let line = space . substitute(line, '^\s*\|\s*$', '\1', 'g') let line = space . substitute(line, '^\s*\|\s*$', '\1', 'g')
@@ -263,7 +263,7 @@ function! emmet#lang#css#toggleComment()
endif endif
endfunction endfunction
function! emmet#lang#css#balanceTag(flag) range function! emmet#lang#css#balanceTag(flag) range abort
if a:flag == -2 || a:flag == 2 if a:flag == -2 || a:flag == 2
let curpos = [0, line("'<"), col("'<"), 0] let curpos = [0, line("'<"), col("'<"), 0]
else else
@@ -281,7 +281,7 @@ function! emmet#lang#css#balanceTag(flag) range
else else
if a:flag > 0 if a:flag > 0
let content = emmet#util#getContent(block) let content = emmet#util#getContent(block)
if content !~ '^{.*}$' if content !~# '^{.*}$'
let block = emmet#util#searchRegion('{', '}') let block = emmet#util#searchRegion('{', '}')
if emmet#util#regionIsValid(block) if emmet#util#regionIsValid(block)
call emmet#util#selectRegion(block) call emmet#util#selectRegion(block)
@@ -301,17 +301,17 @@ function! emmet#lang#css#balanceTag(flag) range
endif endif
endif endif
if a:flag == -2 || a:flag == 2 if a:flag == -2 || a:flag == 2
silent! exe "normal! gv" silent! exe 'normal! gv'
else else
call setpos('.', curpos) call setpos('.', curpos)
endif endif
endfunction endfunction
function! emmet#lang#css#moveNextPrevItem(flag) function! emmet#lang#css#moveNextPrevItem(flag) abort
return emmet#lang#css#moveNextPrev(a:flag) return emmet#lang#css#moveNextPrev(a:flag)
endfunction endfunction
function! emmet#lang#css#moveNextPrev(flag) function! emmet#lang#css#moveNextPrev(flag) abort
let pos = search('""\|()\|\(:\s*\zs$\)', a:flag ? 'Wbp' : 'Wp') let pos = search('""\|()\|\(:\s*\zs$\)', a:flag ? 'Wbp' : 'Wp')
if pos == 2 if pos == 2
startinsert! startinsert!
@@ -321,10 +321,10 @@ function! emmet#lang#css#moveNextPrev(flag)
endif endif
endfunction endfunction
function! emmet#lang#css#splitJoinTag() function! emmet#lang#css#splitJoinTag() abort
" nothing to do " nothing to do
endfunction endfunction
function! emmet#lang#css#removeTag() function! emmet#lang#css#removeTag() abort
" nothing to do " nothing to do
endfunction endfunction

View File

@@ -1,7 +1,7 @@
"============================================================================= "=============================================================================
" File: emmet.vim " File: emmet.vim
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com> " Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
" Last Change: 28-Nov-2013. " Last Change: 17-Dec-2014.
" Version: 0.85 " Version: 0.85
" WebPage: http://github.com/mattn/emmet-vim " WebPage: http://github.com/mattn/emmet-vim
" Description: vim plugins for HTML and CSS hi-speed coding. " Description: vim plugins for HTML and CSS hi-speed coding.
@@ -66,13 +66,13 @@
" GetLatestVimScripts: 2981 1 :AutoInstall: emmet.vim " GetLatestVimScripts: 2981 1 :AutoInstall: emmet.vim
" script type: plugin " script type: plugin
if &cp || v:version < 702 || (exists('g:loaded_emmet_vim') && g:loaded_emmet_vim) if &compatible || v:version < 702 || (exists('g:loaded_emmet_vim') && g:loaded_emmet_vim)
finish finish
endif endif
let g:loaded_emmet_vim = 1 let g:loaded_emmet_vim = 1
let s:save_cpo = &cpo let s:save_cpo = &cpoptions
set cpo&vim set cpoptions&vim
if !exists('g:emmet_html5') if !exists('g:emmet_html5')
let g:emmet_html5 = 1 let g:emmet_html5 = 1
@@ -135,7 +135,7 @@ function! s:install_plugin(mode, buffer)
\] \]
for item in items for item in items
if a:mode != 'a' && stridx(a:mode, item.mode) == -1 if a:mode !=# 'a' && stridx(a:mode, item.mode) == -1
continue continue
endif endif
exe item.mode . 'noremap '. buffer .' <plug>(' . item.plug . ') ' . item.func exe item.mode . 'noremap '. buffer .' <plug>(' . item.plug . ') ' . item.func
@@ -160,7 +160,7 @@ if get(g:, 'user_emmet_install_command', 1)
command! -nargs=1 Emmet call emmet#expandAbbr(4, <q-args>) command! -nargs=1 Emmet call emmet#expandAbbr(4, <q-args>)
endif endif
let &cpo = s:save_cpo let &cpoptions = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:set et: " vim:set et: