mirror of
https://git.davidovski.xyz/dot.git
synced 2024-08-15 00:43:28 +00:00
2136 lines
83 KiB
VimL
2136 lines
83 KiB
VimL
|
"=============================================================================
|
||
|
" emmet.vim
|
||
|
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
|
||
|
" Last Change: 26-Jul-2015.
|
||
|
|
||
|
let s:save_cpo = &cpoptions
|
||
|
set cpoptions&vim
|
||
|
|
||
|
let s:filtermx = '|\(\%(bem\|html\|blade\|haml\|slim\|e\|c\|s\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$'
|
||
|
|
||
|
function! emmet#getExpandos(type, key) abort
|
||
|
let expandos = emmet#getResource(a:type, 'expandos', {})
|
||
|
if has_key(expandos, a:key)
|
||
|
return expandos[a:key]
|
||
|
endif
|
||
|
return a:key
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#splitFilterArg(filters) abort
|
||
|
for f in a:filters
|
||
|
if f =~# '^/'
|
||
|
return f[1:]
|
||
|
endif
|
||
|
endfor
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#useFilter(filters, filter) abort
|
||
|
for f in a:filters
|
||
|
if a:filter ==# '/' && f =~# '^/'
|
||
|
return 1
|
||
|
elseif f ==# a:filter
|
||
|
return 1
|
||
|
endif
|
||
|
endfor
|
||
|
return 0
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getIndentation(...) abort
|
||
|
if a:0 > 0
|
||
|
let type = a:1
|
||
|
else
|
||
|
let type = emmet#getFileType()
|
||
|
endif
|
||
|
if has_key(s:emmet_settings, type) && has_key(s:emmet_settings[type], 'indentation')
|
||
|
let indent = s:emmet_settings[type].indentation
|
||
|
elseif has_key(s:emmet_settings, 'indentation')
|
||
|
let indent = s:emmet_settings.indentation
|
||
|
elseif has_key(s:emmet_settings.variables, 'indentation')
|
||
|
let indent = s:emmet_settings.variables.indentation
|
||
|
else
|
||
|
let sw = exists('*shiftwidth') ? shiftwidth() : &l:shiftwidth
|
||
|
let indent = (&l:expandtab || &l:tabstop !=# sw) ? repeat(' ', sw) : "\t"
|
||
|
endif
|
||
|
return indent
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getBaseType(type) abort
|
||
|
if !has_key(s:emmet_settings, a:type)
|
||
|
return ''
|
||
|
endif
|
||
|
if !has_key(s:emmet_settings[a:type], 'extends')
|
||
|
return a:type
|
||
|
endif
|
||
|
let extends = s:emmet_settings[a:type].extends
|
||
|
if type(extends) ==# 1
|
||
|
let tmp = split(extends, '\s*,\s*')
|
||
|
let ext = tmp[0]
|
||
|
else
|
||
|
let ext = extends[0]
|
||
|
endif
|
||
|
if a:type !=# ext
|
||
|
return emmet#getBaseType(ext)
|
||
|
endif
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#isExtends(type, extend) abort
|
||
|
if a:type ==# a:extend
|
||
|
return 1
|
||
|
endif
|
||
|
if !has_key(s:emmet_settings, a:type)
|
||
|
return 0
|
||
|
endif
|
||
|
if !has_key(s:emmet_settings[a:type], 'extends')
|
||
|
return 0
|
||
|
endif
|
||
|
let extends = emmet#lang#getExtends(a:type)
|
||
|
for ext in extends
|
||
|
if a:extend ==# ext
|
||
|
return 1
|
||
|
endif
|
||
|
endfor
|
||
|
return 0
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#parseIntoTree(abbr, type) abort
|
||
|
let abbr = a:abbr
|
||
|
let type = a:type
|
||
|
return emmet#lang#{emmet#lang#type(type)}#parseIntoTree(abbr, type)
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#expandAbbrIntelligent(feedkey) abort
|
||
|
if !emmet#isExpandable()
|
||
|
return a:feedkey
|
||
|
endif
|
||
|
return "\<plug>(emmet-expand-abbr)"
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#isExpandable() abort
|
||
|
let line = getline('.')
|
||
|
if col('.') < len(line)
|
||
|
let line = matchstr(line, '^\(.*\%'.col('.').'c\)')
|
||
|
endif
|
||
|
let part = matchstr(line, '\(\S.*\)$')
|
||
|
let type = emmet#getFileType()
|
||
|
let rtype = emmet#lang#type(type)
|
||
|
let part = emmet#lang#{rtype}#findTokens(part)
|
||
|
return len(part) > 0
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#mergeConfig(lhs, rhs) abort
|
||
|
let [lhs, rhs] = [a:lhs, a:rhs]
|
||
|
if type(lhs) ==# 3
|
||
|
if type(rhs) ==# 3
|
||
|
let lhs += rhs
|
||
|
if len(lhs)
|
||
|
call remove(lhs, 0, len(lhs)-1)
|
||
|
endif
|
||
|
for rhi in rhs
|
||
|
call add(lhs, rhs[rhi])
|
||
|
endfor
|
||
|
elseif type(rhs) ==# 4
|
||
|
let lhs += map(keys(rhs), '{v:val : rhs[v:val]}')
|
||
|
endif
|
||
|
elseif type(lhs) ==# 4
|
||
|
if type(rhs) ==# 3
|
||
|
for V in rhs
|
||
|
if type(V) != 4
|
||
|
continue
|
||
|
endif
|
||
|
for k in keys(V)
|
||
|
let lhs[k] = V[k]
|
||
|
endfor
|
||
|
endfor
|
||
|
elseif type(rhs) ==# 4
|
||
|
for key in keys(rhs)
|
||
|
if type(rhs[key]) ==# 3
|
||
|
if !has_key(lhs, key)
|
||
|
let lhs[key] = []
|
||
|
endif
|
||
|
if type(lhs[key]) == 3
|
||
|
let lhs[key] += rhs[key]
|
||
|
elseif type(lhs[key]) == 4
|
||
|
for k in keys(rhs[key])
|
||
|
let lhs[key][k] = rhs[key][k]
|
||
|
endfor
|
||
|
endif
|
||
|
elseif type(rhs[key]) ==# 4
|
||
|
if has_key(lhs, key)
|
||
|
call emmet#mergeConfig(lhs[key], rhs[key])
|
||
|
else
|
||
|
let lhs[key] = rhs[key]
|
||
|
endif
|
||
|
else
|
||
|
let lhs[key] = rhs[key]
|
||
|
endif
|
||
|
endfor
|
||
|
endif
|
||
|
endif
|
||
|
endfunction
|
||
|
|
||
|
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'], 'block': 0, 'empty': 0 }
|
||
|
endfunction
|
||
|
|
||
|
function! s:itemno(itemno, current) abort
|
||
|
let current = a:current
|
||
|
if current.basedirect > 0
|
||
|
return current.basevalue - 1 + a:itemno
|
||
|
else
|
||
|
return current.multiplier + current.basevalue - 2 - a:itemno
|
||
|
endif
|
||
|
endfunction
|
||
|
|
||
|
function! s:localvar(current, key) abort
|
||
|
let val = ''
|
||
|
let cur = a:current
|
||
|
while !empty(cur)
|
||
|
if has_key(cur, 'variables') && has_key(cur.variables, a:key)
|
||
|
return cur.variables[a:key]
|
||
|
endif
|
||
|
let cur = cur.parent
|
||
|
endwhile
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#toString(...) abort
|
||
|
let current = a:1
|
||
|
if a:0 > 1
|
||
|
let type = a:2
|
||
|
else
|
||
|
let type = &filetype
|
||
|
endif
|
||
|
if len(type) ==# 0 | let type = 'html' | endif
|
||
|
if a:0 > 2
|
||
|
let inline = a:3
|
||
|
else
|
||
|
let inline = 0
|
||
|
endif
|
||
|
if a:0 > 3
|
||
|
if type(a:4) ==# 1
|
||
|
let filters = split(a:4, '\s*,\s*')
|
||
|
else
|
||
|
let filters = a:4
|
||
|
endif
|
||
|
else
|
||
|
let filters = ['html']
|
||
|
endif
|
||
|
if a:0 > 4
|
||
|
let group_itemno = a:5
|
||
|
else
|
||
|
let group_itemno = 0
|
||
|
endif
|
||
|
if a:0 > 5
|
||
|
let indent = a:6
|
||
|
else
|
||
|
let indent = ''
|
||
|
endif
|
||
|
|
||
|
let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)
|
||
|
let itemno = 0
|
||
|
let str = ''
|
||
|
let rtype = emmet#lang#type(type)
|
||
|
while itemno < current.multiplier
|
||
|
if len(current.name)
|
||
|
if current.multiplier ==# 1
|
||
|
let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(group_itemno, current), indent)
|
||
|
else
|
||
|
let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(itemno, current), indent)
|
||
|
endif
|
||
|
if current.multiplier > 1
|
||
|
let inner = substitute(inner, '\$#', '$line'.(itemno+1).'$', 'g')
|
||
|
endif
|
||
|
let str .= inner
|
||
|
else
|
||
|
let snippet = current.snippet
|
||
|
if len(snippet) ==# 0
|
||
|
let snippets = emmet#getResource(type, 'snippets', {})
|
||
|
if !empty(snippets) && has_key(snippets, 'emmet_snippet')
|
||
|
let snippet = snippets['emmet_snippet']
|
||
|
endif
|
||
|
endif
|
||
|
if len(snippet) > 0
|
||
|
let tmp = snippet
|
||
|
let tmp = substitute(tmp, '\${emmet_name}', current.name, 'g')
|
||
|
let snippet_node = emmet#newNode()
|
||
|
let snippet_node.value = '{'.tmp.'}'
|
||
|
let snippet_node.important = current.important
|
||
|
let snippet_node.multiplier = current.multiplier
|
||
|
let str .= emmet#lang#{rtype}#toString(s:emmet_settings, snippet_node, type, inline, filters, s:itemno(group_itemno, current), indent)
|
||
|
if current.multiplier > 1
|
||
|
let str .= "\n"
|
||
|
endif
|
||
|
else
|
||
|
if len(current.name)
|
||
|
let str .= current.name
|
||
|
endif
|
||
|
if len(current.value)
|
||
|
let text = current.value[1:-2]
|
||
|
if dollar_expr
|
||
|
" TODO: regexp engine specified
|
||
|
if exists('®expengine')
|
||
|
let text = substitute(text, '\%#=1\%(\\\)\@\<!\(\$\+\)\([^{#]\|$\)', '\=printf("%0".len(submatch(1))."d", max([itemno, group_itemno])+1).submatch(2)', 'g')
|
||
|
else
|
||
|
let text = substitute(text, '\%(\\\)\@\<!\(\$\+\)\([^{#]\|$\)', '\=printf("%0".len(submatch(1))."d", max([itemno, group_itemno])+1).submatch(2)', 'g')
|
||
|
endif
|
||
|
let text = substitute(text, '\${nr}', "\n", 'g')
|
||
|
let text = substitute(text, '\\\$', '$', 'g')
|
||
|
endif
|
||
|
let str .= text
|
||
|
endif
|
||
|
endif
|
||
|
let inner = ''
|
||
|
if len(current.child)
|
||
|
for n in current.child
|
||
|
let inner .= emmet#toString(n, type, inline, filters, s:itemno(group_itemno, n), indent)
|
||
|
endfor
|
||
|
else
|
||
|
let inner = current.value[1:-2]
|
||
|
endif
|
||
|
let inner = substitute(inner, "\n", "\n" . indent, 'g')
|
||
|
let str = substitute(str, '\${:\(\w\+\)}', '\=s:localvar(current, submatch(1))', '')
|
||
|
let str = substitute(str, '\${child}', inner, '')
|
||
|
endif
|
||
|
let itemno = itemno + 1
|
||
|
endwhile
|
||
|
return str
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getSettings() abort
|
||
|
return s:emmet_settings
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getFilters(type) abort
|
||
|
let filterstr = emmet#getResource(a:type, 'filters', '')
|
||
|
return split(filterstr, '\s*,\s*')
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getResource(type, name, default) abort
|
||
|
if exists('b:emmet_' . a:name)
|
||
|
return get(b:, 'emmet_' . a:name)
|
||
|
endif
|
||
|
let global = {}
|
||
|
if has_key(s:emmet_settings, '*') && has_key(s:emmet_settings['*'], a:name)
|
||
|
let global = extend(global, s:emmet_settings['*'][a:name])
|
||
|
endif
|
||
|
|
||
|
if has_key(s:emmet_settings, a:type)
|
||
|
let types = [a:type]
|
||
|
else
|
||
|
let types = split(a:type, '\.')
|
||
|
endif
|
||
|
|
||
|
for type in types
|
||
|
if !has_key(s:emmet_settings, type)
|
||
|
continue
|
||
|
endif
|
||
|
let ret = a:default
|
||
|
|
||
|
if has_key(s:emmet_settings[type], 'extends')
|
||
|
let extends = emmet#lang#getExtends(a:type)
|
||
|
call reverse(extends) " reverse to overwrite the correct way
|
||
|
for ext in extends
|
||
|
if !has_key(s:emmet_settings, ext)
|
||
|
continue
|
||
|
endif
|
||
|
|
||
|
if has_key(s:emmet_settings[ext], a:name)
|
||
|
if type(ret) ==# 3 || type(ret) ==# 4
|
||
|
call emmet#mergeConfig(ret, s:emmet_settings[ext][a:name])
|
||
|
else
|
||
|
let ret = s:emmet_settings[ext][a:name]
|
||
|
endif
|
||
|
endif
|
||
|
endfor
|
||
|
endif
|
||
|
|
||
|
if has_key(s:emmet_settings[type], a:name)
|
||
|
if type(ret) ==# 3 || type(ret) ==# 4
|
||
|
call emmet#mergeConfig(ret, s:emmet_settings[type][a:name])
|
||
|
return extend(global, ret)
|
||
|
else
|
||
|
return s:emmet_settings[type][a:name]
|
||
|
endif
|
||
|
endif
|
||
|
if !empty(ret)
|
||
|
if type(ret) ==# 3 || type(ret) ==# 4
|
||
|
let ret = extend(global, ret)
|
||
|
endif
|
||
|
return ret
|
||
|
endif
|
||
|
endfor
|
||
|
|
||
|
let ret = a:default
|
||
|
if type(ret) ==# 3 || type(ret) ==# 4
|
||
|
let ret = extend(global, ret)
|
||
|
endif
|
||
|
return ret
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getFileType(...) abort
|
||
|
let flg = get(a:000, 0, 0)
|
||
|
|
||
|
if has_key(s:emmet_settings, &filetype)
|
||
|
let type = &filetype
|
||
|
if emmet#getResource(type, 'ignore_embeded_filetype', 0)
|
||
|
return type
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
let pos = emmet#util#getcurpos()
|
||
|
let type = synIDattr(synID(max([pos[1], 1]), max([pos[2], 1]), 1), 'name')
|
||
|
|
||
|
" ignore htmlTagName as it seems to occur too often
|
||
|
if type == 'htmlTagName'
|
||
|
let type = ''
|
||
|
endif
|
||
|
if type =~ '^mkdSnippet'
|
||
|
let type = tolower(type[10:])
|
||
|
endif
|
||
|
|
||
|
if type =~? '^css'
|
||
|
let type = 'css'
|
||
|
elseif type =~? '^html'
|
||
|
let type = 'html'
|
||
|
elseif type =~? '^jsx'
|
||
|
let type = 'jsx'
|
||
|
elseif (type =~? '^js\w' || type =~? '^javascript') && !(&filetype =~? 'jsx')
|
||
|
let type = 'javascript'
|
||
|
elseif type =~? '^tsx'
|
||
|
let type = 'tsx'
|
||
|
elseif type =~? '^ts\w' || type =~? '^typescript'
|
||
|
let type = 'typescript'
|
||
|
elseif type =~? '^xml'
|
||
|
let type = 'xml'
|
||
|
elseif type == 'styledEmmetAbbreviation'
|
||
|
let type = 'styled'
|
||
|
else
|
||
|
let types = split(&filetype, '\.')
|
||
|
for part in types
|
||
|
if has_key(s:emmet_settings, part)
|
||
|
let type = part
|
||
|
break
|
||
|
endif
|
||
|
let base = emmet#getBaseType(part)
|
||
|
if base !=# ''
|
||
|
if flg
|
||
|
let type = &filetype
|
||
|
else
|
||
|
let type = base
|
||
|
endif
|
||
|
unlet base
|
||
|
break
|
||
|
endif
|
||
|
endfor
|
||
|
endif
|
||
|
|
||
|
return len(type) == 0 ? 'html' : type
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getDollarExprs(expand) abort
|
||
|
let expand = a:expand
|
||
|
let dollar_list = []
|
||
|
let dollar_reg = '\%(\\\)\@<!\${\(\([^{}]\|\%(\\\)\@\<=[{}]\)\{}\)}'
|
||
|
while 1
|
||
|
let matcharr = matchlist(expand, dollar_reg)
|
||
|
if len(matcharr) > 0
|
||
|
let key = get(matcharr, 1)
|
||
|
if key !~# '^\d\+:'
|
||
|
let key = substitute(key, '\\{', '{', 'g')
|
||
|
let key = substitute(key, '\\}', '}', 'g')
|
||
|
let value = emmet#getDollarValueByKey(key)
|
||
|
if type(value) ==# type('')
|
||
|
let expr = get(matcharr, 0)
|
||
|
call add(dollar_list, {'expr': expr, 'value': value})
|
||
|
endif
|
||
|
endif
|
||
|
else
|
||
|
break
|
||
|
endif
|
||
|
let expand = substitute(expand, dollar_reg, '', '')
|
||
|
endwhile
|
||
|
return dollar_list
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getDollarValueByKey(key) abort
|
||
|
let ret = 0
|
||
|
let key = a:key
|
||
|
let ftsetting = get(s:emmet_settings, emmet#getFileType())
|
||
|
if type(ftsetting) ==# 4 && has_key(ftsetting, key)
|
||
|
let V = get(ftsetting, key)
|
||
|
if type(V) ==# 1 | return V | endif
|
||
|
endif
|
||
|
if type(ret) !=# 1 && has_key(s:emmet_settings.variables, key)
|
||
|
let V = get(s:emmet_settings.variables, key)
|
||
|
if type(V) ==# 1 | return V | endif
|
||
|
endif
|
||
|
if has_key(s:emmet_settings, 'custom_expands') && type(s:emmet_settings['custom_expands']) ==# 4
|
||
|
for k in keys(s:emmet_settings['custom_expands'])
|
||
|
if key =~# k
|
||
|
let V = get(s:emmet_settings['custom_expands'], k)
|
||
|
if type(V) ==# 1 | return V | endif
|
||
|
if type(V) ==# 2 | return V(key) | endif
|
||
|
endif
|
||
|
endfor
|
||
|
endif
|
||
|
return ret
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#reExpandDollarExpr(expand, times) abort
|
||
|
let expand = a:expand
|
||
|
let dollar_exprs = emmet#getDollarExprs(expand)
|
||
|
if len(dollar_exprs) > 0
|
||
|
if a:times < 9
|
||
|
for n in range(len(dollar_exprs))
|
||
|
let pair = get(dollar_exprs, n)
|
||
|
let pat = get(pair, 'expr')
|
||
|
let sub = get(pair, 'value')
|
||
|
let expand = substitute(expand, pat, sub, '')
|
||
|
endfor
|
||
|
return emmet#reExpandDollarExpr(expand, a:times + 1)
|
||
|
endif
|
||
|
endif
|
||
|
return expand
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#expandDollarExpr(expand) abort
|
||
|
return emmet#reExpandDollarExpr(a:expand, 0)
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#expandCursorExpr(expand, mode) abort
|
||
|
let expand = a:expand
|
||
|
if expand !~# '\${cursor}'
|
||
|
if a:mode ==# 2
|
||
|
let expand = '${cursor}' . expand
|
||
|
else
|
||
|
let expand .= '${cursor}'
|
||
|
endif
|
||
|
endif
|
||
|
let expand = substitute(expand, '\${\d\+:\?\([^}]\+\)}', '$select$$cursor$\1$select$', 'g')
|
||
|
let expand = substitute(expand, '\${\d\+}', '$select$$cursor$$select$', 'g')
|
||
|
let expand = substitute(expand, '\${cursor}', '$cursor$', '')
|
||
|
let expand = substitute(expand, '\${cursor}', '', 'g')
|
||
|
let expand = substitute(expand, '\${cursor}', '', 'g')
|
||
|
return expand
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#unescapeDollarExpr(expand) abort
|
||
|
return substitute(a:expand, '\\\$', '$', 'g')
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#expandAbbr(mode, abbr) range abort
|
||
|
let type = emmet#getFileType(1)
|
||
|
let indent = emmet#getIndentation(type)
|
||
|
let expand = ''
|
||
|
let line = ''
|
||
|
let part = ''
|
||
|
let rest = ''
|
||
|
|
||
|
let filters = emmet#getFilters(type)
|
||
|
if len(filters) ==# 0
|
||
|
let filters = ['html']
|
||
|
endif
|
||
|
|
||
|
if a:mode ==# 2
|
||
|
let leader = substitute(input('Tag: ', ''), '^\s*\(.*\)\s*$', '\1', 'g')
|
||
|
if len(leader) ==# 0
|
||
|
return ''
|
||
|
endif
|
||
|
if leader =~# s:filtermx
|
||
|
let filters = map(split(matchstr(leader, s:filtermx)[1:], '\s*[^\\]\zs,\s*'), 'substitute(v:val, "\\\\\\\\zs.\\\\ze", "&", "g")')
|
||
|
let leader = substitute(leader, s:filtermx, '', '')
|
||
|
endif
|
||
|
if leader =~# '\*'
|
||
|
let query = substitute(leader, '*', '*' . (a:lastline - a:firstline + 1), '')
|
||
|
if query !~# '}\s*$' && query !~# '\$#'
|
||
|
let query .= '>{$#}'
|
||
|
endif
|
||
|
if emmet#useFilter(filters, '/')
|
||
|
let spl = emmet#splitFilterArg(filters)
|
||
|
let fline = getline(a:firstline)
|
||
|
let query = substitute(query, '>\{0,1}{\$#}\s*$', '{\\$column\\$}*' . len(split(fline, spl)), '')
|
||
|
else
|
||
|
let spl = ''
|
||
|
endif
|
||
|
let items = emmet#parseIntoTree(query, type).child
|
||
|
let itemno = 0
|
||
|
for item in items
|
||
|
let inner = emmet#toString(item, type, 0, filters, 0, indent)
|
||
|
let inner = substitute(inner, '\$#', '$line'.(itemno*(a:lastline - a:firstline + 1)/len(items)+1).'$', 'g')
|
||
|
let expand .= inner
|
||
|
let itemno = itemno + 1
|
||
|
endfor
|
||
|
if emmet#useFilter(filters, 'e')
|
||
|
let expand = substitute(expand, '&', '\&', 'g')
|
||
|
let expand = substitute(expand, '<', '\<', 'g')
|
||
|
let expand = substitute(expand, '>', '\>', 'g')
|
||
|
endif
|
||
|
let line = getline(a:firstline)
|
||
|
let part = substitute(line, '^\s*', '', '')
|
||
|
for n in range(a:firstline, a:lastline)
|
||
|
let lline = getline(n)
|
||
|
let lpart = substitute(lline, '^\s\+', '', '')
|
||
|
if emmet#useFilter(filters, 't')
|
||
|
let lpart = substitute(lpart, '^[0-9.-]\+\s\+', '', '')
|
||
|
let lpart = substitute(lpart, '\s\+$', '', '')
|
||
|
endif
|
||
|
if emmet#useFilter(filters, '/')
|
||
|
for column in split(lpart, spl)
|
||
|
let expand = substitute(expand, '\$column\$', '\=column', '')
|
||
|
endfor
|
||
|
else
|
||
|
let expand = substitute(expand, '\$line'.(n-a:firstline+1).'\$', '\=lpart', 'g')
|
||
|
endif
|
||
|
endfor
|
||
|
let expand = substitute(expand, '\$line\d*\$', '', 'g')
|
||
|
let expand = substitute(expand, '\$column\$', '', 'g')
|
||
|
let content = join(getline(a:firstline, a:lastline), "\n")
|
||
|
if stridx(expand, '$#') < len(expand)-2
|
||
|
let expand = substitute(expand, '^\(.*\)\$#\s*$', '\1', '')
|
||
|
endif
|
||
|
let expand = substitute(expand, '\$#', '\=content', 'g')
|
||
|
else
|
||
|
let str = ''
|
||
|
if visualmode() ==# 'V'
|
||
|
let line = getline(a:firstline)
|
||
|
let lspaces = matchstr(line, '^\s*', '', '')
|
||
|
let part = substitute(line, '^\s*', '', '')
|
||
|
for n in range(a:firstline, a:lastline)
|
||
|
if len(leader) > 0
|
||
|
let line = getline(a:firstline)
|
||
|
let spaces = matchstr(line, '^\s*', '', '')
|
||
|
if len(spaces) >= len(lspaces)
|
||
|
let str .= indent . getline(n)[len(lspaces):] . "\n"
|
||
|
else
|
||
|
let str .= getline(n) . "\n"
|
||
|
endif
|
||
|
else
|
||
|
let lpart = substitute(getline(n), '^\s*', '', '')
|
||
|
let str .= lpart . "\n"
|
||
|
endif
|
||
|
endfor
|
||
|
if stridx(leader, '{$#}') ==# -1
|
||
|
let leader .= '{$#}'
|
||
|
endif
|
||
|
let items = emmet#parseIntoTree(leader, type).child
|
||
|
else
|
||
|
let save_regcont = @"
|
||
|
let save_regtype = getregtype('"')
|
||
|
silent! normal! gvygv
|
||
|
let str = @"
|
||
|
call setreg('"', save_regcont, save_regtype)
|
||
|
if stridx(leader, '{$#}') ==# -1
|
||
|
let leader .= '{$#}'
|
||
|
endif
|
||
|
let items = emmet#parseIntoTree(leader, type).child
|
||
|
endif
|
||
|
for item in items
|
||
|
let expand .= emmet#toString(item, type, 0, filters, 0, '')
|
||
|
endfor
|
||
|
if emmet#useFilter(filters, 'e')
|
||
|
let expand = substitute(expand, '&', '\&', 'g')
|
||
|
let expand = substitute(expand, '<', '\<', 'g')
|
||
|
let expand = substitute(expand, '>', '\>', 'g')
|
||
|
endif
|
||
|
if stridx(leader, '{$#}') !=# -1
|
||
|
let expand = substitute(expand, '\$#', '\="\n" . str', 'g')
|
||
|
endif
|
||
|
endif
|
||
|
elseif a:mode ==# 4
|
||
|
let line = getline('.')
|
||
|
let spaces = matchstr(line, '^\s*')
|
||
|
if line !~# '^\s*$'
|
||
|
put =spaces.a:abbr
|
||
|
else
|
||
|
call setline('.', spaces.a:abbr)
|
||
|
endif
|
||
|
normal! $
|
||
|
call emmet#expandAbbr(0, '')
|
||
|
return ''
|
||
|
else
|
||
|
let line = getline('.')
|
||
|
if col('.') < len(line)
|
||
|
let line = matchstr(line, '^\(.*\%'.col('.').'c\)')
|
||
|
endif
|
||
|
if a:mode ==# 1
|
||
|
let part = matchstr(line, '\([a-zA-Z0-9:_\-\@|]\+\)$')
|
||
|
else
|
||
|
let part = matchstr(line, '\(\S.*\)$')
|
||
|
let rtype = emmet#lang#type(type)
|
||
|
let part = emmet#lang#{rtype}#findTokens(part)
|
||
|
let line = line[0: strridx(line, part) + len(part) - 1]
|
||
|
endif
|
||
|
if col('.') ==# col('$')
|
||
|
let rest = ''
|
||
|
else
|
||
|
let rest = getline('.')[len(line):]
|
||
|
endif
|
||
|
let str = part
|
||
|
if str =~# s:filtermx
|
||
|
let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*')
|
||
|
let str = substitute(str, s:filtermx, '', '')
|
||
|
endif
|
||
|
let items = emmet#parseIntoTree(str, type).child
|
||
|
for item in items
|
||
|
let expand .= emmet#toString(item, type, 0, filters, 0, indent)
|
||
|
endfor
|
||
|
if emmet#useFilter(filters, 'e')
|
||
|
let expand = substitute(expand, '&', '\&', 'g')
|
||
|
let expand = substitute(expand, '<', '\<', 'g')
|
||
|
let expand = substitute(expand, '>', '\>', 'g')
|
||
|
endif
|
||
|
let expand = substitute(expand, '\$line\([0-9]\+\)\$', '\=submatch(1)', 'g')
|
||
|
endif
|
||
|
let expand = emmet#expandDollarExpr(expand)
|
||
|
let expand = emmet#expandCursorExpr(expand, a:mode)
|
||
|
if len(expand)
|
||
|
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')
|
||
|
else
|
||
|
" TODO: on windows, %z/%Z is 'Tokyo(Standard)'
|
||
|
let expand = substitute(expand, '${datetime}', strftime('%Y-%m-%dT%H:%M:%S %z'), 'g')
|
||
|
endif
|
||
|
let expand = emmet#unescapeDollarExpr(expand)
|
||
|
if a:mode ==# 2 && visualmode() ==# 'v'
|
||
|
if a:firstline ==# a:lastline
|
||
|
let expand = substitute(expand, '[\r\n]\s*', '', 'g')
|
||
|
else
|
||
|
let expand = substitute(expand, '[\n]$', '', 'g')
|
||
|
endif
|
||
|
silent! normal! gv
|
||
|
let col = col('''<')
|
||
|
silent! normal! c
|
||
|
let line = getline('.')
|
||
|
let lhs = matchstr(line, '.*\%<'.col.'c.')
|
||
|
let rhs = matchstr(line, '\%>'.(col-1).'c.*')
|
||
|
let expand = lhs.expand.rhs
|
||
|
let lines = split(expand, '\n')
|
||
|
call setline(line('.'), lines[0])
|
||
|
if len(lines) > 1
|
||
|
call append(line('.'), lines[1:])
|
||
|
endif
|
||
|
else
|
||
|
if line[:-len(part)-1] =~# '^\s\+$'
|
||
|
let indent = line[:-len(part)-1]
|
||
|
else
|
||
|
let indent = ''
|
||
|
endif
|
||
|
let expand = substitute(expand, '[\r\n]\s*$', '', 'g')
|
||
|
if emmet#useFilter(filters, 's')
|
||
|
let epart = substitute(expand, '[\r\n]\s*', '', 'g')
|
||
|
else
|
||
|
let epart = substitute(expand, '[\r\n]', "\n" . indent, 'g')
|
||
|
endif
|
||
|
let expand = line[:-len(part)-1] . epart . rest
|
||
|
let lines = split(expand, '[\r\n]', 1)
|
||
|
if a:mode ==# 2
|
||
|
silent! exe 'normal! gvc'
|
||
|
endif
|
||
|
call setline('.', lines[0])
|
||
|
if len(lines) > 1
|
||
|
call append('.', lines[1:])
|
||
|
endif
|
||
|
endif
|
||
|
endif
|
||
|
if g:emmet_debug > 1
|
||
|
call getchar()
|
||
|
endif
|
||
|
if search('\ze\$\(cursor\|select\)\$', 'c')
|
||
|
let oldselection = &selection
|
||
|
let &selection = 'inclusive'
|
||
|
if foldclosed(line('.')) !=# -1
|
||
|
silent! foldopen
|
||
|
endif
|
||
|
let pos = emmet#util#getcurpos()
|
||
|
let use_selection = emmet#getResource(type, 'use_selection', 0)
|
||
|
try
|
||
|
let l:gdefault = &gdefault
|
||
|
let &gdefault = 0
|
||
|
if use_selection && getline('.')[col('.')-1:] =~# '^\$select'
|
||
|
let pos[2] += 1
|
||
|
silent! s/\$select\$//
|
||
|
let next = searchpos('.\ze\$select\$', 'nW')
|
||
|
silent! %s/\$\(cursor\|select\)\$//g
|
||
|
call emmet#util#selectRegion([pos[1:2], next])
|
||
|
return "\<esc>gv"
|
||
|
else
|
||
|
silent! %s/\$\(cursor\|select\)\$//g
|
||
|
silent! call setpos('.', pos)
|
||
|
if col('.') < col('$')
|
||
|
return "\<right>"
|
||
|
endif
|
||
|
endif
|
||
|
finally
|
||
|
let &gdefault = l:gdefault
|
||
|
endtry
|
||
|
let &selection = oldselection
|
||
|
endif
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#updateTag() abort
|
||
|
let type = emmet#getFileType()
|
||
|
let region = emmet#util#searchRegion('<\S', '>')
|
||
|
if !emmet#util#regionIsValid(region) || !emmet#util#cursorInRegion(region)
|
||
|
return ''
|
||
|
endif
|
||
|
let content = emmet#util#getContent(region)
|
||
|
let content = matchstr(content, '^<[^><]\+>')
|
||
|
if content !~# '^<[^><]\+>$'
|
||
|
return ''
|
||
|
endif
|
||
|
let current = emmet#lang#html#parseTag(content)
|
||
|
if empty(current)
|
||
|
return ''
|
||
|
endif
|
||
|
|
||
|
let str = substitute(input('Enter Abbreviation: ', ''), '^\s*\(.*\)\s*$', '\1', 'g')
|
||
|
let item = emmet#parseIntoTree(str, type).child[0]
|
||
|
for k in keys(item.attr)
|
||
|
let current.attr[k] = item.attr[k]
|
||
|
endfor
|
||
|
let html = substitute(emmet#toString(current, 'html', 1), '\n', '', '')
|
||
|
let html = substitute(html, '\${cursor}', '', '')
|
||
|
let html = matchstr(html, '^<[^><]\+>')
|
||
|
call emmet#util#setContent(region, html)
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#moveNextPrevItem(flag) abort
|
||
|
let type = emmet#getFileType()
|
||
|
return emmet#lang#{emmet#lang#type(type)}#moveNextPrevItem(a:flag)
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#moveNextPrev(flag) abort
|
||
|
let type = emmet#getFileType()
|
||
|
return emmet#lang#{emmet#lang#type(type)}#moveNextPrev(a:flag)
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#imageSize() abort
|
||
|
let orgpos = emmet#util#getcurpos()
|
||
|
let type = emmet#getFileType()
|
||
|
call emmet#lang#{emmet#lang#type(type)}#imageSize()
|
||
|
silent! call setpos('.', orgpos)
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#imageEncode() abort
|
||
|
let type = emmet#getFileType()
|
||
|
return emmet#lang#{emmet#lang#type(type)}#imageEncode()
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#toggleComment() abort
|
||
|
let type = emmet#getFileType()
|
||
|
call emmet#lang#{emmet#lang#type(type)}#toggleComment()
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#balanceTag(flag) range abort
|
||
|
let type = emmet#getFileType()
|
||
|
return emmet#lang#{emmet#lang#type(type)}#balanceTag(a:flag)
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#splitJoinTag() abort
|
||
|
let type = emmet#getFileType()
|
||
|
return emmet#lang#{emmet#lang#type(type)}#splitJoinTag()
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#mergeLines() range abort
|
||
|
let lines = join(map(getline(a:firstline, a:lastline), 'matchstr(v:val, "^\\s*\\zs.*\\ze\\s*$")'), '')
|
||
|
let indent = substitute(getline('.'), '^\(\s*\).*', '\1', '')
|
||
|
silent! exe 'normal! gvc'
|
||
|
call setline('.', indent . lines)
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#removeTag() abort
|
||
|
let type = emmet#getFileType()
|
||
|
call emmet#lang#{emmet#lang#type(type)}#removeTag()
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#mergeLines() abort
|
||
|
let type = emmet#getFileType()
|
||
|
call emmet#lang#{emmet#lang#type(type)}#mergeLines()
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#anchorizeURL(flag) abort
|
||
|
let mx = 'https\=:\/\/[-!#$%&*+,./:;=?@0-9a-zA-Z_~]\+'
|
||
|
let pos1 = searchpos(mx, 'bcnW')
|
||
|
let url = matchstr(getline(pos1[0])[pos1[1]-1:], mx)
|
||
|
let block = [pos1, [pos1[0], pos1[1] + len(url) - 1]]
|
||
|
if !emmet#util#cursorInRegion(block)
|
||
|
return ''
|
||
|
endif
|
||
|
|
||
|
let mx = '.*<title[^>]*>\s*\zs\([^<]\+\)\ze\s*<\/title[^>]*>.*'
|
||
|
let content = emmet#util#getContentFromURL(url)
|
||
|
let content = substitute(content, '\r', '', 'g')
|
||
|
let content = substitute(content, '[ \n]\+', ' ', 'g')
|
||
|
let content = substitute(content, '<!--.\{-}-->', '', 'g')
|
||
|
let title = matchstr(content, mx)
|
||
|
|
||
|
let type = emmet#getFileType()
|
||
|
let rtype = emmet#lang#type(type)
|
||
|
if &filetype ==# 'markdown'
|
||
|
let expand = printf('[%s](%s)', substitute(title, '[\[\]]', '\\&', 'g'), url)
|
||
|
elseif &filetype ==# 'rst'
|
||
|
let expand = printf('`%s <%s>`_', substitute(title, '[\[\]]', '\\&', 'g'), url)
|
||
|
elseif a:flag ==# 0
|
||
|
let a = emmet#lang#html#parseTag('<a>')
|
||
|
let a.attr.href = url
|
||
|
let a.value = '{' . title . '}'
|
||
|
let expand = emmet#toString(a, rtype, 0, [])
|
||
|
let expand = substitute(expand, '\${cursor}', '', 'g')
|
||
|
else
|
||
|
let body = emmet#util#getTextFromHTML(content)
|
||
|
let body = '{' . substitute(body, '^\(.\{0,100}\).*', '\1', '') . '...}'
|
||
|
|
||
|
let blockquote = emmet#lang#html#parseTag('<blockquote class="quote">')
|
||
|
let a = emmet#lang#html#parseTag('<a>')
|
||
|
let a.attr.href = url
|
||
|
let a.value = '{' . title . '}'
|
||
|
call add(blockquote.child, a)
|
||
|
call add(blockquote.child, emmet#lang#html#parseTag('<br/>'))
|
||
|
let p = emmet#lang#html#parseTag('<p>')
|
||
|
let p.value = body
|
||
|
call add(blockquote.child, p)
|
||
|
let cite = emmet#lang#html#parseTag('<cite>')
|
||
|
let cite.value = '{' . url . '}'
|
||
|
call add(blockquote.child, cite)
|
||
|
let expand = emmet#toString(blockquote, rtype, 0, [])
|
||
|
let expand = substitute(expand, '\${cursor}', '', 'g')
|
||
|
endif
|
||
|
let indent = substitute(getline('.'), '^\(\s*\).*', '\1', '')
|
||
|
let expand = substitute(expand, "\n", "\n" . indent, 'g')
|
||
|
call emmet#util#setContent(block, expand)
|
||
|
return ''
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#codePretty() range abort
|
||
|
let type = input('FileType: ', &filetype, 'filetype')
|
||
|
if len(type) ==# 0
|
||
|
return
|
||
|
endif
|
||
|
let block = emmet#util#getVisualBlock()
|
||
|
let content = emmet#util#getContent(block)
|
||
|
silent! 1new
|
||
|
let &l:filetype = type
|
||
|
call setline(1, split(content, "\n"))
|
||
|
let old_lazyredraw = &lazyredraw
|
||
|
set lazyredraw
|
||
|
silent! TOhtml
|
||
|
let &lazyredraw = old_lazyredraw
|
||
|
let content = join(getline(1, '$'), "\n")
|
||
|
silent! bw!
|
||
|
silent! bw!
|
||
|
let content = matchstr(content, '<body[^>]*>[\s\n]*\zs.*\ze</body>')
|
||
|
call emmet#util#setContent(block, content)
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#expandWord(abbr, type, orig) abort
|
||
|
let str = a:abbr
|
||
|
let type = a:type
|
||
|
let indent = emmet#getIndentation(type)
|
||
|
|
||
|
if len(type) ==# 0 | let type = 'html' | endif
|
||
|
if str =~# s:filtermx
|
||
|
let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*')
|
||
|
let str = substitute(str, s:filtermx, '', '')
|
||
|
else
|
||
|
let filters = emmet#getFilters(a:type)
|
||
|
if len(filters) ==# 0
|
||
|
let filters = ['html']
|
||
|
endif
|
||
|
endif
|
||
|
let str = substitute(str, '|', '${cursor}', 'g')
|
||
|
let items = emmet#parseIntoTree(str, a:type).child
|
||
|
let expand = ''
|
||
|
for item in items
|
||
|
let expand .= emmet#toString(item, a:type, 0, filters, 0, indent)
|
||
|
endfor
|
||
|
if emmet#useFilter(filters, 'e')
|
||
|
let expand = substitute(expand, '&', '\&', 'g')
|
||
|
let expand = substitute(expand, '<', '\<', 'g')
|
||
|
let expand = substitute(expand, '>', '\>', 'g')
|
||
|
endif
|
||
|
if emmet#useFilter(filters, 's')
|
||
|
let expand = substitute(expand, "\n\s\*", '', 'g')
|
||
|
endif
|
||
|
if a:orig ==# 0
|
||
|
let expand = emmet#expandDollarExpr(expand)
|
||
|
let expand = substitute(expand, '\${cursor}', '', 'g')
|
||
|
endif
|
||
|
return expand
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#getSnippets(type) abort
|
||
|
let type = a:type
|
||
|
if len(type) ==# 0 || !has_key(s:emmet_settings, type)
|
||
|
let type = 'html'
|
||
|
endif
|
||
|
return emmet#getResource(type, 'snippets', {})
|
||
|
endfunction
|
||
|
|
||
|
function! emmet#completeTag(findstart, base) abort
|
||
|
if a:findstart
|
||
|
let line = getline('.')
|
||
|
let start = col('.') - 1
|
||
|
while start > 0 && line[start - 1] =~# '[a-zA-Z0-9:_\@\-]'
|
||
|
let start -= 1
|
||
|
endwhile
|
||
|
return start
|
||
|
else
|
||
|
let type = emmet#getFileType()
|
||
|
let res = []
|
||
|
|
||
|
let snippets = emmet#getResource(type, 'snippets', {})
|
||
|
for item in keys(snippets)
|
||
|
if stridx(item, a:base) !=# -1
|
||
|
call add(res, substitute(item, '\${cursor}\||', '', 'g'))
|
||
|
endif
|
||
|
endfor
|
||
|
let aliases = emmet#getResource(type, 'aliases', {})
|
||
|
for item in values(aliases)
|
||
|
if stridx(item, a:base) !=# -1
|
||
|
call add(res, substitute(item, '\${cursor}\||', '', 'g'))
|
||
|
endif
|
||
|
endfor
|
||
|
return res
|
||
|
endif
|
||
|
endfunction
|
||
|
|
||
|
unlet! s:emmet_settings
|
||
|
let s:emmet_settings = {
|
||
|
\ 'variables': {
|
||
|
\ 'lang': "en",
|
||
|
\ 'locale': "en-US",
|
||
|
\ 'charset': "UTF-8",
|
||
|
\ 'newline': "\n",
|
||
|
\ 'use_selection': 0,
|
||
|
\ },
|
||
|
\ 'custom_expands' : {
|
||
|
\ '^\%(lorem\|lipsum\)\(\d*\)$' : function('emmet#lorem#en#expand'),
|
||
|
\ },
|
||
|
\ 'css': {
|
||
|
\ 'snippets': {
|
||
|
\ "@i": "@import url(|);",
|
||
|
\ "@import": "@import url(|);",
|
||
|
\ "@m": "@media ${1:screen} {\n\t|\n}",
|
||
|
\ "@media": "@media ${1:screen} {\n\t|\n}",
|
||
|
\ "@f": "@font-face {\n\tfont-family:|;\n\tsrc:url(|);\n}",
|
||
|
\ "@f+": "@font-face {\n\tfont-family: '${1:FontName}';\n\tsrc: url('${2:FileName}.eot');\n\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\n\t\t url('${2:FileName}.woff') format('woff'),\n\t\t url('${2:FileName}.ttf') format('truetype'),\n\t\t url('${2:FileName}.svg#${1:FontName}') format('svg');\n\tfont-style: ${3:normal};\n\tfont-weight: ${4:normal};\n}",
|
||
|
\ "@kf": "@-webkit-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-o-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-moz-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}",
|
||
|
\ "anim": "animation:|;",
|
||
|
\ "anim-": "animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode};",
|
||
|
\ "animdel": "animation-delay:${1:time};",
|
||
|
\ "animdir": "animation-direction:${1:normal};",
|
||
|
\ "animdir:n": "animation-direction:normal;",
|
||
|
\ "animdir:r": "animation-direction:reverse;",
|
||
|
\ "animdir:a": "animation-direction:alternate;",
|
||
|
\ "animdir:ar": "animation-direction:alternate-reverse;",
|
||
|
\ "animdur": "animation-duration:${1:0}s;",
|
||
|
\ "animfm": "animation-fill-mode:${1:both};",
|
||
|
\ "animfm:f": "animation-fill-mode:forwards;",
|
||
|
\ "animfm:b": "animation-fill-mode:backwards;",
|
||
|
\ "animfm:bt": "animation-fill-mode:both;",
|
||
|
\ "animfm:bh": "animation-fill-mode:both;",
|
||
|
\ "animic": "animation-iteration-count:${1:1};",
|
||
|
\ "animic:i": "animation-iteration-count:infinite;",
|
||
|
\ "animn": "animation-name:${1:none};",
|
||
|
\ "animps": "animation-play-state:${1:running};",
|
||
|
\ "animps:p": "animation-play-state:paused;",
|
||
|
\ "animps:r": "animation-play-state:running;",
|
||
|
\ "animtf": "animation-timing-function:${1:linear};",
|
||
|
\ "animtf:e": "animation-timing-function:ease;",
|
||
|
\ "animtf:ei": "animation-timing-function:ease-in;",
|
||
|
\ "animtf:eo": "animation-timing-function:ease-out;",
|
||
|
\ "animtf:eio": "animation-timing-function:ease-in-out;",
|
||
|
\ "animtf:l": "animation-timing-function:linear;",
|
||
|
\ "animtf:cb": "animation-timing-function:cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1});",
|
||
|
\ "ap": "appearance:${none};",
|
||
|
\ "!": "!important",
|
||
|
\ "pos": "position:${1:relative};",
|
||
|
\ "pos:s": "position:static;",
|
||
|
\ "pos:a": "position:absolute;",
|
||
|
\ "pos:r": "position:relative;",
|
||
|
\ "pos:f": "position:fixed;",
|
||
|
\ "t": "top:|;",
|
||
|
\ "t:a": "top:auto;",
|
||
|
\ "r": "right:|;",
|
||
|
\ "r:a": "right:auto;",
|
||
|
\ "b": "bottom:|;",
|
||
|
\ "b:a": "bottom:auto;",
|
||
|
\ "l": "left:|;",
|
||
|
\ "l:a": "left:auto;",
|
||
|
\ "z": "z-index:|;",
|
||
|
\ "z:a": "z-index:auto;",
|
||
|
\ "fl": "float:${1:left};",
|
||
|
\ "fl:n": "float:none;",
|
||
|
\ "fl:l": "float:left;",
|
||
|
\ "fl:r": "float:right;",
|
||
|
\ "cl": "clear:${1:both};",
|
||
|
\ "cl:n": "clear:none;",
|
||
|
\ "cl:l": "clear:left;",
|
||
|
\ "cl:r": "clear:right;",
|
||
|
\ "cl:b": "clear:both;",
|
||
|
\ "colm": "columns:|;",
|
||
|
\ "colmc": "column-count:|;",
|
||
|
\ "colmf": "column-fill:|;",
|
||
|
\ "colmg": "column-gap:|;",
|
||
|
\ "colmr": "column-rule:|;",
|
||
|
\ "colmrc": "column-rule-color:|;",
|
||
|
\ "colmrs": "column-rule-style:|;",
|
||
|
\ "colmrw": "column-rule-width:|;",
|
||
|
\ "colms": "column-span:|;",
|
||
|
\ "colmw": "column-width:|;",
|
||
|
\ "d": "display:${1:block};",
|
||
|
\ "d:n": "display:none;",
|
||
|
\ "d:b": "display:block;",
|
||
|
\ "d:f": "display:flex;",
|
||
|
\ "d:if": "display:inline-flex;",
|
||
|
\ "d:i": "display:inline;",
|
||
|
\ "d:ib": "display:inline-block;",
|
||
|
\ "d:ib+": "display: inline-block;\n*display: inline;\n*zoom: 1;",
|
||
|
\ "d:li": "display:list-item;",
|
||
|
\ "d:ri": "display:run-in;",
|
||
|
\ "d:cp": "display:compact;",
|
||
|
\ "d:tb": "display:table;",
|
||
|
\ "d:itb": "display:inline-table;",
|
||
|
\ "d:tbcp": "display:table-caption;",
|
||
|
\ "d:tbcl": "display:table-column;",
|
||
|
\ "d:tbclg": "display:table-column-group;",
|
||
|
\ "d:tbhg": "display:table-header-group;",
|
||
|
\ "d:tbfg": "display:table-footer-group;",
|
||
|
\ "d:tbr": "display:table-row;",
|
||
|
\ "d:tbrg": "display:table-row-group;",
|
||
|
\ "d:tbc": "display:table-cell;",
|
||
|
\ "d:rb": "display:ruby;",
|
||
|
\ "d:rbb": "display:ruby-base;",
|
||
|
\ "d:rbbg": "display:ruby-base-group;",
|
||
|
\ "d:rbt": "display:ruby-text;",
|
||
|
\ "d:rbtg": "display:ruby-text-group;",
|
||
|
\ "v": "visibility:${1:hidden};",
|
||
|
\ "v:v": "visibility:visible;",
|
||
|
\ "v:h": "visibility:hidden;",
|
||
|
\ "v:c": "visibility:collapse;",
|
||
|
\ "ov": "overflow:${1:hidden};",
|
||
|
\ "ov:v": "overflow:visible;",
|
||
|
\ "ov:h": "overflow:hidden;",
|
||
|
\ "ov:s": "overflow:scroll;",
|
||
|
\ "ov:a": "overflow:auto;",
|
||
|
\ "ovx": "overflow-x:${1:hidden};",
|
||
|
\ "ovx:v": "overflow-x:visible;",
|
||
|
\ "ovx:h": "overflow-x:hidden;",
|
||
|
\ "ovx:s": "overflow-x:scroll;",
|
||
|
\ "ovx:a": "overflow-x:auto;",
|
||
|
\ "ovy": "overflow-y:${1:hidden};",
|
||
|
\ "ovy:v": "overflow-y:visible;",
|
||
|
\ "ovy:h": "overflow-y:hidden;",
|
||
|
\ "ovy:s": "overflow-y:scroll;",
|
||
|
\ "ovy:a": "overflow-y:auto;",
|
||
|
\ "ovs": "overflow-style:${1:scrollbar};",
|
||
|
\ "ovs:a": "overflow-style:auto;",
|
||
|
\ "ovs:s": "overflow-style:scrollbar;",
|
||
|
\ "ovs:p": "overflow-style:panner;",
|
||
|
\ "ovs:m": "overflow-style:move;",
|
||
|
\ "ovs:mq": "overflow-style:marquee;",
|
||
|
\ "zoo": "zoom:1;",
|
||
|
\ "zm": "zoom:1;",
|
||
|
\ "cp": "clip:|;",
|
||
|
\ "cp:a": "clip:auto;",
|
||
|
\ "cp:r": "clip:rect(${1:top} ${2:right} ${3:bottom} ${4:left});",
|
||
|
\ "bxz": "box-sizing:${1:border-box};",
|
||
|
\ "bxz:cb": "box-sizing:content-box;",
|
||
|
\ "bxz:bb": "box-sizing:border-box;",
|
||
|
\ "bxsh": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:color};",
|
||
|
\ "bxsh:r": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:spread }rgb(${6:0}, ${7:0}, ${8:0});",
|
||
|
\ "bxsh:ra": "box-shadow:${1:inset }${2:h} ${3:v} ${4:blur} ${5:spread }rgba(${6:0}, ${7:0}, ${8:0}, .${9:5});",
|
||
|
\ "bxsh:n": "box-shadow:none;",
|
||
|
\ "m": "margin:|;",
|
||
|
\ "m:a": "margin:auto;",
|
||
|
\ "mt": "margin-top:|;",
|
||
|
\ "mt:a": "margin-top:auto;",
|
||
|
\ "mr": "margin-right:|;",
|
||
|
\ "mr:a": "margin-right:auto;",
|
||
|
\ "mb": "margin-bottom:|;",
|
||
|
\ "mb:a": "margin-bottom:auto;",
|
||
|
\ "ml": "margin-left:|;",
|
||
|
\ "ml:a": "margin-left:auto;",
|
||
|
\ "p": "padding:|;",
|
||
|
\ "pt": "padding-top:|;",
|
||
|
\ "pr": "padding-right:|;",
|
||
|
\ "pb": "padding-bottom:|;",
|
||
|
\ "pl": "padding-left:|;",
|
||
|
\ "w": "width:|;",
|
||
|
\ "w:a": "width:auto;",
|
||
|
\ "h": "height:|;",
|
||
|
\ "h:a": "height:auto;",
|
||
|
\ "maw": "max-width:|;",
|
||
|
\ "maw:n": "max-width:none;",
|
||
|
\ "mah": "max-height:|;",
|
||
|
\ "mah:n": "max-height:none;",
|
||
|
\ "miw": "min-width:|;",
|
||
|
\ "mih": "min-height:|;",
|
||
|
\ "mar": "max-resolution:${1:res};",
|
||
|
\ "mir": "min-resolution:${1:res};",
|
||
|
\ "ori": "orientation:|;",
|
||
|
\ "ori:l": "orientation:landscape;",
|
||
|
\ "ori:p": "orientation:portrait;",
|
||
|
\ "ol": "outline:|;",
|
||
|
\ "ol:n": "outline:none;",
|
||
|
\ "olo": "outline-offset:|;",
|
||
|
\ "olw": "outline-width:|;",
|
||
|
\ "olw:tn": "outline-width:thin;",
|
||
|
\ "olw:m": "outline-width:medium;",
|
||
|
\ "olw:tc": "outline-width:thick;",
|
||
|
\ "ols": "outline-style:|;",
|
||
|
\ "ols:n": "outline-style:none;",
|
||
|
\ "ols:dt": "outline-style:dotted;",
|
||
|
\ "ols:ds": "outline-style:dashed;",
|
||
|
\ "ols:s": "outline-style:solid;",
|
||
|
\ "ols:db": "outline-style:double;",
|
||
|
\ "ols:g": "outline-style:groove;",
|
||
|
\ "ols:r": "outline-style:ridge;",
|
||
|
\ "ols:i": "outline-style:inset;",
|
||
|
\ "ols:o": "outline-style:outset;",
|
||
|
\ "olc": "outline-color:#${1:000};",
|
||
|
\ "olc:i": "outline-color:invert;",
|
||
|
\ "bfv": "backface-visibility:|;",
|
||
|
\ "bfv:h": "backface-visibility:hidden;",
|
||
|
\ "bfv:v": "backface-visibility:visible;",
|
||
|
\ "bd": "border:|;",
|
||
|
\ "bd+": "border:${1:1px} ${2:solid} ${3:#000};",
|
||
|
\ "bd:n": "border:none;",
|
||
|
\ "bdbk": "border-break:${1:close};",
|
||
|
\ "bdbk:c": "border-break:close;",
|
||
|
\ "bdcl": "border-collapse:|;",
|
||
|
\ "bdcl:c": "border-collapse:collapse;",
|
||
|
\ "bdcl:s": "border-collapse:separate;",
|
||
|
\ "bdc": "border-color:#${1:000};",
|
||
|
\ "bdc:t": "border-color:transparent;",
|
||
|
\ "bdi": "border-image:url(|);",
|
||
|
\ "bdi:n": "border-image:none;",
|
||
|
\ "bdti": "border-top-image:url(|);",
|
||
|
\ "bdti:n": "border-top-image:none;",
|
||
|
\ "bdri": "border-right-image:url(|);",
|
||
|
\ "bdri:n": "border-right-image:none;",
|
||
|
\ "bdbi": "border-bottom-image:url(|);",
|
||
|
\ "bdbi:n": "border-bottom-image:none;",
|
||
|
\ "bdli": "border-left-image:url(|);",
|
||
|
\ "bdli:n": "border-left-image:none;",
|
||
|
\ "bdci": "border-corner-image:url(|);",
|
||
|
\ "bdci:n": "border-corner-image:none;",
|
||
|
\ "bdci:c": "border-corner-image:continue;",
|
||
|
\ "bdtli": "border-top-left-image:url(|);",
|
||
|
\ "bdtli:n": "border-top-left-image:none;",
|
||
|
\ "bdtli:c": "border-top-left-image:continue;",
|
||
|
\ "bdtri": "border-top-right-image:url(|);",
|
||
|
\ "bdtri:n": "border-top-right-image:none;",
|
||
|
\ "bdtri:c": "border-top-right-image:continue;",
|
||
|
\ "bdbri": "border-bottom-right-image:url(|);",
|
||
|
\ "bdbri:n": "border-bottom-right-image:none;",
|
||
|
\ "bdbri:c": "border-bottom-right-image:continue;",
|
||
|
\ "bdbli": "border-bottom-left-image:url(|);",
|
||
|
\ "bdbli:n": "border-bottom-left-image:none;",
|
||
|
\ "bdbli:c": "border-bottom-left-image:continue;",
|
||
|
\ "bdf": "border-fit:${1:repeat};",
|
||
|
\ "bdf:c": "border-fit:clip;",
|
||
|
\ "bdf:r": "border-fit:repeat;",
|
||
|
\ "bdf:sc": "border-fit:scale;",
|
||
|
\ "bdf:st": "border-fit:stretch;",
|
||
|
\ "bdf:ow": "border-fit:overwrite;",
|
||
|
\ "bdf:of": "border-fit:overflow;",
|
||
|
\ "bdf:sp": "border-fit:space;",
|
||
|
\ "bdlen": "border-length:|;",
|
||
|
\ "bdlen:a": "border-length:auto;",
|
||
|
\ "bdsp": "border-spacing:|;",
|
||
|
\ "bds": "border-style:|;",
|
||
|
\ "bds:n": "border-style:none;",
|
||
|
\ "bds:h": "border-style:hidden;",
|
||
|
\ "bds:dt": "border-style:dotted;",
|
||
|
\ "bds:ds": "border-style:dashed;",
|
||
|
\ "bds:s": "border-style:solid;",
|
||
|
\ "bds:db": "border-style:double;",
|
||
|
\ "bds:dtds": "border-style:dot-dash;",
|
||
|
\ "bds:dtdtds": "border-style:dot-dot-dash;",
|
||
|
\ "bds:w": "border-style:wave;",
|
||
|
\ "bds:g": "border-style:groove;",
|
||
|
\ "bds:r": "border-style:ridge;",
|
||
|
\ "bds:i": "border-style:inset;",
|
||
|
\ "bds:o": "border-style:outset;",
|
||
|
\ "bdw": "border-width:|;",
|
||
|
\ "bdtw": "border-top-width:|;",
|
||
|
\ "bdrw": "border-right-width:|;",
|
||
|
\ "bdbw": "border-bottom-width:|;",
|
||
|
\ "bdlw": "border-left-width:|;",
|
||
|
\ "bdt": "border-top:|;",
|
||
|
\ "bt": "border-top:|;",
|
||
|
\ "bdt+": "border-top:${1:1px} ${2:solid} ${3:#000};",
|
||
|
\ "bdt:n": "border-top:none;",
|
||
|
\ "bdts": "border-top-style:|;",
|
||
|
\ "bdts:n": "border-top-style:none;",
|
||
|
\ "bdtc": "border-top-color:#${1:000};",
|
||
|
\ "bdtc:t": "border-top-color:transparent;",
|
||
|
\ "bdr": "border-right:|;",
|
||
|
\ "br": "border-right:|;",
|
||
|
\ "bdr+": "border-right:${1:1px} ${2:solid} ${3:#000};",
|
||
|
\ "bdr:n": "border-right:none;",
|
||
|
\ "bdrst": "border-right-style:|;",
|
||
|
\ "bdrst:n": "border-right-style:none;",
|
||
|
\ "bdrc": "border-right-color:#${1:000};",
|
||
|
\ "bdrc:t": "border-right-color:transparent;",
|
||
|
\ "bdb": "border-bottom:|;",
|
||
|
\ "bb": "border-bottom:|;",
|
||
|
\ "bdb+": "border-bottom:${1:1px} ${2:solid} ${3:#000};",
|
||
|
\ "bdb:n": "border-bottom:none;",
|
||
|
\ "bdbs": "border-bottom-style:|;",
|
||
|
\ "bdbs:n": "border-bottom-style:none;",
|
||
|
\ "bdbc": "border-bottom-color:#${1:000};",
|
||
|
\ "bdbc:t": "border-bottom-color:transparent;",
|
||
|
\ "bdl": "border-left:|;",
|
||
|
\ "bl": "border-left:|;",
|
||
|
\ "bdl+": "border-left:${1:1px} ${2:solid} ${3:#000};",
|
||
|
\ "bdl:n": "border-left:none;",
|
||
|
\ "bdls": "border-left-style:|;",
|
||
|
\ "bdls:n": "border-left-style:none;",
|
||
|
\ "bdlc": "border-left-color:#${1:000};",
|
||
|
\ "bdlc:t": "border-left-color:transparent;",
|
||
|
\ "bdrs": "border-radius:|;",
|
||
|
\ "bdtrrs": "border-top-right-radius:|;",
|
||
|
\ "bdtlrs": "border-top-left-radius:|;",
|
||
|
\ "bdbrrs": "border-bottom-right-radius:|;",
|
||
|
\ "bdblrs": "border-bottom-left-radius:|;",
|
||
|
\ "bg": "background:#${1:000};",
|
||
|
\ "bg+": "background:${1:#fff} url(${2}) ${3:0} ${4:0} ${5:no-repeat};",
|
||
|
\ "bg:n": "background:none;",
|
||
|
\ "bg:ie": "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1:x}.png',sizingMethod='${2:crop}');",
|
||
|
\ "bgc": "background-color:#${1:fff};",
|
||
|
\ "bgc:t": "background-color:transparent;",
|
||
|
\ "bgi": "background-image:url(|);",
|
||
|
\ "bgi:n": "background-image:none;",
|
||
|
\ "bgr": "background-repeat:|;",
|
||
|
\ "bgr:n": "background-repeat:no-repeat;",
|
||
|
\ "bgr:x": "background-repeat:repeat-x;",
|
||
|
\ "bgr:y": "background-repeat:repeat-y;",
|
||
|
\ "bgr:sp": "background-repeat:space;",
|
||
|
\ "bgr:rd": "background-repeat:round;",
|
||
|
\ "bga": "background-attachment:|;",
|
||
|
\ "bga:f": "background-attachment:fixed;",
|
||
|
\ "bga:s": "background-attachment:scroll;",
|
||
|
\ "bgp": "background-position:${1:0} ${2:0};",
|
||
|
\ "bgpx": "background-position-x:|;",
|
||
|
\ "bgpy": "background-position-y:|;",
|
||
|
\ "bgbk": "background-break:|;",
|
||
|
\ "bgbk:bb": "background-break:bounding-box;",
|
||
|
\ "bgbk:eb": "background-break:each-box;",
|
||
|
\ "bgbk:c": "background-break:continuous;",
|
||
|
\ "bgcp": "background-clip:${1:padding-box};",
|
||
|
\ "bgcp:bb": "background-clip:border-box;",
|
||
|
\ "bgcp:pb": "background-clip:padding-box;",
|
||
|
\ "bgcp:cb": "background-clip:content-box;",
|
||
|
\ "bgcp:nc": "background-clip:no-clip;",
|
||
|
\ "bgo": "background-origin:|;",
|
||
|
\ "bgo:pb": "background-origin:padding-box;",
|
||
|
\ "bgo:bb": "background-origin:border-box;",
|
||
|
\ "bgo:cb": "background-origin:content-box;",
|
||
|
\ "bgsz": "background-size:|;",
|
||
|
\ "bgsz:a": "background-size:auto;",
|
||
|
\ "bgsz:ct": "background-size:contain;",
|
||
|
\ "bgsz:cv": "background-size:cover;",
|
||
|
\ "c": "color:#${1:000};",
|
||
|
\ "c:r": "color:rgb(${1:0}, ${2:0}, ${3:0});",
|
||
|
\ "c:ra": "color:rgba(${1:0}, ${2:0}, ${3:0}, .${4:5});",
|
||
|
\ "cm": "/* |${child} */",
|
||
|
\ "cnt": "content:'|';",
|
||
|
\ "cnt:n": "content:normal;",
|
||
|
\ "cnt:oq": "content:open-quote;",
|
||
|
\ "cnt:noq": "content:no-open-quote;",
|
||
|
\ "cnt:cq": "content:close-quote;",
|
||
|
\ "cnt:ncq": "content:no-close-quote;",
|
||
|
\ "cnt:a": "content:attr(|);",
|
||
|
\ "cnt:c": "content:counter(|);",
|
||
|
\ "cnt:cs": "content:counters(|);",
|
||
|
\ "tbl": "table-layout:|;",
|
||
|
\ "tbl:a": "table-layout:auto;",
|
||
|
\ "tbl:f": "table-layout:fixed;",
|
||
|
\ "cps": "caption-side:|;",
|
||
|
\ "cps:t": "caption-side:top;",
|
||
|
\ "cps:b": "caption-side:bottom;",
|
||
|
\ "ec": "empty-cells:|;",
|
||
|
\ "ec:s": "empty-cells:show;",
|
||
|
\ "ec:h": "empty-cells:hide;",
|
||
|
\ "lis": "list-style:|;",
|
||
|
\ "lis:n": "list-style:none;",
|
||
|
\ "lisp": "list-style-position:|;",
|
||
|
\ "lisp:i": "list-style-position:inside;",
|
||
|
\ "lisp:o": "list-style-position:outside;",
|
||
|
\ "list": "list-style-type:|;",
|
||
|
\ "list:n": "list-style-type:none;",
|
||
|
\ "list:d": "list-style-type:disc;",
|
||
|
\ "list:c": "list-style-type:circle;",
|
||
|
\ "list:s": "list-style-type:square;",
|
||
|
\ "list:dc": "list-style-type:decimal;",
|
||
|
\ "list:dclz": "list-style-type:decimal-leading-zero;",
|
||
|
\ "list:lr": "list-style-type:lower-roman;",
|
||
|
\ "list:ur": "list-style-type:upper-roman;",
|
||
|
\ "lisi": "list-style-image:|;",
|
||
|
\ "lisi:n": "list-style-image:none;",
|
||
|
\ "q": "quotes:|;",
|
||
|
\ "q:n": "quotes:none;",
|
||
|
\ "q:ru": "quotes:'\\00AB' '\\00BB' '\\201E' '\\201C';",
|
||
|
\ "q:en": "quotes:'\\201C' '\\201D' '\\2018' '\\2019';",
|
||
|
\ "ct": "content:|;",
|
||
|
\ "ct:n": "content:normal;",
|
||
|
\ "ct:oq": "content:open-quote;",
|
||
|
\ "ct:noq": "content:no-open-quote;",
|
||
|
\ "ct:cq": "content:close-quote;",
|
||
|
\ "ct:ncq": "content:no-close-quote;",
|
||
|
\ "ct:a": "content:attr(|);",
|
||
|
\ "ct:c": "content:counter(|);",
|
||
|
\ "ct:cs": "content:counters(|);",
|
||
|
\ "coi": "counter-increment:|;",
|
||
|
\ "cor": "counter-reset:|;",
|
||
|
\ "va": "vertical-align:${1:top};",
|
||
|
\ "va:sup": "vertical-align:super;",
|
||
|
\ "va:t": "vertical-align:top;",
|
||
|
\ "va:tt": "vertical-align:text-top;",
|
||
|
\ "va:m": "vertical-align:middle;",
|
||
|
\ "va:bl": "vertical-align:baseline;",
|
||
|
\ "va:b": "vertical-align:bottom;",
|
||
|
\ "va:tb": "vertical-align:text-bottom;",
|
||
|
\ "va:sub": "vertical-align:sub;",
|
||
|
\ "ta": "text-align:${1:left};",
|
||
|
\ "ta:l": "text-align:left;",
|
||
|
\ "ta:c": "text-align:center;",
|
||
|
\ "ta:r": "text-align:right;",
|
||
|
\ "ta:j": "text-align:justify;",
|
||
|
\ "ta-lst": "text-align-last:|;",
|
||
|
\ "tal:a": "text-align-last:auto;",
|
||
|
\ "tal:l": "text-align-last:left;",
|
||
|
\ "tal:c": "text-align-last:center;",
|
||
|
\ "tal:r": "text-align-last:right;",
|
||
|
\ "td": "text-decoration:${1:none};",
|
||
|
\ "td:n": "text-decoration:none;",
|
||
|
\ "td:u": "text-decoration:underline;",
|
||
|
\ "td:o": "text-decoration:overline;",
|
||
|
\ "td:l": "text-decoration:line-through;",
|
||
|
\ "te": "text-emphasis:|;",
|
||
|
\ "te:n": "text-emphasis:none;",
|
||
|
\ "te:ac": "text-emphasis:accent;",
|
||
|
\ "te:dt": "text-emphasis:dot;",
|
||
|
\ "te:c": "text-emphasis:circle;",
|
||
|
\ "te:ds": "text-emphasis:disc;",
|
||
|
\ "te:b": "text-emphasis:before;",
|
||
|
\ "te:a": "text-emphasis:after;",
|
||
|
\ "th": "text-height:|;",
|
||
|
\ "th:a": "text-height:auto;",
|
||
|
\ "th:f": "text-height:font-size;",
|
||
|
\ "th:t": "text-height:text-size;",
|
||
|
\ "th:m": "text-height:max-size;",
|
||
|
\ "ti": "text-indent:|;",
|
||
|
\ "ti:-": "text-indent:-9999px;",
|
||
|
\ "tj": "text-justify:|;",
|
||
|
\ "tj:a": "text-justify:auto;",
|
||
|
\ "tj:iw": "text-justify:inter-word;",
|
||
|
\ "tj:ii": "text-justify:inter-ideograph;",
|
||
|
\ "tj:ic": "text-justify:inter-cluster;",
|
||
|
\ "tj:d": "text-justify:distribute;",
|
||
|
\ "tj:k": "text-justify:kashida;",
|
||
|
\ "tj:t": "text-justify:tibetan;",
|
||
|
\ "tov": "text-overflow:${ellipsis};",
|
||
|
\ "tov:e": "text-overflow:ellipsis;",
|
||
|
\ "tov:c": "text-overflow:clip;",
|
||
|
\ "to": "text-outline:|;",
|
||
|
\ "to+": "text-outline:${1:0} ${2:0} ${3:#000};",
|
||
|
\ "to:n": "text-outline:none;",
|
||
|
\ "tr": "text-replace:|;",
|
||
|
\ "tr:n": "text-replace:none;",
|
||
|
\ "tt": "text-transform:${1:uppercase};",
|
||
|
\ "tt:n": "text-transform:none;",
|
||
|
\ "tt:c": "text-transform:capitalize;",
|
||
|
\ "tt:u": "text-transform:uppercase;",
|
||
|
\ "tt:l": "text-transform:lowercase;",
|
||
|
\ "tw": "text-wrap:|;",
|
||
|
\ "tw:n": "text-wrap:normal;",
|
||
|
\ "tw:no": "text-wrap:none;",
|
||
|
\ "tw:u": "text-wrap:unrestricted;",
|
||
|
\ "tw:s": "text-wrap:suppress;",
|
||
|
\ "tsh": "text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000};",
|
||
|
\ "tsh:r": "text-shadow:${1:h} ${2:v} ${3:blur} rgb(${4:0}, ${5:0}, ${6:0});",
|
||
|
\ "tsh:ra": "text-shadow:${1:h} ${2:v} ${3:blur} rgba(${4:0}, ${5:0}, ${6:0}, .${7:5});",
|
||
|
\ "tsh+": "text-shadow:${1:0} ${2:0} ${3:0} ${4:#000};",
|
||
|
\ "tsh:n": "text-shadow:none;",
|
||
|
\ "trf": "transform:|;",
|
||
|
\ "trf:skx": "transform: skewX(${1:angle});",
|
||
|
\ "trf:sky": "transform: skewY(${1:angle});",
|
||
|
\ "trf:sc": "transform: scale(${1:x}, ${2:y});",
|
||
|
\ "trf:scx": "transform: scaleX(${1:x});",
|
||
|
\ "trf:scy": "transform: scaleY(${1:y});",
|
||
|
\ "trf:scz": "transform: scaleZ(${1:z});",
|
||
|
\ "trf:sc3": "transform: scale3d(${1:x}, ${2:y}, ${3:z});",
|
||
|
\ "trf:r": "transform: rotate(${1:angle});",
|
||
|
\ "trf:rx": "transform: rotateX(${1:angle});",
|
||
|
\ "trf:ry": "transform: rotateY(${1:angle});",
|
||
|
\ "trf:rz": "transform: rotateZ(${1:angle});",
|
||
|
\ "trf:t": "transform: translate(${1:x}, ${2:y});",
|
||
|
\ "trf:tx": "transform: translateX(${1:x});",
|
||
|
\ "trf:ty": "transform: translateY(${1:y});",
|
||
|
\ "trf:tz": "transform: translateZ(${1:z});",
|
||
|
\ "trf:t3": "transform: translate3d(${1:tx}, ${2:ty}, ${3:tz});",
|
||
|
\ "trfo": "transform-origin:|;",
|
||
|
\ "trfs": "transform-style:${1:preserve-3d};",
|
||
|
\ "trs": "transition:${1:prop} ${2:time};",
|
||
|
\ "trsde": "transition-delay:${1:time};",
|
||
|
\ "trsdu": "transition-duration:${1:time};",
|
||
|
\ "trsp": "transition-property:${1:prop};",
|
||
|
\ "trstf": "transition-timing-function:${1:tfunc};",
|
||
|
\ "lh": "line-height:|;",
|
||
|
\ "whs": "white-space:|;",
|
||
|
\ "whs:n": "white-space:normal;",
|
||
|
\ "whs:p": "white-space:pre;",
|
||
|
\ "whs:nw": "white-space:nowrap;",
|
||
|
\ "whs:pw": "white-space:pre-wrap;",
|
||
|
\ "whs:pl": "white-space:pre-line;",
|
||
|
\ "whsc": "white-space-collapse:|;",
|
||
|
\ "whsc:n": "white-space-collapse:normal;",
|
||
|
\ "whsc:k": "white-space-collapse:keep-all;",
|
||
|
\ "whsc:l": "white-space-collapse:loose;",
|
||
|
\ "whsc:bs": "white-space-collapse:break-strict;",
|
||
|
\ "whsc:ba": "white-space-collapse:break-all;",
|
||
|
\ "wob": "word-break:|;",
|
||
|
\ "wob:n": "word-break:normal;",
|
||
|
\ "wob:k": "word-break:keep-all;",
|
||
|
\ "wob:ba": "word-break:break-all;",
|
||
|
\ "wos": "word-spacing:|;",
|
||
|
\ "wow": "word-wrap:|;",
|
||
|
\ "wow:nm": "word-wrap:normal;",
|
||
|
\ "wow:n": "word-wrap:none;",
|
||
|
\ "wow:u": "word-wrap:unrestricted;",
|
||
|
\ "wow:s": "word-wrap:suppress;",
|
||
|
\ "wow:b": "word-wrap:break-word;",
|
||
|
\ "wm": "writing-mode:${1:lr-tb};",
|
||
|
\ "wm:lrt": "writing-mode:lr-tb;",
|
||
|
\ "wm:lrb": "writing-mode:lr-bt;",
|
||
|
\ "wm:rlt": "writing-mode:rl-tb;",
|
||
|
\ "wm:rlb": "writing-mode:rl-bt;",
|
||
|
\ "wm:tbr": "writing-mode:tb-rl;",
|
||
|
\ "wm:tbl": "writing-mode:tb-lr;",
|
||
|
\ "wm:btl": "writing-mode:bt-lr;",
|
||
|
\ "wm:btr": "writing-mode:bt-rl;",
|
||
|
\ "lts": "letter-spacing:|;",
|
||
|
\ "lts-n": "letter-spacing:normal;",
|
||
|
\ "f": "font:|;",
|
||
|
\ "f+": "font:${1:1em} ${2:Arial,sans-serif};",
|
||
|
\ "fw": "font-weight:|;",
|
||
|
\ "fw:n": "font-weight:normal;",
|
||
|
\ "fw:b": "font-weight:bold;",
|
||
|
\ "fw:br": "font-weight:bolder;",
|
||
|
\ "fw:lr": "font-weight:lighter;",
|
||
|
\ "fs": "font-style:${italic};",
|
||
|
\ "fs:n": "font-style:normal;",
|
||
|
\ "fs:i": "font-style:italic;",
|
||
|
\ "fs:o": "font-style:oblique;",
|
||
|
\ "fv": "font-variant:|;",
|
||
|
\ "fv:n": "font-variant:normal;",
|
||
|
\ "fv:sc": "font-variant:small-caps;",
|
||
|
\ "fz": "font-size:|;",
|
||
|
\ "fza": "font-size-adjust:|;",
|
||
|
\ "fza:n": "font-size-adjust:none;",
|
||
|
\ "ff": "font-family:|;",
|
||
|
\ "ff:s": "font-family:serif;",
|
||
|
\ "ff:ss": "font-family:sans-serif;",
|
||
|
\ "ff:c": "font-family:cursive;",
|
||
|
\ "ff:f": "font-family:fantasy;",
|
||
|
\ "ff:m": "font-family:monospace;",
|
||
|
\ "ff:a": "font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif;",
|
||
|
\ "ff:t": "font-family: \"Times New Roman\", Times, Baskerville, Georgia, serif;",
|
||
|
\ "ff:v": "font-family: Verdana, Geneva, sans-serif;",
|
||
|
\ "fef": "font-effect:|;",
|
||
|
\ "fef:n": "font-effect:none;",
|
||
|
\ "fef:eg": "font-effect:engrave;",
|
||
|
\ "fef:eb": "font-effect:emboss;",
|
||
|
\ "fef:o": "font-effect:outline;",
|
||
|
\ "fem": "font-emphasize:|;",
|
||
|
\ "femp": "font-emphasize-position:|;",
|
||
|
\ "femp:b": "font-emphasize-position:before;",
|
||
|
\ "femp:a": "font-emphasize-position:after;",
|
||
|
\ "fems": "font-emphasize-style:|;",
|
||
|
\ "fems:n": "font-emphasize-style:none;",
|
||
|
\ "fems:ac": "font-emphasize-style:accent;",
|
||
|
\ "fems:dt": "font-emphasize-style:dot;",
|
||
|
\ "fems:c": "font-emphasize-style:circle;",
|
||
|
\ "fems:ds": "font-emphasize-style:disc;",
|
||
|
\ "fsm": "font-smooth:|;",
|
||
|
\ "fsm:a": "font-smooth:auto;",
|
||
|
\ "fsm:n": "font-smooth:never;",
|
||
|
\ "fsm:aw": "font-smooth:always;",
|
||
|
\ "fst": "font-stretch:|;",
|
||
|
\ "fst:n": "font-stretch:normal;",
|
||
|
\ "fst:uc": "font-stretch:ultra-condensed;",
|
||
|
\ "fst:ec": "font-stretch:extra-condensed;",
|
||
|
\ "fst:c": "font-stretch:condensed;",
|
||
|
\ "fst:sc": "font-stretch:semi-condensed;",
|
||
|
\ "fst:se": "font-stretch:semi-expanded;",
|
||
|
\ "fst:e": "font-stretch:expanded;",
|
||
|
\ "fst:ee": "font-stretch:extra-expanded;",
|
||
|
\ "fst:ue": "font-stretch:ultra-expanded;",
|
||
|
\ "op": "opacity:|;",
|
||
|
\ "op+": "opacity: $1;\nfilter: alpha(opacity=$2);",
|
||
|
\ "op:ie": "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);",
|
||
|
\ "op:ms": "-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';",
|
||
|
\ "rsz": "resize:|;",
|
||
|
\ "rsz:n": "resize:none;",
|
||
|
\ "rsz:b": "resize:both;",
|
||
|
\ "rsz:h": "resize:horizontal;",
|
||
|
\ "rsz:v": "resize:vertical;",
|
||
|
\ "cur": "cursor:${pointer};",
|
||
|
\ "cur:a": "cursor:auto;",
|
||
|
\ "cur:d": "cursor:default;",
|
||
|
\ "cur:c": "cursor:crosshair;",
|
||
|
\ "cur:ha": "cursor:hand;",
|
||
|
\ "cur:he": "cursor:help;",
|
||
|
\ "cur:m": "cursor:move;",
|
||
|
\ "cur:p": "cursor:pointer;",
|
||
|
\ "cur:t": "cursor:text;",
|
||
|
\ "fxd": "flex-direction:|;",
|
||
|
\ "fxd:r": "flex-direction:row;",
|
||
|
\ "fxd:rr": "flex-direction:row-reverse;",
|
||
|
\ "fxd:c": "flex-direction:column;",
|
||
|
\ "fxd:cr": "flex-direction:column-reverse;",
|
||
|
\ "fxw": "flex-wrap: |;",
|
||
|
\ "fxw:n": "flex-wrap:nowrap;",
|
||
|
\ "fxw:w": "flex-wrap:wrap;",
|
||
|
\ "fxw:wr": "flex-wrap:wrap-reverse;",
|
||
|
\ "fxf": "flex-flow:|;",
|
||
|
\ "jc": "justify-content:|;",
|
||
|
\ "jc:fs": "justify-content:flex-start;",
|
||
|
\ "jc:fe": "justify-content:flex-end;",
|
||
|
\ "jc:c": "justify-content:center;",
|
||
|
\ "jc:sb": "justify-content:space-between;",
|
||
|
\ "jc:sa": "justify-content:space-around;",
|
||
|
\ "ai": "align-items:|;",
|
||
|
\ "ai:fs": "align-items:flex-start;",
|
||
|
\ "ai:fe": "align-items:flex-end;",
|
||
|
\ "ai:c": "align-items:center;",
|
||
|
\ "ai:b": "align-items:baseline;",
|
||
|
\ "ai:s": "align-items:stretch;",
|
||
|
\ "ac": "align-content:|;",
|
||
|
\ "ac:fs": "align-content:flex-start;",
|
||
|
\ "ac:fe": "align-content:flex-end;",
|
||
|
\ "ac:c": "align-content:center;",
|
||
|
\ "ac:sb": "align-content:space-between;",
|
||
|
\ "ac:sa": "align-content:space-around;",
|
||
|
\ "ac:s": "align-content:stretch;",
|
||
|
\ "ord": "order:|;",
|
||
|
\ "fxg": "flex-grow:|;",
|
||
|
\ "fxsh": "flex-shrink:|;",
|
||
|
\ "fxb": "flex-basis:|;",
|
||
|
\ "fx": "flex:|;",
|
||
|
\ "as": "align-self:|;",
|
||
|
\ "as:a": "align-self:auto;",
|
||
|
\ "as:fs": "align-self:flex-start;",
|
||
|
\ "as:fe": "align-self:flex-end;",
|
||
|
\ "as:c": "align-self:center;",
|
||
|
\ "as:b": "align-self:baseline;",
|
||
|
\ "as:s": "align-self:stretch;",
|
||
|
\ "pgbb": "page-break-before:|;",
|
||
|
\ "pgbb:au": "page-break-before:auto;",
|
||
|
\ "pgbb:al": "page-break-before:always;",
|
||
|
\ "pgbb:l": "page-break-before:left;",
|
||
|
\ "pgbb:r": "page-break-before:right;",
|
||
|
\ "pgbi": "page-break-inside:|;",
|
||
|
\ "pgbi:au": "page-break-inside:auto;",
|
||
|
\ "pgbi:av": "page-break-inside:avoid;",
|
||
|
\ "pgba": "page-break-after:|;",
|
||
|
\ "pgba:au": "page-break-after:auto;",
|
||
|
\ "pgba:al": "page-break-after:always;",
|
||
|
\ "pgba:l": "page-break-after:left;",
|
||
|
\ "pgba:r": "page-break-after:right;",
|
||
|
\ "orp": "orphans:|;",
|
||
|
\ "us": "user-select:${none};",
|
||
|
\ "wid": "widows:|;",
|
||
|
\ "wfsm": "-webkit-font-smoothing:${antialiased};",
|
||
|
\ "wfsm:a": "-webkit-font-smoothing:antialiased;",
|
||
|
\ "wfsm:s": "-webkit-font-smoothing:subpixel-antialiased;",
|
||
|
\ "wfsm:sa": "-webkit-font-smoothing:subpixel-antialiased;",
|
||
|
\ "wfsm:n": "-webkit-font-smoothing:none;"
|
||
|
\ },
|
||
|
\ 'filters': 'fc',
|
||
|
\ 'ignore_embeded_filetype': 1,
|
||
|
\ },
|
||
|
\ 'sass': {
|
||
|
\ 'extends': 'css',
|
||
|
\ 'snippets': {
|
||
|
\ '@if': "@if {\n\t|\n}",
|
||
|
\ '@e': "@else {\n\t|\n}",
|
||
|
\ '@in': "@include |",
|
||
|
\ '@ex': "@extend |",
|
||
|
\ '@mx': "@mixin {\n\t|\n}",
|
||
|
\ '@fn': "@function {\n\t|\n}",
|
||
|
\ '@r': "@return |",
|
||
|
\ },
|
||
|
\ },
|
||
|
\ 'scss': {
|
||
|
\ 'extends': 'css',
|
||
|
\ },
|
||
|
\ 'less': {
|
||
|
\ 'extends': 'css',
|
||
|
\ },
|
||
|
\ 'css.drupal': {
|
||
|
\ 'extends': 'css',
|
||
|
\ },
|
||
|
\ 'styled': {
|
||
|
\ 'extends': 'css',
|
||
|
\ },
|
||
|
\ 'html': {
|
||
|
\ 'snippets': {
|
||
|
\ '!': "html:5",
|
||
|
\ '!!!': "<!DOCTYPE html>\n",
|
||
|
\ '!!!4t': "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n",
|
||
|
\ '!!!4s': "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n",
|
||
|
\ '!!!xt': "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n",
|
||
|
\ '!!!xs': "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n",
|
||
|
\ '!!!xxs': "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n",
|
||
|
\ 'c': "<!-- |${child} -->",
|
||
|
\ 'cc:ie6': "<!--[if lte IE 6]>\n\t${child}|\n<![endif]-->",
|
||
|
\ 'cc:ie': "<!--[if IE]>\n\t${child}|\n<![endif]-->",
|
||
|
\ 'cc:noie': "<!--[if !IE]><!-->\n\t${child}|\n<!--<![endif]-->",
|
||
|
\ 'html:4t': "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
|
||
|
\ ."<html lang=\"${lang}\">\n"
|
||
|
\ ."<head>\n"
|
||
|
\ ."\t<meta http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\">\n"
|
||
|
\ ."\t<title></title>\n"
|
||
|
\ ."</head>\n"
|
||
|
\ ."<body>\n\t${child}|\n</body>\n"
|
||
|
\ ."</html>",
|
||
|
\ 'html:4s': "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n"
|
||
|
\ ."<html lang=\"${lang}\">\n"
|
||
|
\ ."<head>\n"
|
||
|
\ ."\t<meta http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\">\n"
|
||
|
\ ."\t<title></title>\n"
|
||
|
\ ."</head>\n"
|
||
|
\ ."<body>\n\t${child}|\n</body>\n"
|
||
|
\ ."</html>",
|
||
|
\ 'html:xt': "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
|
||
|
\ ."<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"${lang}\">\n"
|
||
|
\ ."<head>\n"
|
||
|
\ ."\t<meta http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\" />\n"
|
||
|
\ ."\t<title></title>\n"
|
||
|
\ ."</head>\n"
|
||
|
\ ."<body>\n\t${child}|\n</body>\n"
|
||
|
\ ."</html>",
|
||
|
\ 'html:xs': "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
|
||
|
\ ."<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"${lang}\">\n"
|
||
|
\ ."<head>\n"
|
||
|
\ ."\t<meta http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\" />\n"
|
||
|
\ ."\t<title></title>\n"
|
||
|
\ ."</head>\n"
|
||
|
\ ."<body>\n\t${child}|\n</body>\n"
|
||
|
\ ."</html>",
|
||
|
\ 'html:xxs': "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n"
|
||
|
\ ."<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"${lang}\">\n"
|
||
|
\ ."<head>\n"
|
||
|
\ ."\t<meta http-equiv=\"Content-Type\" content=\"text/html;charset=${charset}\" />\n"
|
||
|
\ ."\t<title></title>\n"
|
||
|
\ ."</head>\n"
|
||
|
\ ."<body>\n\t${child}|\n</body>\n"
|
||
|
\ ."</html>",
|
||
|
\ 'html:5': "<!DOCTYPE html>\n"
|
||
|
\ ."<html lang=\"${lang}\">\n"
|
||
|
\ ."<head>\n"
|
||
|
\ ."\t<meta charset=\"${charset}\">\n"
|
||
|
\ ."\t<title></title>\n"
|
||
|
\ ."</head>\n"
|
||
|
\ ."<body>\n\t${child}|\n</body>\n"
|
||
|
\ ."</html>",
|
||
|
\ },
|
||
|
\ 'default_attributes': {
|
||
|
\ 'a': [{'href': ''}],
|
||
|
\ 'a:blank': [{'href': 'http://|'},{'target': '_blank'},{'rel': 'noopener noreferrer'}],
|
||
|
\ 'a:link': [{'href': 'http://|'}],
|
||
|
\ 'a:mail': [{'href': 'mailto:|'}],
|
||
|
\ 'a:tel': [{'href': 'tel:+|'}],
|
||
|
\ 'abbr': [{'title': ''}],
|
||
|
\ 'acronym': [{'title': ''}],
|
||
|
\ 'acr': [{'title': ''}],
|
||
|
\ 'base': [{'href': ''}],
|
||
|
\ 'bdo': [{'dir': ''}],
|
||
|
\ 'bdo:r': [{'dir': 'rtl'}],
|
||
|
\ 'bdo:l': [{'dir': 'ltr'}],
|
||
|
\ 'button:disabled': [{'disabled': 'disabled'}],
|
||
|
\ 'button:d': [{'disabled': 'disabled'}],
|
||
|
\ 'btn:d': [{'disabled': 'disabled'}],
|
||
|
\ 'button:submit': [{'type': 'submit'}],
|
||
|
\ 'button:s': [{'type': 'submit'}],
|
||
|
\ 'btn:s': [{'type': 'submit'}],
|
||
|
\ 'button:reset': [{'type': 'reset'}],
|
||
|
\ 'button:r': [{'type': 'reset'}],
|
||
|
\ 'btn:r': [{'type': 'reset'}],
|
||
|
\ 'del': [{'datetime': '${datetime}'}],
|
||
|
\ 'ins': [{'datetime': '${datetime}'}],
|
||
|
\ 'link:css': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|style.css'}, {'media': 'all'}],
|
||
|
\ 'link:manifest': [{'rel': 'manifest'},{'href': '|manifest.json'}],
|
||
|
\ 'link:mf': [{'rel': 'manifest'},{'href': '|manifest.json'}],
|
||
|
\ 'link:print': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|print.css'}, {'media': 'print'}],
|
||
|
\ 'link:import': [{'rel': 'import'}, {'href': '|.html'}],
|
||
|
\ 'link:im': [{'rel': 'import'}, {'href': '|.html'}],
|
||
|
\ 'link:favicon': [{'rel': 'shortcut icon'}, {'type': 'image/x-icon'}, {'href': '|favicon.ico'}],
|
||
|
\ 'link:touch': [{'rel': 'apple-touch-icon'}, {'href': '|favicon.png'}],
|
||
|
\ 'link:rss': [{'rel': 'alternate'}, {'type': 'application/rss+xml'}, {'title': 'RSS'}, {'href': '|rss.xml'}],
|
||
|
\ 'link:atom': [{'rel': 'alternate'}, {'type': 'application/atom+xml'}, {'title': 'Atom'}, {'href': 'atom.xml'}],
|
||
|
\ 'marquee': [{'behavior': ''},{'direction': ''}],
|
||
|
\ 'meta:utf': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=UTF-8'}],
|
||
|
\ 'meta:vp': [{'name': 'viewport'}, {'content': 'width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0'}],
|
||
|
\ 'meta:win': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=Win-1251'}],
|
||
|
\ 'meta:compat': [{'http-equiv': 'X-UA-Compatible'}, {'content': 'IE=7'}],
|
||
|
\ 'meta:desc': [{'name': 'description'},{'content': ''}],
|
||
|
\ 'meta:edge': [{'http-equiv': 'X-UA-Compatible'}, {'content': 'ie=edge'}],
|
||
|
\ 'meta:kw': [{'name': 'keywords'},{'content': ''}],
|
||
|
\ 'meta:redirect': [{'http-equiv': 'Content-Type'}, {'content': '0; url=http://example.com'}],
|
||
|
\ 'style': g:emmet_html5 ? [] : [{'type': 'text/css'}],
|
||
|
\ 'script': g:emmet_html5 ? [] : [{'type': 'text/javascript'}],
|
||
|
\ 'script:src': (g:emmet_html5 ? [] : [{'type': 'text/javascript'}]) + [{'src': ''}],
|
||
|
\ 'img': [{'src': ''}, {'alt': ''}],
|
||
|
\ 'img:srcset': [{'srcset': ''},{'src': ''}, {'alt': ''}],
|
||
|
\ 'img:s': [{'srcset': ''},{'src': ''}, {'alt': ''}],
|
||
|
\ 'img:sizes': [{'sizes': ''},{'srcset': ''},{'src': ''}, {'alt': ''}],
|
||
|
\ 'img:z': [{'sizes': ''},{'srcset': ''},{'src': ''}, {'alt': ''}],
|
||
|
\ 'iframe': [{'src': ''}, {'frameborder': '0'}],
|
||
|
\ 'embed': [{'src': ''}, {'type': ''}],
|
||
|
\ 'object': [{'data': ''}, {'type': ''}],
|
||
|
\ 'param': [{'name': ''}, {'value': ''}],
|
||
|
\ 'map': {'name': ''},
|
||
|
\ 'area': [{'shape': ''}, {'coords': ''}, {'href': ''}, {'alt': ''}],
|
||
|
\ 'area:d': [{'shape': 'default'}, {'href': ''}, {'alt': ''}],
|
||
|
\ 'area:c': [{'shape': 'circle'}, {'coords': ''}, {'href': ''}, {'alt': ''}],
|
||
|
\ 'area:r': [{'shape': 'rect'}, {'coords': ''}, {'href': ''}, {'alt': ''}],
|
||
|
\ 'area:p': [{'shape': 'poly'}, {'coords': ''}, {'href': ''}, {'alt': ''}],
|
||
|
\ 'link': [{'rel': 'stylesheet'}, {'href': ''}],
|
||
|
\ 'fieldset:disabled': [{'disabled': 'disabled'}],
|
||
|
\ 'fieldset:d': [{'disabled': 'disabled'}],
|
||
|
\ 'fset:d': [{'disabled': 'disabled'}],
|
||
|
\ 'fst:disabled': [{'disabled': 'disabled'}],
|
||
|
\ 'form': [{'action': ''}],
|
||
|
\ 'form:get': [{'action': ''}, {'method': 'get'}],
|
||
|
\ 'form:post': [{'action': ''}, {'method': 'post'}],
|
||
|
\ 'form:upload': [{'action': ''}, {'method': 'post'}, {'enctype': 'multipart/form-data'}],
|
||
|
\ 'label': [{'for': ''}],
|
||
|
\ 'input': [{'type': ''}],
|
||
|
\ 'input:hidden': [{'type': 'hidden'}, {'name': ''}],
|
||
|
\ 'input:h': [{'type': 'hidden'}, {'name': ''}],
|
||
|
\ 'input:text': [{'type': 'text'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:t': [{'type': 'text'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:search': [{'type': 'search'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:email': [{'type': 'email'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:tel': [{'type': 'tel'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:url': [{'type': 'url'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:password': [{'type': 'password'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:p': [{'type': 'password'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:datetime': [{'type': 'datetime'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:date': [{'type': 'date'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:datetime-local': [{'type': 'datetime-local'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:month': [{'type': 'month'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:week': [{'type': 'week'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:time': [{'type': 'time'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:number': [{'type': 'number'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:color': [{'type': 'color'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:checkbox': [{'type': 'checkbox'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:c': [{'type': 'checkbox'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:radio': [{'type': 'radio'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:r': [{'type': 'radio'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:range': [{'type': 'range'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:file': [{'type': 'file'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:f': [{'type': 'file'}, {'name': ''}, {'id': ''}],
|
||
|
\ 'input:submit': [{'type': 'submit'}, {'value': ''}],
|
||
|
\ 'input:s': [{'type': 'submit'}, {'value': ''}],
|
||
|
\ 'input:image': [{'type': 'image'}, {'src': ''}, {'alt': ''}],
|
||
|
\ 'input:i': [{'type': 'image'}, {'src': ''}, {'alt': ''}],
|
||
|
\ 'input:reset': [{'type': 'reset'}, {'value': ''}],
|
||
|
\ 'input:button': [{'type': 'button'}, {'value': ''}],
|
||
|
\ 'input:b': [{'type': 'button'}, {'value': ''}],
|
||
|
\ 'select': [{'name': ''}, {'id': ''}],
|
||
|
\ 'select:disabled': [{'name': ''}, {'id': ''}, {'disabled': 'disabled'}],
|
||
|
\ 'source:media': [{'media': '(minwidth: )'},{'srcset': ''}],
|
||
|
\ 'source:m': [{'media': '(minwidth: )'},{'srcset': ''}],
|
||
|
\ 'source:media:type': [{'media': '(minwidth: )'},{'srcset': ''},{'type': 'image/'}],
|
||
|
\ 'source:media:sizes': [{'media': '(minwidth: )'},{'srcset': ''},{'sizes': ''}],
|
||
|
\ 'source:sizes:type': [{'sizes': ''},{'srcset': ''},{'type': 'image/'}],
|
||
|
\ 'source:src': [{'src': ''},{'type': ''}],
|
||
|
\ 'source:sc': [{'src': ''},{'type': ''}],
|
||
|
\ 'source:srcset': [{'srcset': ''}],
|
||
|
\ 'source:s': [{'srcset': ''}],
|
||
|
\ 'source:type': [{'srcset': ''},{'type': 'image/'}],
|
||
|
\ 'source:t': [{'srcset': ''},{'type': 'image/'}],
|
||
|
\ 'source:sizes': [{'sizes': ''},{'srcset': ''}],
|
||
|
\ 'source:z': [{'sizes': ''},{'srcset': ''}],
|
||
|
\ 'option': [{'value': ''}],
|
||
|
\ 'textarea': [{'name': ''}, {'id': ''}, {'cols': '30'}, {'rows': '10'}],
|
||
|
\ 'menu:context': [{'type': 'context'}],
|
||
|
\ 'menu:c': [{'type': 'context'}],
|
||
|
\ 'menu:toolbar': [{'type': 'toolbar'}],
|
||
|
\ 'menu:t': [{'type': 'toolbar'}],
|
||
|
\ 'video': [{'src': ''}],
|
||
|
\ 'audio': [{'src': ''}],
|
||
|
\ 'html:xml': [{'xmlns': 'http://www.w3.org/1999/xhtml'}, {'xml:lang': '${lang}'}],
|
||
|
\ },
|
||
|
\ 'aliases': {
|
||
|
\ 'link:*': 'link',
|
||
|
\ 'meta:*': 'meta',
|
||
|
\ 'area:*': 'area',
|
||
|
\ 'bdo:*': 'bdo',
|
||
|
\ 'form:*': 'form',
|
||
|
\ 'input:*': 'input',
|
||
|
\ 'script:*': 'script',
|
||
|
\ 'html:*': 'html',
|
||
|
\ 'a:*': 'a',
|
||
|
\ 'menu:*': 'menu',
|
||
|
\ 'mn': 'main',
|
||
|
\ 'tem': 'template',
|
||
|
\ 'bq': 'blockquote',
|
||
|
\ 'acr': 'acronym',
|
||
|
\ 'fig': 'figure',
|
||
|
\ 'figc': 'figcaption',
|
||
|
\ 'ifr': 'iframe',
|
||
|
\ 'emb': 'embed',
|
||
|
\ 'obj': 'object',
|
||
|
\ 'src:*': 'source',
|
||
|
\ 'cap': 'caption',
|
||
|
\ 'colg': 'colgroup',
|
||
|
\ 'fst': 'fieldset',
|
||
|
\ 'btn:': 'button',
|
||
|
\ 'optg': 'optgroup',
|
||
|
\ 'opt': 'option',
|
||
|
\ 'pic': 'picture',
|
||
|
\ 'tarea': 'textarea',
|
||
|
\ 'leg': 'legend',
|
||
|
\ 'sect': 'section',
|
||
|
\ 'art': 'article',
|
||
|
\ 'hdr': 'header',
|
||
|
\ 'ftr': 'footer',
|
||
|
\ 'adr': 'address',
|
||
|
\ 'dlg': 'dialog',
|
||
|
\ 'str': 'strong',
|
||
|
\ 'sty': 'style',
|
||
|
\ 'prog': 'progress',
|
||
|
\ 'fset': 'fieldset',
|
||
|
\ 'datag': 'datagrid',
|
||
|
\ 'datal': 'datalist',
|
||
|
\ 'kg': 'keygen',
|
||
|
\ 'out': 'output',
|
||
|
\ 'det': 'details',
|
||
|
\ 'cmd': 'command',
|
||
|
\ 'sum': 'summary',
|
||
|
\ },
|
||
|
\ 'expandos': {
|
||
|
\ 'ol': 'ol>li',
|
||
|
\ 'ul': 'ul>li',
|
||
|
\ 'dl': 'dl>dt+dd',
|
||
|
\ 'map': 'map>area',
|
||
|
\ 'table': 'table>tr>td',
|
||
|
\ 'colgroup': 'colgroup>col',
|
||
|
\ 'colg': 'colgroup>col',
|
||
|
\ 'tr': 'tr>td',
|
||
|
\ 'select': 'select>option',
|
||
|
\ 'optgroup': 'optgroup>option',
|
||
|
\ 'optg': 'optgroup>option',
|
||
|
\ 'ri:dpr': 'img:s',
|
||
|
\ 'ri:d': 'img:s',
|
||
|
\ 'ri:viewport': 'img:z',
|
||
|
\ 'ri:vp': 'img:z',
|
||
|
\ 'ri:art': 'pic>source:m+img',
|
||
|
\ 'ri:a': 'pic>source:m+img',
|
||
|
\ 'ri:type': 'pic>source:t+img',
|
||
|
\ 'ri:t': 'pic>source:t+img',
|
||
|
\ },
|
||
|
\ 'empty_elements': 'area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,keygen,command',
|
||
|
\ 'block_elements': 'address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,link,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul,h1,h2,h3,h4,h5,h6',
|
||
|
\ 'inline_elements': 'a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,small,span,strike,strong,sub,sup,textarea,tt,u,var',
|
||
|
\ 'empty_element_suffix': g:emmet_html5 ? '>' : ' />',
|
||
|
\ 'indent_blockelement': 0,
|
||
|
\ 'block_all_childless': 0,
|
||
|
\ },
|
||
|
\ 'elm': {
|
||
|
\ 'indentation': ' ',
|
||
|
\ 'extends': 'html',
|
||
|
\ },
|
||
|
\ 'xml': {
|
||
|
\ 'extends': 'html',
|
||
|
\ 'empty_elements': '',
|
||
|
\ 'block_elements': '',
|
||
|
\ 'inline_elements': '',
|
||
|
\ },
|
||
|
\ 'htmldjango': {
|
||
|
\ 'extends': 'html',
|
||
|
\ },
|
||
|
\ 'html.django_template': {
|
||
|
\ 'extends': 'html',
|
||
|
\ },
|
||
|
\ 'jade': {
|
||
|
\ 'indentation': ' ',
|
||
|
\ 'extends': 'html',
|
||
|
\ 'snippets': {
|
||
|
\ '!': "html:5",
|
||
|
\ '!!!': "doctype html\n",
|
||
|
\ '!!!4t': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"\n",
|
||
|
\ '!!!4s': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"\n",
|
||
|
\ '!!!xt': "doctype transitional\n",
|
||
|
\ '!!!xs': "doctype strict\n",
|
||
|
\ '!!!xxs': "doctype 1.1\n",
|
||
|
\ 'c': "\/\/ |${child}",
|
||
|
\ 'html:4t': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"\n"
|
||
|
\ ."html(lang=\"${lang}\")\n"
|
||
|
\ ."\thead\n"
|
||
|
\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n"
|
||
|
\ ."\t\ttitle\n"
|
||
|
\ ."\tbody\n\t\t${child}|",
|
||
|
\ 'html:4s': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"\n"
|
||
|
\ ."html(lang=\"${lang}\")\n"
|
||
|
\ ."\thead\n"
|
||
|
\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n"
|
||
|
\ ."\t\ttitle\n"
|
||
|
\ ."\tbody\n\t\t${child}|",
|
||
|
\ 'html:xt': "doctype transitional\n"
|
||
|
\ ."html(xmlns=\"http://www.w3.org/1999/xhtml\", xml:lang=\"${lang}\")\n"
|
||
|
\ ."\thead\n"
|
||
|
\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n"
|
||
|
\ ."\t\ttitle\n"
|
||
|
\ ."\tbody\n\t\t${child}|",
|
||
|
\ 'html:xs': "doctype strict\n"
|
||
|
\ ."html(xmlns=\"http://www.w3.org/1999/xhtml\", xml:lang=\"${lang}\")\n"
|
||
|
\ ."\thead\n"
|
||
|
\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n"
|
||
|
\ ."\t\ttitle\n"
|
||
|
\ ."\tbody\n\t\t${child}|",
|
||
|
\ 'html:xxs': "doctype 1.1\n"
|
||
|
\ ."html(xmlns=\"http://www.w3.org/1999/xhtml\", xml:lang=\"${lang}\")\n"
|
||
|
\ ."\thead\n"
|
||
|
\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n"
|
||
|
\ ."\t\ttitle\n"
|
||
|
\ ."\tbody\n\t\t${child}|",
|
||
|
\ 'html:5': "doctype html\n"
|
||
|
\ ."html(lang=\"${lang}\")\n"
|
||
|
\ ."\thead\n"
|
||
|
\ ."\t\tmeta(charset=\"${charset}\")\n"
|
||
|
\ ."\t\ttitle\n"
|
||
|
\ ."\tbody\n\t\t${child}|",
|
||
|
\ },
|
||
|
\ },
|
||
|
\ 'pug': {
|
||
|
\ 'extends': 'jade',
|
||
|
\ },
|
||
|
\ 'xsl': {
|
||
|
\ 'extends': 'html',
|
||
|
\ 'default_attributes': {
|
||
|
\ 'tmatch': [{'match': ''}, {'mode': ''}],
|
||
|
\ 'tname': [{'name': ''}],
|
||
|
\ 'xsl:when': {'test': ''},
|
||
|
\ 'var': [{'name': ''}, {'select': ''}],
|
||
|
\ 'vari': {'name': ''},
|
||
|
\ 'if': {'test': ''},
|
||
|
\ 'call': {'name': ''},
|
||
|
\ 'attr': {'name': ''},
|
||
|
\ 'wp': [{'name': ''}, {'select': ''}],
|
||
|
\ 'par': [{'name': ''}, {'select': ''}],
|
||
|
\ 'val': {'select': ''},
|
||
|
\ 'co': {'select': ''},
|
||
|
\ 'each': {'select': ''},
|
||
|
\ 'ap': [{'select': ''}, {'mode': ''}]
|
||
|
\ },
|
||
|
\ 'aliases': {
|
||
|
\ 'tmatch': 'xsl:template',
|
||
|
\ 'tname': 'xsl:template',
|
||
|
\ 'var': 'xsl:variable',
|
||
|
\ 'vari': 'xsl:variable',
|
||
|
\ 'if': 'xsl:if',
|
||
|
\ 'choose': 'xsl:choose',
|
||
|
\ 'call': 'xsl:call-template',
|
||
|
\ 'wp': 'xsl:with-param',
|
||
|
\ 'par': 'xsl:param',
|
||
|
\ 'val': 'xsl:value-of',
|
||
|
\ 'attr': 'xsl:attribute',
|
||
|
\ 'co' : 'xsl:copy-of',
|
||
|
\ 'each' : 'xsl:for-each',
|
||
|
\ 'ap' : 'xsl:apply-templates',
|
||
|
\ },
|
||
|
\ 'expandos': {
|
||
|
\ 'choose': 'xsl:choose>xsl:when+xsl:otherwise',
|
||
|
\ }
|
||
|
\ },
|
||
|
\ 'jsx': {
|
||
|
\ 'extends': 'html',
|
||
|
\ 'attribute_name': {'class': 'className', 'for': 'htmlFor'},
|
||
|
\ 'empty_element_suffix': ' />',
|
||
|
\ },
|
||
|
\ 'javascriptreact': {
|
||
|
\ 'extends': 'html',
|
||
|
\ 'attribute_name': {'class': 'className', 'for': 'htmlFor'},
|
||
|
\ 'empty_element_suffix': ' />',
|
||
|
\ },
|
||
|
\ 'tsx': {
|
||
|
\ 'extends': 'jsx',
|
||
|
\ },
|
||
|
\ 'typescriptreact': {
|
||
|
\ 'extends': 'html',
|
||
|
\ 'attribute_name': {'class': 'className', 'for': 'htmlFor'},
|
||
|
\ 'empty_element_suffix': ' />',
|
||
|
\ },
|
||
|
\ 'xslt': {
|
||
|
\ 'extends': 'xsl',
|
||
|
\ },
|
||
|
\ 'haml': {
|
||
|
\ 'indentation': ' ',
|
||
|
\ 'extends': 'html',
|
||
|
\ 'snippets': {
|
||
|
\ 'html:5': "!!! 5\n"
|
||
|
\ ."%html{:lang => \"${lang}\"}\n"
|
||
|
\ ."\t%head\n"
|
||
|
\ ."\t\t%meta{:charset => \"${charset}\"}\n"
|
||
|
\ ."\t\t%title\n"
|
||
|
\ ."\t%body\n"
|
||
|
\ ."\t\t${child}|\n",
|
||
|
\ },
|
||
|
\ 'attribute_style': 'hash',
|
||
|
\ },
|
||
|
\ 'slim': {
|
||
|
\ 'indentation': ' ',
|
||
|
\ 'extends': 'html',
|
||
|
\ 'snippets': {
|
||
|
\ 'html:5': "doctype 5\n"
|
||
|
\ ."html lang=\"${lang}\"\n"
|
||
|
\ ."\thead\n"
|
||
|
\ ."\t\tmeta charset=\"${charset}\"\n"
|
||
|
\ ."\t\ttitle\n"
|
||
|
\ ."\tbody\n"
|
||
|
\ ."\t\t${child}|\n",
|
||
|
\ },
|
||
|
\ 'ignore_embeded_filetype': 1,
|
||
|
\ },
|
||
|
\ 'xhtml': {
|
||
|
\ 'extends': 'html'
|
||
|
\ },
|
||
|
\ 'mustache': {
|
||
|
\ 'extends': 'html'
|
||
|
\ },
|
||
|
\ 'xsd': {
|
||
|
\ 'extends': 'html',
|
||
|
\ 'snippets': {
|
||
|
\ 'xsd:w3c': "<?xml version=\"1.0\"?>\n"
|
||
|
\ ."<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n"
|
||
|
\ ."\t<xsd:element name=\"\" type=\"\"/>\n"
|
||
|
\ ."</xsd:schema>\n"
|
||
|
\ }
|
||
|
\ },
|
||
|
\}
|
||
|
|
||
|
if exists('g:user_emmet_settings')
|
||
|
call emmet#mergeConfig(s:emmet_settings, g:user_emmet_settings)
|
||
|
endif
|
||
|
|
||
|
let &cpoptions = s:save_cpo
|
||
|
unlet s:save_cpo
|
||
|
|
||
|
" vim:set et:
|