mirror of
https://github.com/mattn/emmet-vim.git
synced 2025-12-07 11:14:26 +08:00
Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a8f46bc17 | ||
|
|
6d572e21e4 | ||
|
|
57a5263d1d | ||
|
|
e82844db78 | ||
|
|
5dda53c1ec | ||
|
|
e2c2f48716 | ||
|
|
f36d6f4025 | ||
|
|
a210cc0c5e | ||
|
|
7e3af15e4e | ||
|
|
c523cfd5e2 | ||
|
|
8289c323e0 | ||
|
|
30f8568935 | ||
|
|
cda7349b65 | ||
|
|
610c2ea673 | ||
|
|
87e50225c1 | ||
|
|
1c46c5fb77 | ||
|
|
03bb2b26fe | ||
|
|
af10f14ae5 | ||
|
|
1ddd5f2270 | ||
|
|
25d321c66f | ||
|
|
fd0c0db219 | ||
|
|
ab5d0f026c | ||
|
|
b5a94de150 | ||
|
|
971a13ca98 | ||
|
|
3d6862d5d1 | ||
|
|
c24f2dcfcb | ||
|
|
a7e876d5b5 | ||
|
|
c6e11d22dc | ||
|
|
862abb3895 | ||
|
|
e1f2f00a5c | ||
|
|
d4647629b2 | ||
|
|
8b9bcac7a0 | ||
|
|
a9b29f786e | ||
|
|
fcf44c5f6d | ||
|
|
4cc293d464 | ||
|
|
7be2d5b977 |
@@ -1,7 +1,7 @@
|
|||||||
"=============================================================================
|
"=============================================================================
|
||||||
" emmet.vim
|
" emmet.vim
|
||||||
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
|
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
|
||||||
" Last Change: 17-Dec-2014.
|
" Last Change: 26-Jul-2015.
|
||||||
|
|
||||||
let s:save_cpo = &cpoptions
|
let s:save_cpo = &cpoptions
|
||||||
set cpoptions&vim
|
set cpoptions&vim
|
||||||
@@ -44,10 +44,10 @@ function! emmet#getIndentation(...) abort
|
|||||||
endif
|
endif
|
||||||
if has_key(s:emmet_settings, type) && has_key(s:emmet_settings[type], 'indentation')
|
if has_key(s:emmet_settings, type) && has_key(s:emmet_settings[type], 'indentation')
|
||||||
let indent = s:emmet_settings[type].indentation
|
let indent = s:emmet_settings[type].indentation
|
||||||
elseif has_key(s:emmet_settings.variables, 'indentation')
|
|
||||||
let indent = s:emmet_settings.variables.indentation
|
|
||||||
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
|
||||||
|
elseif has_key(s:emmet_settings.variables, 'indentation')
|
||||||
|
let indent = s:emmet_settings.variables.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
|
||||||
@@ -237,7 +237,11 @@ function! emmet#toString(...) abort
|
|||||||
let snippet_node = emmet#newNode()
|
let snippet_node = emmet#newNode()
|
||||||
let snippet_node.value = '{'.tmp.'}'
|
let snippet_node.value = '{'.tmp.'}'
|
||||||
let snippet_node.important = current.important
|
let snippet_node.important = current.important
|
||||||
let str = emmet#lang#{rtype}#toString(s:emmet_settings, snippet_node, type, inline, filters, s:itemno(group_itemno, current), indent)
|
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
|
else
|
||||||
if len(current.name)
|
if len(current.name)
|
||||||
let str .= current.name
|
let str .= current.name
|
||||||
@@ -286,13 +290,15 @@ 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
|
||||||
if !has_key(s:emmet_settings, a:type)
|
|
||||||
return a:default
|
for type in split(a:type, '\.')
|
||||||
|
if !has_key(s:emmet_settings, type)
|
||||||
|
continue
|
||||||
endif
|
endif
|
||||||
let ret = a:default
|
let ret = a:default
|
||||||
|
|
||||||
if has_key(s:emmet_settings[a:type], 'extends')
|
if has_key(s:emmet_settings[type], 'extends')
|
||||||
let extends = s:emmet_settings[a:type].extends
|
let extends = s:emmet_settings[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
|
||||||
@@ -309,15 +315,19 @@ function! emmet#getResource(type, name, default) abort
|
|||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if has_key(s:emmet_settings[a:type], a:name)
|
if has_key(s:emmet_settings[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[type][a:name])
|
||||||
else
|
else
|
||||||
let ret = s:emmet_settings[a:type][a:name]
|
let ret = s:emmet_settings[type][a:name]
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
if !empty(ret)
|
||||||
return ret
|
return ret
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return a:default
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! emmet#getFileType(...) abort
|
function! emmet#getFileType(...) abort
|
||||||
@@ -475,7 +485,7 @@ function! emmet#expandAbbr(mode, abbr) range abort
|
|||||||
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*$' && query !~# '\$#'
|
||||||
let query .= '>{$#}'
|
let query .= '>{$#}'
|
||||||
endif
|
endif
|
||||||
if emmet#useFilter(filters, '/')
|
if emmet#useFilter(filters, '/')
|
||||||
@@ -622,9 +632,9 @@ function! emmet#expandAbbr(mode, abbr) range abort
|
|||||||
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, '[\r\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('''<')
|
||||||
@@ -644,14 +654,14 @@ function! emmet#expandAbbr(mode, abbr) range abort
|
|||||||
else
|
else
|
||||||
let indent = ''
|
let indent = ''
|
||||||
endif
|
endif
|
||||||
let expand = substitute(expand, '\n\s*$', '', 'g')
|
let expand = substitute(expand, '[\r\n]\s*$', '', 'g')
|
||||||
if emmet#useFilter(filters, 's')
|
if emmet#useFilter(filters, 's')
|
||||||
let epart = substitute(expand, "\n\s\*", '', 'g')
|
let epart = substitute(expand, '[\r\n]\s*', '', 'g')
|
||||||
else
|
else
|
||||||
let epart = substitute(expand, "\n", "\n" . indent, 'g')
|
let epart = substitute(expand, '[\r\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, '[\r\n]', 1)
|
||||||
if a:mode ==# 2
|
if a:mode ==# 2
|
||||||
silent! exe 'normal! gvc'
|
silent! exe 'normal! gvc'
|
||||||
endif
|
endif
|
||||||
@@ -672,6 +682,9 @@ function! emmet#expandAbbr(mode, abbr) range abort
|
|||||||
endif
|
endif
|
||||||
let pos = emmet#util#getcurpos()
|
let pos = emmet#util#getcurpos()
|
||||||
let use_selection = emmet#getResource(type, 'use_selection', 0)
|
let use_selection = emmet#getResource(type, 'use_selection', 0)
|
||||||
|
try
|
||||||
|
let l:gdefault = &gdefault
|
||||||
|
let &gdefault = 0
|
||||||
if use_selection && getline('.')[col('.')-1:] =~# '^\$select'
|
if use_selection && getline('.')[col('.')-1:] =~# '^\$select'
|
||||||
let pos[2] += 1
|
let pos[2] += 1
|
||||||
silent! s/\$select\$//
|
silent! s/\$select\$//
|
||||||
@@ -686,6 +699,9 @@ function! emmet#expandAbbr(mode, abbr) range abort
|
|||||||
return "\<right>"
|
return "\<right>"
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
finally
|
||||||
|
let &gdefault = l:gdefault
|
||||||
|
endtry
|
||||||
let &selection = oldselection
|
let &selection = oldselection
|
||||||
endif
|
endif
|
||||||
return ''
|
return ''
|
||||||
@@ -929,7 +945,6 @@ let s:emmet_settings = {
|
|||||||
\ 'lang': "en",
|
\ 'lang': "en",
|
||||||
\ 'locale': "en-US",
|
\ 'locale': "en-US",
|
||||||
\ 'charset': "UTF-8",
|
\ 'charset': "UTF-8",
|
||||||
\ 'indentation': "\t",
|
|
||||||
\ 'newline': "\n",
|
\ 'newline': "\n",
|
||||||
\ 'use_selection': 0,
|
\ 'use_selection': 0,
|
||||||
\ },
|
\ },
|
||||||
@@ -1637,7 +1652,8 @@ let s:emmet_settings = {
|
|||||||
\ 'ins': {'datetime': '${datetime}'},
|
\ 'ins': {'datetime': '${datetime}'},
|
||||||
\ 'link:css': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|style.css'}, {'media': 'all'}],
|
\ 'link:css': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|style.css'}, {'media': 'all'}],
|
||||||
\ 'link:print': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|print.css'}, {'media': 'print'}],
|
\ 'link:print': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|print.css'}, {'media': 'print'}],
|
||||||
\ 'link:import': [{'rel': 'import'}, {'href': ''}],
|
\ '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:favicon': [{'rel': 'shortcut icon'}, {'type': 'image/x-icon'}, {'href': '|favicon.ico'}],
|
||||||
\ 'link:touch': [{'rel': 'apple-touch-icon'}, {'href': '|favicon.png'}],
|
\ 'link:touch': [{'rel': 'apple-touch-icon'}, {'href': '|favicon.png'}],
|
||||||
\ 'link:rss': [{'rel': 'alternate'}, {'type': 'application/rss+xml'}, {'title': 'RSS'}, {'href': '|rss.xml'}],
|
\ 'link:rss': [{'rel': 'alternate'}, {'type': 'application/rss+xml'}, {'title': 'RSS'}, {'href': '|rss.xml'}],
|
||||||
@@ -1769,6 +1785,7 @@ let s:emmet_settings = {
|
|||||||
\ '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',
|
\ '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,select,small,span,strike,strong,sub,sup,textarea,tt,u,var',
|
\ '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,select,small,span,strike,strong,sub,sup,textarea,tt,u,var',
|
||||||
\ 'empty_element_suffix': g:emmet_html5 ? '>' : ' />',
|
\ 'empty_element_suffix': g:emmet_html5 ? '>' : ' />',
|
||||||
|
\ 'indent_blockelement': 0,
|
||||||
\ },
|
\ },
|
||||||
\ 'htmldjango': {
|
\ 'htmldjango': {
|
||||||
\ 'extends': 'html',
|
\ 'extends': 'html',
|
||||||
@@ -1814,6 +1831,10 @@ let s:emmet_settings = {
|
|||||||
\ 'choose': 'xsl:choose>xsl:when+xsl:otherwise',
|
\ 'choose': 'xsl:choose>xsl:when+xsl:otherwise',
|
||||||
\ }
|
\ }
|
||||||
\ },
|
\ },
|
||||||
|
\ 'jsx': {
|
||||||
|
\ 'extends': 'html',
|
||||||
|
\ 'attribute_name': {'class': 'className'},
|
||||||
|
\ },
|
||||||
\ 'xslt': {
|
\ 'xslt': {
|
||||||
\ 'extends': 'xsl',
|
\ 'extends': 'xsl',
|
||||||
\ },
|
\ },
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
function! emmet#lang#css#findTokens(str) abort
|
function! emmet#lang#css#findTokens(str) abort
|
||||||
|
let tmp = substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '')
|
||||||
|
if tmp =~ '/' && tmp =~ '^[a-zA-Z0-9/_.]\+$'
|
||||||
|
" maybe path or something
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
return substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '')
|
return substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -20,13 +25,13 @@ function! emmet#lang#css#parseIntoTree(abbr, type) abort
|
|||||||
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 = substitute(abbr, '\s\+$', '', '') . " {\n" . indent . "${cursor}\n}"
|
||||||
let current.name = ''
|
let current.name = ''
|
||||||
call add(root.child, deepcopy(current))
|
call add(root.child, deepcopy(current))
|
||||||
else
|
else
|
||||||
for n in range(len(tokens))
|
for n in range(len(tokens))
|
||||||
let token = tokens[n]
|
let token = tokens[n]
|
||||||
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.-]\+\%(p\|e\|em\|re\|rem\|%\)\{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 =~# '^-'
|
||||||
@@ -43,8 +48,16 @@ function! emmet#lang#css#parseIntoTree(abbr, type) abort
|
|||||||
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 =~# '%$'
|
||||||
|
let value .= v
|
||||||
elseif v =~# 'e$'
|
elseif v =~# 'e$'
|
||||||
let value .= substitute(v, 'e$', 'em', '')
|
let value .= substitute(v, 'e$', 'em', '')
|
||||||
|
elseif v =~# 'em$'
|
||||||
|
let value .= v
|
||||||
|
elseif v =~# 're$'
|
||||||
|
let value .= substitute(v, 're$', 'rem', '')
|
||||||
|
elseif v =~# 'rem$'
|
||||||
|
let value .= v
|
||||||
elseif v =~# '\.'
|
elseif v =~# '\.'
|
||||||
let value .= v . 'em'
|
let value .= v . 'em'
|
||||||
elseif v ==# 'auto'
|
elseif v ==# 'auto'
|
||||||
@@ -186,6 +199,8 @@ endfunction
|
|||||||
function! emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent) abort
|
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]
|
||||||
|
let tmp = substitute(value, '\${cursor}', '', 'g')
|
||||||
|
if tmp !~ '.*{[ \t\r\n]*}$'
|
||||||
if emmet#useFilter(a:filters, 'fc')
|
if emmet#useFilter(a:filters, 'fc')
|
||||||
let value = substitute(value, '\([^:]\+\):\([^;]*\)', '\1: \2', 'g')
|
let value = substitute(value, '\([^:]\+\):\([^;]*\)', '\1: \2', 'g')
|
||||||
else
|
else
|
||||||
@@ -194,6 +209,7 @@ function! emmet#lang#css#toString(settings, current, type, inline, filters, item
|
|||||||
if current.important
|
if current.important
|
||||||
let value = substitute(value, ';', ' !important;', '')
|
let value = substitute(value, ';', ' !important;', '')
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
return value
|
return value
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -371,6 +371,7 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)
|
let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)
|
||||||
let q = emmet#getResource(type, 'quote_char', '"')
|
let q = emmet#getResource(type, 'quote_char', '"')
|
||||||
let ct = emmet#getResource(type, 'comment_type', 'both')
|
let ct = emmet#getResource(type, 'comment_type', 'both')
|
||||||
|
let an = emmet#getResource(type, 'attribute_name', {})
|
||||||
|
|
||||||
if emmet#useFilter(filters, 'haml')
|
if emmet#useFilter(filters, 'haml')
|
||||||
return emmet#lang#haml#toString(settings, current, type, inline, filters, itemno, indent)
|
return emmet#lang#haml#toString(settings, current, type, inline, filters, itemno, indent)
|
||||||
@@ -457,6 +458,9 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
|
if has_key(an, attr)
|
||||||
|
let attr = an[attr]
|
||||||
|
endif
|
||||||
let str .= ' ' . attr . '=' . q . Val . q
|
let str .= ' ' . attr . '=' . q . Val . q
|
||||||
if emmet#useFilter(filters, 'c')
|
if emmet#useFilter(filters, 'c')
|
||||||
if attr ==# 'id' | let comment .= '#' . Val | endif
|
if attr ==# 'id' | let comment .= '#' . Val | endif
|
||||||
@@ -483,8 +487,10 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
endif
|
endif
|
||||||
let text = substitute(text, '\${nr}', "\n", 'g')
|
let text = substitute(text, '\${nr}', "\n", 'g')
|
||||||
let text = substitute(text, '\\\$', '$', 'g')
|
let text = substitute(text, '\\\$', '$', 'g')
|
||||||
|
if text != ''
|
||||||
let str = substitute(str, '\("\zs$#\ze"\|\s\zs\$#"\|"\$#\ze\s\)', text, 'g')
|
let str = substitute(str, '\("\zs$#\ze"\|\s\zs\$#"\|"\$#\ze\s\)', text, 'g')
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
let str .= text
|
let str .= text
|
||||||
let nc = len(current.child)
|
let nc = len(current.child)
|
||||||
let dr = 0
|
let dr = 0
|
||||||
@@ -509,9 +515,13 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g')
|
let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g')
|
||||||
let str .= inner
|
let str .= inner
|
||||||
endfor
|
endfor
|
||||||
|
else
|
||||||
|
if settings.html.indent_blockelement && len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1
|
||||||
|
let str .= "\n" . indent . '${cursor}' . "\n"
|
||||||
else
|
else
|
||||||
let str .= '${cursor}'
|
let str .= '${cursor}'
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
if dr
|
if dr
|
||||||
let str .= "\n"
|
let str .= "\n"
|
||||||
endif
|
endif
|
||||||
|
|||||||
332
autoload/emmet/lang/jade.vim
Normal file
332
autoload/emmet/lang/jade.vim
Normal file
@@ -0,0 +1,332 @@
|
|||||||
|
function! emmet#lang#jade#findTokens(str) abort
|
||||||
|
return emmet#lang#html#findTokens(a:str)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#parseIntoTree(abbr, type) abort
|
||||||
|
return emmet#lang#html#parseIntoTree(a:abbr, a:type)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#toString(settings, current, type, inline, filters, itemno, indent) abort
|
||||||
|
let settings = a:settings
|
||||||
|
let current = a:current
|
||||||
|
let type = a:type
|
||||||
|
let inline = a:inline
|
||||||
|
let filters = a:filters
|
||||||
|
let itemno = a:itemno
|
||||||
|
let indent = emmet#getIndentation(type)
|
||||||
|
let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)
|
||||||
|
let attribute_style = emmet#getResource('jade', 'attribute_style', 'hash')
|
||||||
|
let str = ''
|
||||||
|
|
||||||
|
let current_name = current.name
|
||||||
|
if dollar_expr
|
||||||
|
let current_name = substitute(current.name, '\$$', itemno+1, '')
|
||||||
|
endif
|
||||||
|
if len(current.name) > 0
|
||||||
|
let str .= '' . current_name
|
||||||
|
let tmp = ''
|
||||||
|
for attr in emmet#util#unique(current.attrs_order + keys(current.attr))
|
||||||
|
if !has_key(current.attr, attr)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let Val = current.attr[attr]
|
||||||
|
if type(Val) == 2 && Val == function('emmet#types#true')
|
||||||
|
if attribute_style ==# 'hash'
|
||||||
|
let tmp .= ' ' . attr . ' = true'
|
||||||
|
elseif attribute_style ==# 'html'
|
||||||
|
let tmp .= attr . '=true'
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if dollar_expr
|
||||||
|
while Val =~# '\$\([^#{]\|$\)'
|
||||||
|
let Val = substitute(Val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g')
|
||||||
|
endwhile
|
||||||
|
let attr = substitute(attr, '\$$', itemno+1, '')
|
||||||
|
endif
|
||||||
|
let valtmp = substitute(Val, '\${cursor}', '', '')
|
||||||
|
if attr ==# 'id' && len(valtmp) > 0
|
||||||
|
let str .= '#' . Val
|
||||||
|
elseif attr ==# 'class' && len(valtmp) > 0
|
||||||
|
let str .= '.' . substitute(Val, ' ', '.', 'g')
|
||||||
|
else
|
||||||
|
if len(tmp) > 0
|
||||||
|
if attribute_style ==# 'hash'
|
||||||
|
let tmp .= ', '
|
||||||
|
elseif attribute_style ==# 'html'
|
||||||
|
let tmp .= ' '
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let Val = substitute(Val, '\${cursor}', '', '')
|
||||||
|
if attribute_style ==# 'hash'
|
||||||
|
let tmp .= '' . attr . '="' . Val . '"'
|
||||||
|
elseif attribute_style ==# 'html'
|
||||||
|
let tmp .= attr . '="' . Val . '"'
|
||||||
|
end
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if len(tmp)
|
||||||
|
if attribute_style ==# 'hash'
|
||||||
|
let str .= '(' . tmp . ')'
|
||||||
|
elseif attribute_style ==# 'html'
|
||||||
|
let str .= '(' . tmp . ')'
|
||||||
|
end
|
||||||
|
endif
|
||||||
|
|
||||||
|
let inner = ''
|
||||||
|
if len(current.value) > 0
|
||||||
|
let text = current.value[1:-2]
|
||||||
|
if dollar_expr
|
||||||
|
let text = substitute(text, '\%(\\\)\@\<!\(\$\+\)\([^{#]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g')
|
||||||
|
let text = substitute(text, '\${nr}', "\n", 'g')
|
||||||
|
let text = substitute(text, '\\\$', '$', 'g')
|
||||||
|
let str = substitute(str, '\$#', text, 'g')
|
||||||
|
endif
|
||||||
|
let lines = split(text, "\n")
|
||||||
|
if len(lines) == 1
|
||||||
|
let str .= ' ' . text
|
||||||
|
else
|
||||||
|
for line in lines
|
||||||
|
let str .= "\n" . indent . line . ' |'
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
elseif len(current.child) == 0
|
||||||
|
let str .= '${cursor}'
|
||||||
|
endif
|
||||||
|
if len(current.child) == 1 && len(current.child[0].name) == 0
|
||||||
|
let text = current.child[0].value[1:-2]
|
||||||
|
if dollar_expr
|
||||||
|
let text = substitute(text, '\%(\\\)\@\<!\(\$\+\)\([^{#]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g')
|
||||||
|
let text = substitute(text, '\${nr}', "\n", 'g')
|
||||||
|
let text = substitute(text, '\\\$', '$', 'g')
|
||||||
|
endif
|
||||||
|
let lines = split(text, "\n")
|
||||||
|
if len(lines) == 1
|
||||||
|
let str .= ' ' . text
|
||||||
|
else
|
||||||
|
for line in lines
|
||||||
|
let str .= "\n" . indent . line . ' |'
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
elseif len(current.child) > 0
|
||||||
|
for child in current.child
|
||||||
|
let inner .= emmet#toString(child, type, inline, filters, itemno, indent)
|
||||||
|
endfor
|
||||||
|
let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g')
|
||||||
|
let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g')
|
||||||
|
let str .= "\n" . indent . inner
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let str = current.value[1:-2]
|
||||||
|
if dollar_expr
|
||||||
|
let str = substitute(str, '\%(\\\)\@\<!\(\$\+\)\([^{#]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g')
|
||||||
|
let str = substitute(str, '\${nr}', "\n", 'g')
|
||||||
|
let str = substitute(str, '\\\$', '$', 'g')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let str .= "\n"
|
||||||
|
return str
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#imageSize() abort
|
||||||
|
let line = getline('.')
|
||||||
|
let current = emmet#lang#jade#parseTag(line)
|
||||||
|
if empty(current) || !has_key(current.attr, 'src')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let fn = current.attr.src
|
||||||
|
if fn =~# '^\s*$'
|
||||||
|
return
|
||||||
|
elseif fn !~# '^\(/\|http\)'
|
||||||
|
let fn = simplify(expand('%:h') . '/' . fn)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let [width, height] = emmet#util#getImageSize(fn)
|
||||||
|
if width == -1 && height == -1
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let current.attr.width = width
|
||||||
|
let current.attr.height = height
|
||||||
|
let current.attrs_order += ['width', 'height']
|
||||||
|
let jade = emmet#toString(current, 'jade', 1)
|
||||||
|
let jade = substitute(jade, '\${cursor}', '', '')
|
||||||
|
call setline('.', substitute(matchstr(line, '^\s*') . jade, "\n", '', 'g'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#encodeImage() abort
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#parseTag(tag) abort
|
||||||
|
let current = emmet#newNode()
|
||||||
|
let mx = '%\([a-zA-Z][a-zA-Z0-9]*\)\s*\%({\(.*\)}\)'
|
||||||
|
let match = matchstr(a:tag, mx)
|
||||||
|
let current.name = substitute(match, mx, '\1', '')
|
||||||
|
let attrs = substitute(match, mx, '\2', '')
|
||||||
|
let mx = '\([a-zA-Z0-9]\+\)\s*=>\s*\%(\([^"'' \t]\+\)\|"\([^"]\{-}\)"\|''\([^'']\{-}\)''\)'
|
||||||
|
while len(attrs) > 0
|
||||||
|
let match = matchstr(attrs, mx)
|
||||||
|
if len(match) ==# 0
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let attr_match = matchlist(match, mx)
|
||||||
|
let name = attr_match[1]
|
||||||
|
let value = len(attr_match[2]) ? attr_match[2] : attr_match[3]
|
||||||
|
let current.attr[name] = value
|
||||||
|
let current.attrs_order += [name]
|
||||||
|
let attrs = attrs[stridx(attrs, match) + len(match):]
|
||||||
|
endwhile
|
||||||
|
return current
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#toggleComment() abort
|
||||||
|
let line = getline('.')
|
||||||
|
let space = matchstr(line, '^\s*')
|
||||||
|
if line =~# '^\s*-#'
|
||||||
|
call setline('.', space . matchstr(line[len(space)+2:], '^\s*\zs.*'))
|
||||||
|
elseif line =~# '^\s*%[a-z]'
|
||||||
|
call setline('.', space . '-# ' . line[len(space):])
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#balanceTag(flag) range abort
|
||||||
|
let block = emmet#util#getVisualBlock()
|
||||||
|
if a:flag == -2 || a:flag == 2
|
||||||
|
let curpos = [0, line("'<"), col("'<"), 0]
|
||||||
|
else
|
||||||
|
let curpos = emmet#util#getcurpos()
|
||||||
|
endif
|
||||||
|
let n = curpos[1]
|
||||||
|
let ml = len(matchstr(getline(n), '^\s*'))
|
||||||
|
|
||||||
|
if a:flag > 0
|
||||||
|
if a:flag == 1 || !emmet#util#regionIsValid(block)
|
||||||
|
let n = line('.')
|
||||||
|
else
|
||||||
|
while n > 0
|
||||||
|
let l = len(matchstr(getline(n), '^\s*\ze%[a-z]'))
|
||||||
|
if l > 0 && l < ml
|
||||||
|
let ml = l
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let n -= 1
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
let sn = n
|
||||||
|
if n == 0
|
||||||
|
let ml = 0
|
||||||
|
endif
|
||||||
|
while n < line('$')
|
||||||
|
let l = len(matchstr(getline(n), '^\s*%[a-z]'))
|
||||||
|
if l > 0 && l <= ml
|
||||||
|
let n -= 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let n += 1
|
||||||
|
endwhile
|
||||||
|
call setpos('.', [0, n, 1, 0])
|
||||||
|
normal! V
|
||||||
|
call setpos('.', [0, sn, 1, 0])
|
||||||
|
else
|
||||||
|
while n > 0
|
||||||
|
let l = len(matchstr(getline(n), '^\s*\ze[a-z]'))
|
||||||
|
if l > 0 && l > ml
|
||||||
|
let ml = l
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let n += 1
|
||||||
|
endwhile
|
||||||
|
let sn = n
|
||||||
|
if n == 0
|
||||||
|
let ml = 0
|
||||||
|
endif
|
||||||
|
while n < line('$')
|
||||||
|
let l = len(matchstr(getline(n), '^\s*%[a-z]'))
|
||||||
|
if l > 0 && l <= ml
|
||||||
|
let n -= 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let n += 1
|
||||||
|
endwhile
|
||||||
|
call setpos('.', [0, n, 1, 0])
|
||||||
|
normal! V
|
||||||
|
call setpos('.', [0, sn, 1, 0])
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#moveNextPrevItem(flag) abort
|
||||||
|
return emmet#lang#jade#moveNextPrev(a:flag)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#moveNextPrev(flag) abort
|
||||||
|
let pos = search('""', a:flag ? 'Wb' : 'W')
|
||||||
|
if pos != 0
|
||||||
|
silent! normal! l
|
||||||
|
startinsert
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#splitJoinTag() abort
|
||||||
|
let n = line('.')
|
||||||
|
let sml = len(matchstr(getline(n), '^\s*%[a-z]'))
|
||||||
|
while n > 0
|
||||||
|
if getline(n) =~# '^\s*\ze%[a-z]'
|
||||||
|
if len(matchstr(getline(n), '^\s*%[a-z]')) < sml
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let line = getline(n)
|
||||||
|
call setline(n, substitute(line, '^\s*%\w\+\%(\s*{[^}]*}\|\s\)\zs.*', '', ''))
|
||||||
|
let sn = n
|
||||||
|
let n += 1
|
||||||
|
let ml = len(matchstr(getline(n), '^\s*%[a-z]'))
|
||||||
|
if len(matchstr(getline(n), '^\s*')) > ml
|
||||||
|
while n <= line('$')
|
||||||
|
let l = len(matchstr(getline(n), '^\s*'))
|
||||||
|
if l <= ml
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
exe n 'delete'
|
||||||
|
endwhile
|
||||||
|
call setpos('.', [0, sn, 1, 0])
|
||||||
|
else
|
||||||
|
let tag = matchstr(getline(sn), '^\s*%\zs\(\w\+\)')
|
||||||
|
let spaces = matchstr(getline(sn), '^\s*')
|
||||||
|
let settings = emmet#getSettings()
|
||||||
|
if stridx(','.settings.html.inline_elements.',', ','.tag.',') == -1
|
||||||
|
call append(sn, spaces . ' ')
|
||||||
|
call setpos('.', [0, sn+1, 1, 0])
|
||||||
|
else
|
||||||
|
call setpos('.', [0, sn, 1, 0])
|
||||||
|
endif
|
||||||
|
startinsert!
|
||||||
|
endif
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let n -= 1
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! emmet#lang#jade#removeTag() abort
|
||||||
|
let n = line('.')
|
||||||
|
let ml = 0
|
||||||
|
while n > 0
|
||||||
|
if getline(n) =~# '^\s*\ze[a-z]'
|
||||||
|
let ml = len(matchstr(getline(n), '^\s*%[a-z]'))
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let n -= 1
|
||||||
|
endwhile
|
||||||
|
let sn = n
|
||||||
|
while n < line('$')
|
||||||
|
let l = len(matchstr(getline(n), '^\s*%[a-z]'))
|
||||||
|
if l > 0 && l <= ml
|
||||||
|
let n -= 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let n += 1
|
||||||
|
endwhile
|
||||||
|
if sn == n
|
||||||
|
exe 'delete'
|
||||||
|
else
|
||||||
|
exe sn ',' (n-1) 'delete'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -292,7 +292,7 @@ function! emmet#util#imageSizeWithImageMagick(fn) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! emmet#util#isImageMagickInstalled() abort
|
function! emmet#util#isImageMagickInstalled() abort
|
||||||
if !get(s:, 'emmet_use_identify', 1)
|
if !get(g:, 'emmet_use_identify', 1)
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
return executable('identify')
|
return executable('identify')
|
||||||
|
|||||||
1549
doc/emmet.txt
1549
doc/emmet.txt
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@ script_name: Emmet.vim
|
|||||||
script_id: '2981'
|
script_id: '2981'
|
||||||
script_type: utility
|
script_type: utility
|
||||||
script_package: emmet-vim.zip
|
script_package: emmet-vim.zip
|
||||||
script_version: '0.85'
|
script_version: '0.86'
|
||||||
required_vim_version: '7.0'
|
required_vim_version: '7.0'
|
||||||
summary: vim plugins for HTML and CSS hi-speed coding.
|
summary: vim plugins for HTML and CSS hi-speed coding.
|
||||||
|
|
||||||
@@ -98,6 +98,8 @@ install_details: |
|
|||||||
# git clone http://github.com/mattn/emmet-vim.git
|
# git clone http://github.com/mattn/emmet-vim.git
|
||||||
|
|
||||||
versions:
|
versions:
|
||||||
|
- '0.86': |
|
||||||
|
This is an upgrade for Emmet.vim: lot of bug fixes.
|
||||||
- '0.85': |
|
- '0.85': |
|
||||||
This is an upgrade for Emmet.vim: lot of bug fixes.
|
This is an upgrade for Emmet.vim: lot of bug fixes.
|
||||||
- '0.84': |
|
- '0.84': |
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"=============================================================================
|
"=============================================================================
|
||||||
" File: emmet.vim
|
" File: emmet.vim
|
||||||
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
|
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
|
||||||
" Last Change: 17-Dec-2014.
|
" Last Change: 26-Jul-2015.
|
||||||
" Version: 0.85
|
" Version: 0.86
|
||||||
" 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.
|
||||||
" SeeAlso: http://emmet.io/
|
" SeeAlso: http://emmet.io/
|
||||||
@@ -90,10 +90,6 @@ if !exists('g:emmet_curl_command')
|
|||||||
let g:emmet_curl_command = 'curl -s -L -A Mozilla/5.0'
|
let g:emmet_curl_command = 'curl -s -L -A Mozilla/5.0'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists('g:user_emmet_complete_tag') && g:user_emmet_complete_tag
|
|
||||||
setlocal omnifunc=emmet#completeTag
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:user_emmet_leader_key')
|
if !exists('g:user_emmet_leader_key')
|
||||||
let g:user_emmet_leader_key = '<c-y>'
|
let g:user_emmet_leader_key = '<c-y>'
|
||||||
endif
|
endif
|
||||||
@@ -118,10 +114,14 @@ function! s:install_plugin(mode, buffer)
|
|||||||
\ {'mode': 'n', 'var': 'user_emmet_next_key', 'key': 'n', 'plug': 'emmet-move-next', 'func': ':call emmet#moveNextPrev(0)<cr>'},
|
\ {'mode': 'n', 'var': 'user_emmet_next_key', 'key': 'n', 'plug': 'emmet-move-next', 'func': ':call emmet#moveNextPrev(0)<cr>'},
|
||||||
\ {'mode': 'i', 'var': 'user_emmet_prev_key', 'key': 'N', 'plug': 'emmet-move-prev', 'func': '<esc>:call emmet#moveNextPrev(1)<cr>'},
|
\ {'mode': 'i', 'var': 'user_emmet_prev_key', 'key': 'N', 'plug': 'emmet-move-prev', 'func': '<esc>:call emmet#moveNextPrev(1)<cr>'},
|
||||||
\ {'mode': 'n', 'var': 'user_emmet_prev_key', 'key': 'N', 'plug': 'emmet-move-prev', 'func': ':call emmet#moveNextPrev(1)<cr>'},
|
\ {'mode': 'n', 'var': 'user_emmet_prev_key', 'key': 'N', 'plug': 'emmet-move-prev', 'func': ':call emmet#moveNextPrev(1)<cr>'},
|
||||||
|
\ {'mode': 'i', 'var': '', 'key': '', 'plug': 'emmet-move-next-item', 'func': '<esc>:call emmet#moveNextPrevItem(0)<cr>'},
|
||||||
|
\ {'mode': 'n', 'var': '', 'key': '', 'plug': 'emmet-move-next-item', 'func': ':call emmet#moveNextPrevItem(0)<cr>'},
|
||||||
|
\ {'mode': 'i', 'var': '', 'key': '', 'plug': 'emmet-move-prev-item', 'func': '<esc>:call emmet#moveNextPrevItem(1)<cr>'},
|
||||||
|
\ {'mode': 'n', 'var': '', 'key': '', 'plug': 'emmet-move-prev-item', 'func': ':call emmet#moveNextPrevItem(1)<cr>'},
|
||||||
\ {'mode': 'i', 'var': 'user_emmet_imagesize_key', 'key': 'i', 'plug': 'emmet-image-size', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#imageSize()<cr>'},
|
\ {'mode': 'i', 'var': 'user_emmet_imagesize_key', 'key': 'i', 'plug': 'emmet-image-size', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#imageSize()<cr>'},
|
||||||
\ {'mode': 'n', 'var': 'user_emmet_imagesize_key', 'key': 'i', 'plug': 'emmet-image-size', 'func': ':call emmet#imageSize()<cr>'},
|
\ {'mode': 'n', 'var': 'user_emmet_imagesize_key', 'key': 'i', 'plug': 'emmet-image-size', 'func': ':call emmet#imageSize()<cr>'},
|
||||||
\ {'mode': 'i', 'var': 'user_emmet_togglecomment_key', 'key': '/', 'plug': 'emmet-toogle-comment', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#toggleComment()<cr>'},
|
\ {'mode': 'i', 'var': 'user_emmet_togglecomment_key', 'key': '/', 'plug': 'emmet-toggle-comment', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#toggleComment()<cr>'},
|
||||||
\ {'mode': 'n', 'var': 'user_emmet_togglecomment_key', 'key': '/', 'plug': 'emmet-toogle-comment', 'func': ':call emmet#toggleComment()<cr>'},
|
\ {'mode': 'n', 'var': 'user_emmet_togglecomment_key', 'key': '/', 'plug': 'emmet-toggle-comment', 'func': ':call emmet#toggleComment()<cr>'},
|
||||||
\ {'mode': 'i', 'var': 'user_emmet_splitjointag_key', 'key': 'j', 'plug': 'emmet-split-join-tag', 'func': '<esc>:call emmet#splitJoinTag()<cr>'},
|
\ {'mode': 'i', 'var': 'user_emmet_splitjointag_key', 'key': 'j', 'plug': 'emmet-split-join-tag', 'func': '<esc>:call emmet#splitJoinTag()<cr>'},
|
||||||
\ {'mode': 'n', 'var': 'user_emmet_splitjointag_key', 'key': 'j', 'plug': 'emmet-split-join-tag', 'func': ':call emmet#splitJoinTag()<cr>'},
|
\ {'mode': 'n', 'var': 'user_emmet_splitjointag_key', 'key': 'j', 'plug': 'emmet-split-join-tag', 'func': ':call emmet#splitJoinTag()<cr>'},
|
||||||
\ {'mode': 'i', 'var': 'user_emmet_removetag_key', 'key': 'k', 'plug': 'emmet-remove-tag', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#removeTag()<cr>'},
|
\ {'mode': 'i', 'var': 'user_emmet_removetag_key', 'key': 'k', 'plug': 'emmet-remove-tag', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#removeTag()<cr>'},
|
||||||
@@ -134,11 +134,13 @@ function! s:install_plugin(mode, buffer)
|
|||||||
\ {'mode': 'v', 'var': 'user_emmet_codepretty_key', 'key': 'c', 'plug': 'emmet-code-pretty', 'func': ':call emmet#codePretty()<cr>'},
|
\ {'mode': 'v', 'var': 'user_emmet_codepretty_key', 'key': 'c', 'plug': 'emmet-code-pretty', 'func': ':call emmet#codePretty()<cr>'},
|
||||||
\]
|
\]
|
||||||
|
|
||||||
|
let only_plug = get(g:, 'emmet_install_only_plug', 0)
|
||||||
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
|
||||||
|
if item.var != '' && !only_plug
|
||||||
if exists('g:' . item.var)
|
if exists('g:' . item.var)
|
||||||
let key = eval('g:' . item.var)
|
let key = eval('g:' . item.var)
|
||||||
else
|
else
|
||||||
@@ -147,10 +149,19 @@ function! s:install_plugin(mode, buffer)
|
|||||||
if !hasmapto('<plug>(' . item.plug . ')', item.mode) && !len(maparg(key, item.mode))
|
if !hasmapto('<plug>(' . item.plug . ')', item.mode) && !len(maparg(key, item.mode))
|
||||||
exe item.mode . 'map ' . buffer . ' <unique> ' . key . ' <plug>(' . item.plug . ')'
|
exe item.mode . 'map ' . buffer . ' <unique> ' . key . ' <plug>(' . item.plug . ')'
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
if exists('g:user_emmet_complete_tag') && g:user_emmet_complete_tag
|
||||||
|
if get(g:, 'user_emmet_install_global', 1)
|
||||||
|
set omnifunc=emmet#completeTag
|
||||||
|
else
|
||||||
|
setlocal omnifunc=emmet#completeTag
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
command! -nargs=0 EmmetInstall call <SID>install_plugin(get(g:, 'user_emmet_mode', 'a'), 1)
|
command! -nargs=0 -bar EmmetInstall call <SID>install_plugin(get(g:, 'user_emmet_mode', 'a'), 1)
|
||||||
|
|
||||||
if get(g:, 'user_emmet_install_global', 1)
|
if get(g:, 'user_emmet_install_global', 1)
|
||||||
call s:install_plugin(get(g:, 'user_emmet_mode', 'a'), 0)
|
call s:install_plugin(get(g:, 'user_emmet_mode', 'a'), 0)
|
||||||
|
|||||||
28
unittest.vim
28
unittest.vim
@@ -491,6 +491,10 @@ finish
|
|||||||
'query': "test1\ntest2\ntest3$$$$\\<esc>ggVG\\<c-y>,input[type=input value=$#]*\\<cr>$$$$",
|
'query': "test1\ntest2\ntest3$$$$\\<esc>ggVG\\<c-y>,input[type=input value=$#]*\\<cr>$$$$",
|
||||||
'result': "<input type=\"input\" value=\"test1\">\n<input type=\"input\" value=\"test2\">\n<input type=\"input\" value=\"test3\">",
|
'result': "<input type=\"input\" value=\"test1\">\n<input type=\"input\" value=\"test2\">\n<input type=\"input\" value=\"test3\">",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'query': "test1\ntest2\ntest3$$$$\\<esc>ggVG\\<c-y>,div[id=$#]*\\<cr>$$$$",
|
||||||
|
'result': "<div id=\"test1\"></div>\n<div id=\"test2\"></div>\n<div id=\"test3\"></div>",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'query': "div#id-$*5>div#id2-$",
|
'query': "div#id-$*5>div#id2-$",
|
||||||
'result': "<div id=\"id-1\">\n\t<div id=\"id2-1\"></div>\n</div>\n<div id=\"id-2\">\n\t<div id=\"id2-2\"></div>\n</div>\n<div id=\"id-3\">\n\t<div id=\"id2-3\"></div>\n</div>\n<div id=\"id-4\">\n\t<div id=\"id2-4\"></div>\n</div>\n<div id=\"id-5\">\n\t<div id=\"id2-5\"></div>\n</div>\n",
|
'result': "<div id=\"id-1\">\n\t<div id=\"id2-1\"></div>\n</div>\n<div id=\"id-2\">\n\t<div id=\"id2-2\"></div>\n</div>\n<div id=\"id-3\">\n\t<div id=\"id2-3\"></div>\n</div>\n<div id=\"id-4\">\n\t<div id=\"id2-4\"></div>\n</div>\n<div id=\"id-5\">\n\t<div id=\"id2-5\"></div>\n</div>\n",
|
||||||
@@ -734,6 +738,30 @@ finish
|
|||||||
'query': "{dn$$$$}",
|
'query': "{dn$$$$}",
|
||||||
'result': "{display: none;}",
|
'result': "{display: none;}",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'query': "{p10%$$$$}",
|
||||||
|
'result': "{padding: 10%;}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'query': "{p10p$$$$}",
|
||||||
|
'result': "{padding: 10%;}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'query': "{p10e$$$$}",
|
||||||
|
'result': "{padding: 10em;}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'query': "{p10em$$$$}",
|
||||||
|
'result': "{padding: 10em;}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'query': "{p10re$$$$}",
|
||||||
|
'result': "{padding: 10rem;}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'query': "{p10rem$$$$}",
|
||||||
|
'result': "{padding: 10rem;}",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user