diff --git a/sources_forked/emmet-vim b/sources_forked/emmet-vim new file mode 160000 index 00000000..c523cfd5 --- /dev/null +++ b/sources_forked/emmet-vim @@ -0,0 +1 @@ +Subproject commit c523cfd5e2c58e967fe9ed6169bfdaaf5af515c8 diff --git a/sources_forked/zencoding/.gitignore b/sources_forked/zencoding/.gitignore deleted file mode 100755 index 0a56e3fc..00000000 --- a/sources_forked/zencoding/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/doc/tags diff --git a/sources_forked/zencoding/.gitmodules b/sources_forked/zencoding/.gitmodules deleted file mode 100755 index 8225cc06..00000000 --- a/sources_forked/zencoding/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "docs"] - path = docs - url = git@github.com:mattn/zencoding-vim.git - branch = gh-pages diff --git a/sources_forked/zencoding/Makefile b/sources_forked/zencoding/Makefile deleted file mode 100755 index 94c355a8..00000000 --- a/sources_forked/zencoding/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -all : zencoding-vim.zip - -remove-zip: - -rm doc/tags - -rm zencoding-vim.zip - -zencoding-vim.zip: remove-zip - zip -r zencoding-vim.zip autoload plugin doc - -release: zencoding-vim.zip - vimup update-script zencoding.vim diff --git a/sources_forked/zencoding/README.mkd b/sources_forked/zencoding/README.mkd deleted file mode 100755 index 36eead34..00000000 --- a/sources_forked/zencoding/README.mkd +++ /dev/null @@ -1,103 +0,0 @@ -# ZenCoding-vim - -[zencoding-vim](http://mattn.github.com/zencoding-vim) is vim script support for expanding abbreviation like zen-coding(emmet). - -## Installation - -[Download zip file](http://www.vim.org/scripts/script.php?script_id=2981): - - cd ~/.vim - unzip zencoding-vim.zip - -If you install pathogen.vim: - - cd ~/.vim/bundle # or make directory - unzip /path/to/zencoding-vim.zip - -If you get source from repository: - - cd ~/.vim/bundle # or make directory - git clone http://github.com/mattn/zencoding-vim.git - -or: - - git clone http://github.com/mattn/zencoding-vim.git - cd zencoding-vim - cp plugin/zencoding.vim ~/.vim/plugin/ - cp autoload/zencoding.vim ~/.vim/autoload/ - cp -a autoload/zencoding ~/.vim/autoload/ - - -## Quick Tutorial - -Open or create New File: - - vim index.html - -Type ("_" is the cursor position): - - html:5_ - -Then type "," (Ctrl + y + ','), you should see: - - - - - - - - - _ - - - -[More Tutorials](https://raw.github.com/mattn/zencoding-vim/master/TUTORIAL) - - -## Enable in different mode - -If you don't want enable zencoding in all mode, -you can use set a option in `vimrc`: - - let g:user_zen_mode='n' "only enable normal mode functions. - let g:user_zen_mode='inv' "enable all functions, which is equal to - let g:user_zen_mode='a' "enable all function in all mode. - -## Project Authors - -[Yasuhiro Matsumoto](http://mattn.kaoriya.net/) - -## Links - -### zen-coding official site: - -> - -### zencoding.vim: - -> - -### development repository: - -> - -### my blog posts about zencoding-vim: - -> - -> - -### japanese blog posts about zencoding-vim: - -> - -> - -> - -> - -### tutorial traslated in chinese: - -> - diff --git a/sources_forked/zencoding/TODO b/sources_forked/zencoding/TODO deleted file mode 100755 index e69de29b..00000000 diff --git a/sources_forked/zencoding/TUTORIAL b/sources_forked/zencoding/TUTORIAL deleted file mode 100755 index ad460418..00000000 --- a/sources_forked/zencoding/TUTORIAL +++ /dev/null @@ -1,212 +0,0 @@ -Tutorial of zencoding.vim - - mattn - -1. Expand Abbreviation - - Type abbreviation as 'div>p#foo$*3>a' and type ','. - --------------------- -
-

- -

-

- -

-

- -

-
- --------------------- - -2. Wrap with Abbreviation - - Write as below. - --------------------- - test1 - test2 - test3 - --------------------- - Then do visual select(line wize) and type ','. - If you request 'Tag:', then type 'ul>li*'. - --------------------- -
    -
  • test1
  • -
  • test2
  • -
  • test3
  • -
- --------------------- - - If you type tag as 'blockquote', then you'll see as following. - --------------------- -
- test1 - test2 - test3 -
- --------------------- - -3. Balance Tag Inward - - type 'd' in insert mode. - -4. Balance Tag Outward - - type 'D' in insert mode. - -5. Go to Next Edit Point - - type 'n' in insert mode. - -6. Go to Previous Edit Point - - type 'N' in insert mode. - -7. Update Size - - Move cursor to img tag. - --------------------- - - --------------------- - Type 'i' on img tag - --------------------- - - --------------------- - -8. Merge Lines - - select the lines included '
  • ' - --------------------- -
      -
    • -
    • -
    • -
    - --------------------- - and type 'm' - --------------------- -
      -
    • -
    - --------------------- - -9. Remove Tag - - Move cursor in block - --------------------- - - --------------------- - Type 'k' in insert mode. - --------------------- -
    - -
    - --------------------- - - And type 'k' in there again. - --------------------- - - --------------------- - -10. Split/Join Tag - - Move cursor in block - --------------------- -
    - cursor is here -
    - --------------------- - Type 'j' in insert mode. - --------------------- -
    - --------------------- - - And type 'j' in there again. - --------------------- -
    -
    - --------------------- - -11. Toggle Comment - - Move cursor to block - --------------------- -
    - hello world -
    - --------------------- - Type '/' in insert mode. - --------------------- - - --------------------- - Type '/' in there again. - --------------------- -
    - hello world -
    - --------------------- - -12. Make anchor from URL - - Move cursor to URL - --------------------- - http://www.google.com/ - --------------------- - Type 'a' - --------------------- - Google - --------------------- - -13. Make quoted text from URL - - Move cursor to URL - --------------------- - http://github.com/ - --------------------- - Type 'A' - --------------------- -
    - Secure source code hosting and collaborative development - GitHub
    -

    How does it work? Get up and running in seconds by forking a project, pushing an existing repository...

    - http://github.com/ -
    - --------------------- - -14. Installing zencoding.vim for language you using. - - # cd ~/.vim - # unzip zencoding-vim.zip - - or if you install pathogen.vim: - - # cd ~/.vim/bundle # or make directory - # unzip /path/to/zencoding-vim.zip - - if you get sources from repository: - - # cd ~/.vim/bundle # or make directory - # git clone http://github.com/mattn/zencoding-vim.git - -15. Enable zencoding.vim for language you using. - - You can customize the behavior of language you using. - - --------------------- - # cat >> ~/.vimrc - let g:user_zen_settings = { - \ 'php' : { - \ 'extends' : 'html', - \ 'filters' : 'c', - \ }, - \ 'xml' : { - \ 'extends' : 'html', - \ }, - \ 'haml' : { - \ 'extends' : 'html', - \ }, - \} - --------------------- diff --git a/sources_forked/zencoding/autoload/zencoding.vim b/sources_forked/zencoding/autoload/zencoding.vim deleted file mode 100755 index a6961439..00000000 --- a/sources_forked/zencoding/autoload/zencoding.vim +++ /dev/null @@ -1,1486 +0,0 @@ -"============================================================================= -" zencoding.vim -" Author: Yasuhiro Matsumoto -" Last Change: 09-Apr-2013. - -let s:save_cpo = &cpo -set cpo&vim - -function! zencoding#getExpandos(type, key) - let expandos = zencoding#getResource(a:type, 'expandos', {}) - if has_key(expandos, a:key) - return expandos[a:key] - endif - return a:key -endfunction - -function! zencoding#splitFilterArg(filters) - for f in a:filters - if f =~ '^/' - return f[1:] - endif - endfor - return '' -endfunction - -function! zencoding#useFilter(filters, filter) - for f in a:filters - if a:filter == '/' && f =~ '^/' - return 1 - elseif f == a:filter - return 1 - endif - endfor - return 0 -endfunction - -function! zencoding#getIndentation(...) - if a:0 > 0 - let type = a:1 - else - let type = zencoding#getFileType() - endif - if has_key(s:zen_settings, type) && has_key(s:zen_settings[type], 'indentation') - let indent = s:zen_settings[type].indentation - elseif has_key(s:zen_settings, 'indentation') - let indent = s:zen_settings.indentation - else - let indent = (&l:expandtab || &l:tabstop != &l:shiftwidth) ? repeat(' ', &l:shiftwidth) : "\t" - endif - return indent -endfunction - -function! zencoding#getBaseType(type) - if !has_key(s:zen_settings, a:type) - return '' - endif - if !has_key(s:zen_settings[a:type], 'extends') - return a:type - endif - let extends = s:zen_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 zencoding#getBaseType(ext) - endif - return '' -endfunction - -function! zencoding#isExtends(type, extend) - if a:type == a:extend - return 1 - endif - if !has_key(s:zen_settings, a:type) - return 0 - endif - if !has_key(s:zen_settings[a:type], 'extends') - return 0 - endif - let extends = s:zen_settings[a:type].extends - if type(extends) == 1 - let tmp = split(extends, '\s*,\s*') - unlet! extends - let extends = tmp - endif - for ext in extends - if a:extend == ext - return 1 - endif - endfor - return 0 -endfunction - -function! zencoding#parseIntoTree(abbr, type) - let abbr = a:abbr - let type = a:type - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#parseIntoTree(abbr, type) -endfunction - -function! s:mergeConfig(lhs, rhs) - if type(a:lhs) == 3 && type(a:rhs) == 3 - let a:lhs += a:rhs - if len(a:lhs) - call remove(a:lhs, 0, len(a:lhs)-1) - endif - for rhi in a:rhs - call add(a:lhs, a:rhs[rhi]) - endfor - elseif type(a:lhs) == 4 && type(a:rhs) == 4 - for key in keys(a:rhs) - if type(a:rhs[key]) == 3 - if !has_key(a:lhs, key) - let a:lhs[key] = [] - endif - let a:lhs[key] += a:rhs[key] - elseif type(a:rhs[key]) == 4 - if has_key(a:lhs, key) - call s:mergeConfig(a:lhs[key], a:rhs[key]) - else - let a:lhs[key] = a:rhs[key] - endif - else - let a:lhs[key] = a:rhs[key] - endif - endfor - endif -endfunction - -function! zencoding#toString(...) - let current = a:1 - if a:0 > 1 - let type = a:2 - else - let type = &ft - 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 - - let dollar_expr = zencoding#getResource(type, 'dollar_expr', 1) - let indent = zencoding#getIndentation(type) - let itemno = 0 - let str = '' - let use_pipe_for_cursor = zencoding#getResource(type, 'use_pipe_for_cursor', 1) - let rtype = zencoding#lang#exists(type) ? type : 'html' - while itemno < current.multiplier - if len(current.name) - if group_itemno != 0 - let inner = zencoding#lang#{rtype}#toString(s:zen_settings, current, type, inline, filters, group_itemno, indent) - else - let inner = zencoding#lang#{rtype}#toString(s:zen_settings, current, type, inline, filters, itemno, 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(current.snippet) == 0 - let snippets = zencoding#getResource(type, 'snippets', {}) - if !empty(snippets) && has_key(snippets, 'zensnippet') - let snippet = snippets['zensnippet'] - endif - endif - if len(snippet) > 0 - let tmp = snippet - if use_pipe_for_cursor - let tmp = substitute(tmp, '|', '${cursor}', 'g') - endif - let tmp = substitute(tmp, '\${zenname}', current.name, 'g') - let snippet_node = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 0, 'parent': {}, 'value': '{'.tmp.'}', 'pos': 0, 'important': current.important } - let str = zencoding#lang#{rtype}#toString(s:zen_settings, snippet_node, type, inline, filters, group_itemno, indent) - else - if len(current.name) - let str .= current.name - endif - if len(current.value) - let text = current.value[1:-2] - if dollar_expr - let text = substitute(text, '\%(\\\)\@\{$#}' - endif - if zencoding#useFilter(filters, '/') - let spl = zencoding#splitFilterArg(filters) - let fline = getline(a:firstline) - let query = substitute(query, '>\{0,1}{\$#}\s*$', '{\\$column\\$}*' . len(split(fline, spl)), '') - endif - let items = zencoding#parseIntoTree(query, type).child - for item in items - let expand .= zencoding#toString(item, type, 0, filters) - endfor - if zencoding#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 zencoding#useFilter(filters, 't') - let lpart = substitute(lpart, '^[0-9.-]\+\s\+', '', '') - let lpart = substitute(lpart, '\s\+$', '', '') - endif - if zencoding#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 part = substitute(line, '^\s*', '', '') - for n in range(a:firstline, a:lastline) - if len(leader) > 0 - let str .= getline(n) . "\n" - else - let lpart = substitute(getline(n), '^\s*', '', '') - let str .= lpart . "\n" - endif - endfor - let leader .= (str =~ "\n" ? ">{\n" : "{") . str . "}" - let items = zencoding#parseIntoTree(leader, type).child - else - let save_regcont = @" - let save_regtype = getregtype('"') - silent! normal! gvygv - let str = @" - call setreg('"', save_regcont, save_regtype) - let items = zencoding#parseIntoTree(leader . "{".str."}", type).child - endif - for item in items - let expand .= zencoding#toString(item, type, 0, filters) - endfor - if zencoding#useFilter(filters, 'e') - let expand = substitute(expand, '&', '\&', 'g') - let expand = substitute(expand, '<', '\<', 'g') - let expand = substitute(expand, '>', '\>', '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 zencoding#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 ftype = zencoding#lang#exists(type) ? type : 'html' - let part = zencoding#lang#{ftype}#findTokens(part) - endif - let rest = getline('.')[len(line):] - let str = part - let mx = '|\(\%(html\|haml\|slim\|e\|c\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$' - if str =~ mx - let filters = split(matchstr(str, mx)[1:], '\s*,\s*') - let str = substitute(str, mx, '', '') - endif - let items = zencoding#parseIntoTree(str, rtype).child - for item in items - let expand .= zencoding#toString(item, rtype, 0, filters) - endfor - if zencoding#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 - if len(expand) - if expand !~ '\${cursor}' - if a:mode == 2 | - let expand = '${cursor}' . expand - else - let expand .= '${cursor}' - endif - endif - let expand = substitute(expand, '${lang}', s:zen_settings.lang, 'g') - let expand = substitute(expand, '${charset}', s:zen_settings.charset, 'g') - if has_key(s:zen_settings, 'timezone') && len(s:zen_settings.timezone) - let expand = substitute(expand, '${datetime}', strftime("%Y-%m-%dT%H:%M:%S") . s:zen_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 - if a:mode == 2 && visualmode() ==# 'v' - if a:firstline == a:lastline - let expand = substitute(expand, '\n\s*', '', 'g') - else - let expand = substitute(expand, '\n$', '', 'g') - endif - let expand = substitute(expand, '\${cursor}', '$cursor$', '') - let expand = substitute(expand, '\${cursor}', '', 'g') - 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 - let expand = substitute(expand, '\${cursor}', '$cursor$', '') - let expand = substitute(expand, '\${cursor}', '', 'g') - if line[:-len(part)-1] =~ '^\s\+$' - let indent = line[:-len(part)-1] - else - let indent = '' - endif - let expand = substitute(expand, '\n\s*$', '', 'g') - let expand = line[:-len(part)-1] . substitute(expand, "\n", "\n" . indent, 'g') . rest - let lines = split(expand, '\n') - if a:mode == 2 - silent! exe "normal! gvc" - endif - call setline(line('.'), lines[0]) - if len(lines) > 1 - call append(line('.'), lines[1:]) - endif - endif - endif - if search('\$cursor\$', 'e') - let oldselection = &selection - let &selection = 'inclusive' - silent! foldopen - silent! exe "normal! v7h\"_s" - let &selection = oldselection - endif - if g:zencoding_debug > 1 - call getchar() - endif -endfunction - -function! zencoding#moveNextPrev(flag) - let type = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#moveNextPrev(a:flag) -endfunction - -function! zencoding#imageSize() - let type = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#imageSize() -endfunction - -function! zencoding#encodeImage() - let type = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#encodeImage() -endfunction - -function! zencoding#toggleComment() - let type = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#toggleComment() -endfunction - -function! zencoding#balanceTag(flag) range - let type = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#balanceTag(a:flag) -endfunction - -function! zencoding#splitJoinTag() - let type = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#splitJoinTag() -endfunction - -function! zencoding#mergeLines() range - 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! zencoding#removeTag() - let type = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - return zencoding#lang#{rtype}#removeTag() -endfunction - -function! zencoding#anchorizeURL(flag) - 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 !zencoding#util#cursorInRegion(block) - return - endif - - let mx = '.*]*>\s*\zs\([^<]\+\)\ze\s*<\/title[^>]*>.*' - let content = zencoding#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 = zencoding#getFileType() - let rtype = zencoding#lang#exists(type) ? type : 'html' - if a:flag == 0 - let a = zencoding#lang#html#parseTag('') - let a.attr.href = url - let a.value = '{' . title . '}' - let expand = zencoding#toString(a, rtype, 0, []) - let expand = substitute(expand, '\${cursor}', '', 'g') - else - let body = zencoding#util#getTextFromHTML(content) - let body = '{' . substitute(body, '^\(.\{0,100}\).*', '\1', '') . '...}' - - let blockquote = zencoding#lang#html#parseTag('
    ') - let a = zencoding#lang#html#parseTag('') - let a.attr.href = url - let a.value = '{' . title . '}' - call add(blockquote.child, a) - call add(blockquote.child, zencoding#lang#html#parseTag('
    ')) - let p = zencoding#lang#html#parseTag('

    ') - let p.value = body - call add(blockquote.child, p) - let cite = zencoding#lang#html#parseTag('') - let cite.value = '{' . url . '}' - call add(blockquote.child, cite) - let expand = zencoding#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 zencoding#util#setContent(block, expand) -endfunction - -function! zencoding#codePretty() range - let type = input('FileType: ', &ft, 'filetype') - if len(type) == 0 - return - endif - let block = zencoding#util#getVisualBlock() - let content = zencoding#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, ']*>[\s\n]*\zs.*\ze') - call zencoding#util#setContent(block, content) -endfunction - -function! zencoding#ExpandWord(abbr, type, orig) - let mx = '|\(\%(html\|haml\|slim\|e\|c\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$' - let str = a:abbr - let type = a:type - - if len(type) == 0 | let type = 'html' | endif - if str =~ mx - let filters = split(matchstr(str, mx)[1:], '\s*,\s*') - let str = substitute(str, mx, '', '') - elseif has_key(s:zen_settings[a:type], 'filters') - let filters = split(s:zen_settings[a:type].filters, '\s*,\s*') - else - let filters = ['html'] - endif - let items = zencoding#parseIntoTree(str, a:type).child - let expand = '' - for item in items - let expand .= zencoding#toString(item, a:type, 0, filters) - endfor - if zencoding#useFilter(filters, 'e') - let expand = substitute(expand, '&', '\&', 'g') - let expand = substitute(expand, '<', '\<', 'g') - let expand = substitute(expand, '>', '\>', 'g') - endif - if a:orig == 0 - let expand = substitute(expand, '\${lang}', s:zen_settings.lang, 'g') - let expand = substitute(expand, '\${charset}', s:zen_settings.charset, 'g') - let expand = substitute(expand, '\${cursor}', '', 'g') - endif - return expand -endfunction - -function! zencoding#getSnippets(type) - let type = a:type - if len(type) == 0 || !has_key(s:zen_settings, type) - let type = 'html' - endif - return zencoding#getResource(type, 'snippets', {}) -endfunction - -function! zencoding#CompleteTag(findstart, base) - 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 = zencoding#getFileType() - let res = [] - - let snippets = zencoding#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 = zencoding#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:zen_settings -let s:zen_settings = { -\ 'lang': "en", -\ 'charset': "UTF-8", -\ 'css': { -\ 'snippets': { -\ '@i': '@import url(|);', -\ '@m': "@media print {\n\t|\n}", -\ '@f': "@font-face {\n\tfont-family:|;\n\tsrc:url(|);\n}", -\ '!': '!important', -\ 'pos': 'position:|;', -\ '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:|;', -\ 'fl:n': 'float:none;', -\ 'fl:l': 'float:left;', -\ 'fl:r': 'float:right;', -\ 'cl': 'clear:|;', -\ 'cl:n': 'clear:none;', -\ 'cl:l': 'clear:left;', -\ 'cl:r': 'clear:right;', -\ 'cl:b': 'clear:both;', -\ 'd': 'display:|;', -\ 'd:n': 'display:none;', -\ 'd:b': 'display:block;', -\ 'd:i': 'display:inline;', -\ 'd:ib': 'display:inline-block;', -\ '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:|;', -\ 'v:v': 'visibility:visible;', -\ 'v:h': 'visibility:hidden;', -\ 'v:c': 'visibility:collapse;', -\ 'ov': 'overflow:|;', -\ 'ov:v': 'overflow:visible;', -\ 'ov:h': 'overflow:hidden;', -\ 'ov:s': 'overflow:scroll;', -\ 'ov:a': 'overflow:auto;', -\ 'ovx': 'overflow-x:|;', -\ 'ovx:v': 'overflow-x:visible;', -\ 'ovx:h': 'overflow-x:hidden;', -\ 'ovx:s': 'overflow-x:scroll;', -\ 'ovx:a': 'overflow-x:auto;', -\ 'ovy': 'overflow-y:|;', -\ 'ovy:v': 'overflow-y:visible;', -\ 'ovy:h': 'overflow-y:hidden;', -\ 'ovy:s': 'overflow-y:scroll;', -\ 'ovy:a': 'overflow-y:auto;', -\ 'ovs': 'overflow-style:|;', -\ '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;', -\ 'cp': 'clip:|;', -\ 'cp:a': 'clip:auto;', -\ 'cp:r': 'clip:rect(|);', -\ 'bxz': 'box-sizing:|;', -\ 'bxz:cb': 'box-sizing:content-box;', -\ 'bxz:bb': 'box-sizing:border-box;', -\ 'bxsh': 'box-shadow:|;', -\ 'bxsh:n': 'box-shadow:none;', -\ 'bxsh:w': '-webkit-box-shadow:0 0 0 #000;', -\ 'bxsh:m': '-moz-box-shadow:0 0 0 0 #000;', -\ 'm': 'margin:|;', -\ 'm:a': 'margin:auto;', -\ 'm:0': 'margin:0;', -\ 'm:2': 'margin:0 0;', -\ 'm:3': 'margin:0 0 0;', -\ 'm:4': 'margin:0 0 0 0;', -\ '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:|;', -\ 'p:0': 'padding:0;', -\ 'p:2': 'padding:0 0;', -\ 'p:3': 'padding:0 0 0;', -\ 'p:4': 'padding:0 0 0 0;', -\ '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:|;', -\ 'o': 'outline:|;', -\ 'o:n': 'outline:none;', -\ 'oo': 'outline-offset:|;', -\ 'ow': 'outline-width:|;', -\ 'os': 'outline-style:|;', -\ 'oc': 'outline-color:#000;', -\ 'oc:i': 'outline-color:invert;', -\ 'bd': 'border:|;', -\ 'bd+': 'border:1px solid #000;', -\ 'bd:n': 'border:none;', -\ 'bdbk': 'border-break:|;', -\ 'bdbk:c': 'border-break:close;', -\ 'bdcl': 'border-collapse:|;', -\ 'bdcl:c': 'border-collapse:collapse;', -\ 'bdcl:s': 'border-collapse:separate;', -\ 'bdc': 'border-color:#000;', -\ 'bdi': 'border-image:url(|);', -\ 'bdi:n': 'border-image:none;', -\ 'bdi:w': '-webkit-border-image:url(|) 0 0 0 0 stretch stretch;', -\ 'bdi:m': '-moz-border-image:url(|) 0 0 0 0 stretch stretch;', -\ '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:|;', -\ '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;', -\ 'bdl': 'border-left:|;', -\ 'bdl: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:|;', -\ 'bdt': 'border-top:|;', -\ 'bdt+': 'border-top:1px solid #000;', -\ 'bdt:n': 'border-top:none;', -\ 'bdtw': 'border-top-width:|;', -\ 'bdts': 'border-top-style:|;', -\ 'bdts:n': 'border-top-style:none;', -\ 'bdtc': 'border-top-color:#000;', -\ 'bdr': 'border-right:|;', -\ 'bdr+': 'border-right:1px solid #000;', -\ 'bdr:n': 'border-right:none;', -\ 'bdrw': 'border-right-width:|;', -\ 'bdrt': 'border-right-style:|;', -\ 'bdrs:n': 'border-right-style:none;', -\ 'bdrc': 'border-right-color:#000;', -\ 'bdb': 'border-bottom:|;', -\ 'bdb+': 'border-bottom:1px solid #000;', -\ 'bdb:n': 'border-bottom:none;', -\ 'bdbw': 'border-bottom-width:|;', -\ 'bdbs': 'border-bottom-style:|;', -\ 'bdbs:n': 'border-bottom-style:none;', -\ 'bdbc': 'border-bottom-color:#000;', -\ 'bdln': 'border-length:|;', -\ 'bdl+': 'border-left:1px solid #000;', -\ 'bdl:n': 'border-left:none;', -\ 'bdlw': 'border-left-width:|;', -\ 'bdls': 'border-left-style:|;', -\ 'bdls:n': 'border-left-style:none;', -\ 'bdlc': 'border-left-color:#000;', -\ 'bdrs': 'border-radius:|;', -\ 'bdtrrz': 'border-top-right-radius:|;', -\ 'bdtlrz': 'border-top-left-radius:|;', -\ 'bdbrrz': 'border-bottom-right-radius:|;', -\ 'bdblrz': 'border-bottom-left-radius:|;', -\ 'bdrz:w': '-webkit-border-radius:|;', -\ 'bdrz:m': '-moz-border-radius:|;', -\ 'bg': 'background:|;', -\ 'bg+': 'background:#FFF url(|) 0 0 no-repeat;', -\ 'bg:n': 'background:none;', -\ 'bg:ie': 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=''|x.png'');', -\ 'bgc': 'background-color:#FFF;', -\ '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;', -\ 'bga': 'background-attachment:|;', -\ 'bga:f': 'background-attachment:fixed;', -\ 'bga:s': 'background-attachment:scroll;', -\ 'bgp': 'background-position:0 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:|;', -\ '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;', -\ 'bgz': 'background-size:|;', -\ 'bgz:a': 'background-size:auto;', -\ 'bgz:ct': 'background-size:contain;', -\ 'bgz:cv': 'background-size:cover;', -\ 'c': 'color:#000;', -\ '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:|;', -\ '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:|;', -\ 'ta:l': 'text-align:left;', -\ 'ta:c': 'text-align:center;', -\ 'ta:r': 'text-align:right;', -\ 'tal': '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:|;', -\ '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;', -\ 'to': 'text-outline:|;', -\ 'to+': 'text-outline:0 0 #000;', -\ 'to:n': 'text-outline:none;', -\ 'tr': 'text-replace:|;', -\ 'tr:n': 'text-replace:none;', -\ 'tt': 'text-transform:|;', -\ '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:|;', -\ 'tsh+': 'text-shadow:0 0 0 #000;', -\ 'tsh:n': 'text-shadow:none;', -\ '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:l': 'word-break:loose;', -\ 'wob:bs': 'word-break:break-strict;', -\ '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;', -\ 'lts': 'letter-spacing:|;', -\ 'f': 'font:|;', -\ 'f+': 'font:1em 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:|;', -\ '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;', -\ '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:ie': 'filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);', -\ 'op:ms': '-ms-filter:''progid:DXImageTransform.Microsoft.Alpha(Opacity=100)'';', -\ 'rz': 'resize:|;', -\ 'rz:n': 'resize:none;', -\ 'rz:b': 'resize:both;', -\ 'rz:h': 'resize:horizontal;', -\ 'rz:v': 'resize:vertical;', -\ 'cur': 'cursor:|;', -\ '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;', -\ '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:|;', -\ 'wid': 'widows:|;' -\ }, -\ 'filters': 'fc' -\ }, -\ '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', -\ }, -\ 'html': { -\ 'snippets': { -\ 'cc:ie6': "", -\ 'cc:ie': "", -\ 'cc:noie': "\n\t${child}|\n", -\ 'html:4t': "\n" -\ ."\n" -\ ."\n" -\ ."\t\n" -\ ."\t\n" -\ ."\n" -\ ."\n\t${child}|\n\n" -\ ."", -\ 'html:4s': "\n" -\ ."\n" -\ ."\n" -\ ."\t\n" -\ ."\t\n" -\ ."\n" -\ ."\n\t${child}|\n\n" -\ ."", -\ 'html:xt': "\n" -\ ."\n" -\ ."\n" -\ ."\t\n" -\ ."\t\n" -\ ."\n" -\ ."\n\t${child}|\n\n" -\ ."", -\ 'html:xs': "\n" -\ ."\n" -\ ."\n" -\ ."\t\n" -\ ."\t\n" -\ ."\n" -\ ."\n\t${child}|\n\n" -\ ."", -\ 'html:xxs': "\n" -\ ."\n" -\ ."\n" -\ ."\t\n" -\ ."\t\n" -\ ."\n" -\ ."\n\t${child}|\n\n" -\ ."", -\ 'html:5': "\n" -\ ."\n" -\ ."\n" -\ ."\t\n" -\ ."\t\n" -\ ."\n" -\ ."\n\t${child}|\n\n" -\ ."" -\ }, -\ 'default_attributes': { -\ 'a': {'href': ''}, -\ 'a:link': {'href': 'http://|'}, -\ 'a:mail': {'href': 'mailto:|'}, -\ 'abbr': {'title': ''}, -\ 'acronym': {'title': ''}, -\ 'base': {'href': ''}, -\ 'bdo': {'dir': ''}, -\ 'bdo:r': {'dir': 'rtl'}, -\ 'bdo:l': {'dir': 'ltr'}, -\ 'del': {'datetime': '${datetime}'}, -\ 'ins': {'datetime': '${datetime}'}, -\ 'link:css': [{'rel': 'stylesheet'}, {'type': 'text/css'}, {'href': '|style.css'}, {'media': 'all'}], -\ 'link:print': [{'rel': 'stylesheet'}, {'type': 'text/css'}, {'href': '|print.css'}, {'media': 'print'}], -\ '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'}], -\ 'meta:utf': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=UTF-8'}], -\ 'meta:win': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=Win-1251'}], -\ 'meta:compat': [{'http-equiv': 'X-UA-Compatible'}, {'content': 'IE=7'}], -\ 'style': {'type': 'text/css'}, -\ 'script': {'type': 'text/javascript'}, -\ 'script:src': [{'type': 'text/javascript'}, {'src': ''}], -\ 'img': [{'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': ''}], -\ '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: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': ''}], -\ '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', -\ 'bq': 'blockquote', -\ 'acr': 'acronym', -\ 'fig': 'figure', -\ 'ifr': 'iframe', -\ 'emb': 'embed', -\ 'obj': 'object', -\ 'src': 'source', -\ 'cap': 'caption', -\ 'colg': 'colgroup', -\ 'fst': 'fieldset', -\ 'btn': 'button', -\ 'optg': 'optgroup', -\ 'opt': 'option', -\ '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' -\ }, -\ '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' -\ }, -\ '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,select,small,span,strike,strong,sub,sup,textarea,tt,u,var', -\ 'empty_element_suffix': ' />' -\ }, -\ 'htmldjango': { -\ 'extends': 'html', -\ }, -\ 'html.django_template': { -\ 'extends': 'html', -\ }, -\ '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' -\ } -\ }, -\ '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" -\ }, -\ }, -\ '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" -\ }, -\ }, -\ 'xhtml': { -\ 'extends': 'html' -\ }, -\ 'mustache': { -\ 'extends': 'html' -\ }, -\ 'xsd': { -\ 'extends': 'html', -\ 'snippets': { -\ 'xsd:w3c': "\n" -\ ."\n" -\ ."\t\n" -\ ."\n" -\ } -\ } -\} - -if exists('g:user_zen_settings') - call s:mergeConfig(s:zen_settings, g:user_zen_settings) -endif - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim:set et: diff --git a/sources_forked/zencoding/autoload/zencoding/lang.vim b/sources_forked/zencoding/autoload/zencoding/lang.vim deleted file mode 100755 index a9735991..00000000 --- a/sources_forked/zencoding/autoload/zencoding/lang.vim +++ /dev/null @@ -1,11 +0,0 @@ -let s:exists = {} -function zencoding#lang#exists(type) - if len(a:type) == 0 - return 0 - elseif has_key(s:exists, a:type) - return s:exists[a:type] - endif - let s:exists[a:type] = len(globpath(&rtp, 'autoload/zencoding/lang/'.a:type.'.vim')) > 0 - return s:exists[a:type] -endfunction - diff --git a/sources_forked/zencoding/autoload/zencoding/lang/css.vim b/sources_forked/zencoding/autoload/zencoding/lang/css.vim deleted file mode 100755 index 5b1c1182..00000000 --- a/sources_forked/zencoding/autoload/zencoding/lang/css.vim +++ /dev/null @@ -1,228 +0,0 @@ -function! zencoding#lang#css#findTokens(str) - return substitute(a:str, '^.*[;{]\s*', '', '') -endfunction - -function! zencoding#lang#css#parseIntoTree(abbr, type) - let abbr = a:abbr - let type = a:type - let prefix = 0 - let value = '' - - let settings = zencoding#getSettings() - let indent = zencoding#getIndentation(type) - - let root = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0 } - - " emmet - let tokens = split(abbr, '+\ze[^)!]') - for n in range(len(tokens)) - 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\)*\)$') - if len(prop) - let token = substitute(prop[1], '^(\(.*\))', '\1', '') - if token =~ '^-' - let prefix = 1 - let token = token[1:] - endif - let value = '' - for v in split(prop[2], '\d\zs-') - if len(value) > 0 - let value .= ' ' - endif - if token =~ '^[z]' - " TODO - let value .= substitute(v, '[^0-9.]*$', '', '') - elseif v =~ 'p$' - let value .= substitute(v, 'p$', '%', '') - elseif v =~ 'e$' - let value .= substitute(v, 'e$', 'em', '') - elseif v =~ '\.' - let value .= v . 'em' - elseif v == 'auto' - let value .= v - else - let value .= v . 'px' - endif - endfor - endif - - let tag_name = token - if tag_name =~ '.!$' - let tag_name = tag_name[:-2] - let important = 1 - else - let important = 0 - endif - " make default node - let current = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': important } - let current.name = tag_name - - " aliases - let aliases = zencoding#getResource(type, 'aliases', {}) - if has_key(aliases, tag_name) - let current.name = aliases[tag_name] - endif - let use_pipe_for_cursor = zencoding#getResource(type, 'use_pipe_for_cursor', 1) - - " snippets - let snippets = zencoding#getResource(type, 'snippets', {}) - if !empty(snippets) && has_key(snippets, tag_name) - let snippet = snippets[tag_name] - if use_pipe_for_cursor - let snippet = substitute(snippet, '|', '${cursor}', 'g') - endif - let lines = split(snippet, "\n") - call map(lines, 'substitute(v:val, "\\( \\|\\t\\)", escape(indent, "\\\\"), "g")') - let current.snippet = join(lines, "\n") - let current.name = '' - let current.snippet = substitute(current.snippet, ';', value . ';', '') - if use_pipe_for_cursor && len(value) > 0 && stridx(value, '${cursor}') == -1 - let current.snippet = substitute(current.snippet, '${cursor}', '', 'g') . '${cursor}' - endif - if n < len(tokens) - 1 - let current.snippet .= "\n" - endif - endif - - let current.pos = 0 - let lg = matchlist(token, '^\%(linear-gradient\|lg\)(\s*\(\w\+\)\s*,\s*\([^,]\+\)\s*,\s*\([^)]\+\)\s*)$') - if len(lg) - let current.name = '' - let current.snippet = printf("background-image: -webkit-gradient(%s, 0 0, 0 100%, from(%s), to(%s));\n", lg[1], lg[2], lg[3]) - call add(root.child, deepcopy(current)) - let current.snippet = printf("background-image: -webkit-linear-gradient(%s, %s);\n", lg[2], lg[3]) - call add(root.child, deepcopy(current)) - let current.snippet = printf("background-image: -moz-linear-gradient(%s, %s);\n", lg[2], lg[3]) - call add(root.child, deepcopy(current)) - let current.snippet = printf("background-image: -o-linear-gradient(%s, %s);\n", lg[2], lg[3]) - call add(root.child, deepcopy(current)) - let current.snippet = printf("background-image: linear-gradient(%s, %s);\n", lg[2], lg[3]) - call add(root.child, deepcopy(current)) - elseif prefix - let snippet = current.snippet - let current.snippet = '-webkit-' . snippet . "\n" - call add(root.child, deepcopy(current)) - let current.snippet = '-moz-' . snippet . "\n" - call add(root.child, deepcopy(current)) - let current.snippet = snippet - call add(root.child, current) - else - call add(root.child, current) - endif - endfor - return root -endfunction - -function! zencoding#lang#css#toString(settings, current, type, inline, filters, itemno, indent) - let current = a:current - let value = current.value[1:-2] - if zencoding#useFilter(a:filters, 'fc') - let value = substitute(value, '\([^:]\+\):\([^;]*;\)', '\1: \2', 'g') - else - let value = substitute(value, '\([^:]\+\):\([^;]*;\)', '\1:\2', 'g') - endif - if current.important - let value = substitute(value, ';', ' !important;', '') - endif - return value -endfunction - -function! zencoding#lang#css#imageSize() -endfunction - -function! zencoding#lang#css#encodeImage() -endfunction - -function! zencoding#lang#css#parseTag(tag) - return {} -endfunction - -function! zencoding#lang#css#toggleComment() - let line = getline('.') - let mx = '^\(\s*\)/\*\s*\(.*\)\s*\*/\s*$' - if line =~ '{\s*$' - let block = zencoding#util#searchRegion('/\*', '\*/\zs') - if zencoding#util#regionIsValid(block) - let content = zencoding#util#getContent(block) - let content = substitute(content, '/\*\s\(.*\)\s\*/', '\1', '') - call zencoding#util#setContent(block, content) - else - let node = expand('') - if len(node) - exe "normal ciw\='/* '.node.' */'\" - endif - endif - else - if line =~ mx - let space = substitute(matchstr(line, mx), mx, '\1', '') - let line = substitute(matchstr(line, mx), mx, '\2', '') - let line = space . substitute(line, '^\s*\|\s*$', '\1', 'g') - else - let mx = '^\(\s*\)\(.*\)\s*$' - let line = substitute(line, mx, '\1/* \2 */', '') - endif - call setline('.', line) - endif -endfunction - -function! zencoding#lang#css#balanceTag(flag) range - if a:flag == -2 || a:flag == 2 - let curpos = [0, line("'<"), col("'<"), 0] - else - let curpos = getpos('.') - endif - let block = zencoding#util#getVisualBlock() - if !zencoding#util#regionIsValid(block) - if a:flag > 0 - let block = zencoding#util#searchRegion('^', ';') - if zencoding#util#regionIsValid(block) - call zencoding#util#selectRegion(block) - return - endif - endif - else - if a:flag > 0 - let content = zencoding#util#getContent(block) - if content !~ '^{.*}$' - let block = zencoding#util#searchRegion('{', '}') - if zencoding#util#regionIsValid(block) - call zencoding#util#selectRegion(block) - return - endif - endif - else - let pos = searchpos('.*;', 'nW') - if pos[0] != 0 - call setpos('.', [0, pos[0], pos[1], 0]) - let block = zencoding#util#searchRegion('^', ';') - if zencoding#util#regionIsValid(block) - call zencoding#util#selectRegion(block) - return - endif - endif - endif - endif - if a:flag == -2 || a:flag == 2 - silent! exe "normal! gv" - else - call setpos('.', curpos) - endif -endfunction - -function! zencoding#lang#css#moveNextPrev(flag) - let pos = search('""\|()\|\(:\s*\zs$\)', a:flag ? 'Wbp' : 'Wp') - if pos == 2 - startinsert! - else - silent! normal! l - startinsert - endif -endfunction - -function! zencoding#lang#css#splitJoinTag() - " nothing to do -endfunction - -function! zencoding#lang#css#removeTag() - " nothing to do -endfunction diff --git a/sources_forked/zencoding/autoload/zencoding/lang/haml.vim b/sources_forked/zencoding/autoload/zencoding/lang/haml.vim deleted file mode 100755 index be421c1c..00000000 --- a/sources_forked/zencoding/autoload/zencoding/lang/haml.vim +++ /dev/null @@ -1,310 +0,0 @@ -function! zencoding#lang#haml#findTokens(str) - return zencoding#lang#html#findTokens(a:str) -endfunction - -function! zencoding#lang#haml#parseIntoTree(abbr, type) - return zencoding#lang#html#parseIntoTree(a:abbr, a:type) -endfunction - -function! zencoding#lang#haml#toString(settings, current, type, inline, filters, itemno, indent) - 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 = a:indent - let dollar_expr = zencoding#getResource(type, 'dollar_expr', 1) - let str = "" - - let comment_indent = '' - let comment = '' - 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 current.attrs_order - if !has_key(current.attr, attr) - continue - endif - let val = current.attr[attr] - 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 | let tmp .= ',' | endif - let val = substitute(val, '\${cursor}', '', '') - let tmp .= ' :' . attr . ' => "' . val . '"' - endif - endfor - if len(tmp) - let str .= '{' . tmp . ' }' - endif - if stridx(','.settings.html.empty_elements.',', ','.current_name.',') != -1 && len(current.value) == 0 - let str .= "/" - endif - - let inner = '' - if len(current.value) > 0 - let text = current.value[1:-2] - if dollar_expr - let text = substitute(text, '\%(\\\)\@\ 0 - for child in current.child - let inner .= zencoding#toString(child, type, inline, filters, itemno) - 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, '\%(\\\)\@\\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! zencoding#lang#haml#toggleComment() - 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! zencoding#lang#haml#balanceTag(flag) range - let block = zencoding#util#getVisualBlock() - if a:flag == -2 || a:flag == 2 - let curpos = [0, line("'<"), col("'<"), 0] - else - let curpos = getpos('.') - endif - let n = curpos[1] - let ml = len(matchstr(getline(n), '^\s*')) - - if a:flag > 0 - if a:flag == 1 || !zencoding#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! zencoding#lang#haml#moveNextPrev(flag) - let pos = search('""', a:flag ? 'Wb' : 'W') - if pos != 0 - silent! normal! l - startinsert - endif -endfunction - -function! zencoding#lang#haml#splitJoinTag() - 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 = zencoding#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! zencoding#lang#haml#removeTag() - 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 diff --git a/sources_forked/zencoding/autoload/zencoding/lang/html.vim b/sources_forked/zencoding/autoload/zencoding/lang/html.vim deleted file mode 100755 index d7a1e634..00000000 --- a/sources_forked/zencoding/autoload/zencoding/lang/html.vim +++ /dev/null @@ -1,692 +0,0 @@ -let s:mx = '\([+>]\|[<^]\+\)\{-}\s*' -\ .'\((*\)\{-}\s*' -\ .'\([@#.]\{-}[a-zA-Z\!][a-zA-Z0-9:_\!\-$]*\|{\%([^$}]\+\|\$#\|\${\w\+}\|\$\+\)*}[ \t\r\n}]*\)' -\ .'\(' -\ .'\%(' -\ .'\%(#{[{}a-zA-Z0-9_\-\$]\+\|#[a-zA-Z0-9_\-\$]\+\)' -\ .'\|\%(\[[^\]]\+\]\)' -\ .'\|\%(\.{[{}a-zA-Z0-9_\-\$]\+\|\.[a-zA-Z0-9_\-\$]\+\)' -\ .'\)*' -\ .'\)' -\ .'\%(\({\%([^$}]\+\|\$#\|\${\w\+}\|\$\+\)*}\)\)\{0,1}' -\ .'\%(\*\([0-9]\+\)\)\{0,1}' -\ .'\(\%()\%(\*[0-9]\+\)\{0,1}\)*\)' - -function! zencoding#lang#html#findTokens(str) - let str = a:str - let [pos, last_pos] = [0, 0] - while 1 - let tag = matchstr(str, '<[a-zA-Z].\{-}>', pos) - if len(tag) == 0 - break - endif - let pos = stridx(str, tag, pos) + len(tag) - endwhile - let last_pos = pos - while len(str) > 0 - let token = matchstr(str, s:mx, pos) - if token == '' - break - endif - if token =~ '^\s' - let token = matchstr(token, '^\s*\zs.*') - let last_pos = stridx(str, token, pos) - endif - let pos = stridx(str, token, pos) + len(token) - endwhile - return a:str[last_pos :-1] -endfunction - -function! zencoding#lang#html#parseIntoTree(abbr, type) - let abbr = a:abbr - let type = a:type - - let settings = zencoding#getSettings() - if !has_key(settings, type) - let type = 'html' - endif - if len(type) == 0 | let type = 'html' | endif - - let settings = zencoding#getSettings() - let indent = zencoding#getIndentation(type) - - " try 'foo' to (foo-x) - let rabbr = zencoding#getExpandos(type, abbr) - if rabbr == abbr - " try 'foo+(' to (foo-x) - let rabbr = substitute(abbr, '\%(+\|^\)\([a-zA-Z][a-zA-Z0-9+]\+\)+\([(){}>]\|$\)', '\="(".zencoding#getExpandos(type, submatch(1)).")".submatch(2)', 'i') - endif - let abbr = rabbr - - let root = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'] } - let parent = root - let last = root - let pos = [] - while len(abbr) - " parse line - let match = matchstr(abbr, s:mx) - let str = substitute(match, s:mx, '\0', 'ig') - let operator = substitute(match, s:mx, '\1', 'ig') - let block_start = substitute(match, s:mx, '\2', 'ig') - let tag_name = substitute(match, s:mx, '\3', 'ig') - let attributes = substitute(match, s:mx, '\4', 'ig') - let value = substitute(match, s:mx, '\5', 'ig') - let multiplier = 0 + substitute(match, s:mx, '\6', 'ig') - let block_end = substitute(match, s:mx, '\7', 'ig') - let important = 0 - if len(str) == 0 - break - endif - if tag_name =~ '^#' - let attributes = tag_name . attributes - let tag_name = 'div' - endif - if tag_name =~ '.!$' - let tag_name = tag_name[:-2] - let important = 1 - endif - if tag_name =~ '^\.' - let attributes = tag_name . attributes - let tag_name = 'div' - endif - if multiplier <= 0 | let multiplier = 1 | endif - - " make default node - let current = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'] } - let current.name = tag_name - - let current.important = important - - " aliases - let aliases = zencoding#getResource(type, 'aliases', {}) - if has_key(aliases, tag_name) - let current.name = aliases[tag_name] - endif - - let use_pipe_for_cursor = zencoding#getResource(type, 'use_pipe_for_cursor', 1) - - " snippets - let snippets = zencoding#getResource(type, 'snippets', {}) - if !empty(snippets) && has_key(snippets, tag_name) - let snippet = snippets[tag_name] - if use_pipe_for_cursor - let snippet = substitute(snippet, '|', '${cursor}', 'g') - endif - let lines = split(snippet, "\n") - call map(lines, 'substitute(v:val, "\\( \\|\\t\\)", escape(indent, "\\\\"), "g")') - let current.snippet = join(lines, "\n") - let current.name = '' - endif - - " default_attributes - let default_attributes = zencoding#getResource(type, 'default_attributes', {}) - if !empty(default_attributes) - for pat in [current.name, tag_name] - if has_key(default_attributes, pat) - if type(default_attributes[pat]) == 4 - let a = default_attributes[pat] - let current.attrs_order += keys(a) - if use_pipe_for_cursor - for k in keys(a) - let current.attr[k] = len(a[k]) ? substitute(a[k], '|', '${cursor}', 'g') : '${cursor}' - endfor - else - for k in keys(a) - let current.attr[k] = a[k] - endfor - endif - else - for a in default_attributes[pat] - let current.attrs_order += keys(a) - if use_pipe_for_cursor - for k in keys(a) - let current.attr[k] = len(a[k]) ? substitute(a[k], '|', '${cursor}', 'g') : '${cursor}' - endfor - else - for k in keys(a) - let current.attr[k] = a[k] - endfor - endif - endfor - endif - if has_key(settings.html.default_attributes, current.name) - let current.name = substitute(current.name, ':.*$', '', '') - endif - break - endif - endfor - endif - - " parse attributes - if len(attributes) - let attr = attributes - while len(attr) - let item = matchstr(attr, '\(\%(\%(#[{}a-zA-Z0-9_\-\$]\+\)\|\%(\[[^\]]\+\]\)\|\%(\.[{}a-zA-Z0-9_\-\$]\+\)*\)\)') - if len(item) == 0 - break - endif - if item[0] == '#' - let current.attr.id = item[1:] - endif - if item[0] == '.' - let current.attr.class = substitute(item[1:], '\.', ' ', 'g') - endif - if item[0] == '[' - let atts = item[1:-2] - while len(atts) - let amat = matchstr(atts, '\(\w\+\%(="[^"]*"\|=''[^'']*''\|[^ ''"\]]*\)\{0,1}\)') - if len(amat) == 0 - break - endif - let key = split(amat, '=')[0] - let val = amat[len(key)+1:] - if val =~ '^["'']' - let val = val[1:-2] - endif - let current.attr[key] = val - if index(current.attrs_order, key) == -1 - let current.attrs_order += [key] - endif - let atts = atts[stridx(atts, amat) + len(amat):] - endwhile - endif - let attr = substitute(strpart(attr, len(item)), '^\s*', '', '') - endwhile - endif - - " parse text - if tag_name =~ '^{.*}$' - let current.name = '' - let current.value = tag_name - else - let current.value = value - endif - let current.multiplier = multiplier - - " parse step inside/outside - if !empty(last) - if operator =~ '>' - unlet! parent - let parent = last - let current.parent = last - let current.pos = last.pos + 1 - else - let current.parent = parent - let current.pos = last.pos - endif - else - let current.parent = parent - let current.pos = 1 - endif - if operator =~ '[<^]' - for c in range(len(operator)) - let tmp = parent.parent - if empty(tmp) - break - endif - let parent = tmp - let current.parent = tmp - endfor - endif - - call add(parent.child, current) - let last = current - - " parse block - if block_start =~ '(' - if operator =~ '>' - let last.pos += 1 - endif - for n in range(len(block_start)) - let pos += [last.pos] - endfor - endif - if block_end =~ ')' - for n in split(substitute(substitute(block_end, ' ', '', 'g'), ')', ',),', 'g'), ',') - if n == ')' - if len(pos) > 0 && last.pos >= pos[-1] - for c in range(last.pos - pos[-1]) - let tmp = parent.parent - if !has_key(tmp, 'parent') - break - endif - let parent = tmp - endfor - if len(pos) > 0 - call remove(pos, -1) - endif - let last = parent - let last.pos += 1 - endif - elseif len(n) - let cl = last.child - let cls = [] - for c in range(n[1:]) - let cls += cl - endfor - let last.child = cls - endif - endfor - endif - let abbr = abbr[stridx(abbr, match) + len(match):] - - if g:zencoding_debug > 1 - echomsg "str=".str - echomsg "block_start=".block_start - echomsg "tag_name=".tag_name - echomsg "operator=".operator - echomsg "attributes=".attributes - echomsg "value=".value - echomsg "multiplier=".multiplier - echomsg "block_end=".block_end - echomsg "abbr=".abbr - echomsg "pos=".string(pos) - echomsg "---" - endif - endwhile - return root -endfunction - -function! zencoding#lang#html#toString(settings, current, type, inline, filters, itemno, indent) - 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 = a:indent - let dollar_expr = zencoding#getResource(type, 'dollar_expr', 1) - - if zencoding#useFilter(filters, 'haml') - return zencoding#lang#haml#toString(settings, current, type, inline, filters, itemno, indent) - endif - if zencoding#useFilter(filters, 'slim') - return zencoding#lang#slim#toString(settings, current, type, inline, filters, itemno, indent) - endif - - let comment = '' - let current_name = current.name - if dollar_expr - let current_name = substitute(current_name, '\$$', itemno+1, '') - endif - - let str = '' - if len(current_name) == 0 - let text = current.value[1:-2] - if dollar_expr - let text = substitute(text, '\%(\\\)\@\ 0 - let str .= '<' . current_name - for attr in current.attrs_order - if !has_key(current.attr, attr) - continue - endif - let val = current.attr[attr] - 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 str .= ' ' . attr . '="' . val . '"' - if zencoding#useFilter(filters, 'c') - if attr == 'id' | let comment .= '#' . val | endif - if attr == 'class' | let comment .= '.' . val | endif - endif - endfor - if len(comment) > 0 - let str = "\n" . str - endif - if stridx(','.settings.html.empty_elements.',', ','.current_name.',') != -1 - let str .= settings.html.empty_element_suffix - else - let str .= ">" - let text = current.value[1:-2] - if dollar_expr - let text = substitute(text, '\%(\\\)\@\ 0 - for n in range(nc) - let child = current.child[n] - if child.multiplier > 1 - let str .= "\n" . indent - let dr = 1 - elseif len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1 - if nc > 1 || (len(child.name) > 0 && stridx(','.settings.html.inline_elements.',', ','.child.name.',') == -1) - let str .= "\n" . indent - let dr = 1 - elseif current.multiplier == 1 && nc == 1 && len(child.name) == 0 - let str .= "\n" . indent - let dr = 1 - endif - endif - let inner = zencoding#toString(child, type, 0, filters, itemno) - let inner = substitute(inner, "^\n", "", 'g') - let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g') - let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g') - let str .= inner - endfor - else - let str .= '${cursor}' - endif - if dr - let str .= "\n" - endif - let str .= "" - endif - if len(comment) > 0 - let str .= "\n" - endif - if len(current_name) > 0 && current.multiplier > 0 || stridx(','.settings.html.block_elements.',', ','.current_name.',') != -1 - let str .= "\n" - endif - return str -endfunction - -function! zencoding#lang#html#imageSize() - let img_region = zencoding#util#searchRegion('') - if !zencoding#util#regionIsValid(img_region) || !zencoding#util#cursorInRegion(img_region) - return - endif - let content = zencoding#util#getContent(img_region) - if content !~ '^<]\+>$' - return - endif - let current = zencoding#lang#html#parseTag(content) - 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] = zencoding#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 html = substitute(zencoding#toString(current, 'html', 1), '\n', '', '') - let html = substitute(html, '\${cursor}', '', '') - call zencoding#util#setContent(img_region, html) -endfunction - -function! zencoding#lang#html#encodeImage() - let img_region = zencoding#util#searchRegion('') - if !zencoding#util#regionIsValid(img_region) || !zencoding#util#cursorInRegion(img_region) - return - endif - let content = zencoding#util#getContent(img_region) - if content !~ '^<]\+>$' - return - endif - let current = zencoding#lang#html#parseTag(content) - if empty(current) || !has_key(current.attr, 'src') - return - endif - let fn = current.attr.src - if fn !~ '^\(/\|http\)' - let fn = simplify(expand('%:h') . '/' . fn) - endif - - let [width, height] = zencoding#util#getImageSize(fn) - if width == -1 && height == -1 - return - endif - let current.attr.width = width - let current.attr.height = height - let html = zencoding#toString(current, 'html', 1) - call zencoding#util#setContent(img_region, html) -endfunction - -function! zencoding#lang#html#parseTag(tag) - let current = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'attrs_order': [] } - let mx = '<\([a-zA-Z][a-zA-Z0-9]*\)\(\%(\s[a-zA-Z][a-zA-Z0-9]\+=\%([^"'' \t]\+\|"[^"]\{-}"\|''[^'']\{-}''\)\s*\)*\)\(/\{0,1}\)>' - let match = matchstr(a:tag, mx) - let current.name = substitute(match, mx, '\1', 'i') - let attrs = substitute(match, mx, '\2', 'i') - let mx = '\([a-zA-Z0-9]\+\)=\%(\([^"'' \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! zencoding#lang#html#toggleComment() - let orgpos = getpos('.') - let curpos = getpos('.') - let mx = '<\%#[^>]*>' - while 1 - let block = zencoding#util#searchRegion('') - if zencoding#util#regionIsValid(block) - let block[1][1] += 2 - let content = zencoding#util#getContent(block) - let content = substitute(content, '^$', '\1', '') - call zencoding#util#setContent(block, content) - silent! call setpos('.', orgpos) - return - endif - let block = zencoding#util#searchRegion('<[^>]', '>') - if !zencoding#util#regionIsValid(block) - let pos1 = searchpos('<', 'bcW') - if pos1[0] == 0 && pos1[1] == 0 - return - endif - let curpos = getpos('.') - continue - endif - let pos1 = block[0] - let pos2 = block[1] - let content = zencoding#util#getContent(block) - let tag_name = matchstr(content, '^<\zs/\{0,1}[^ \r\n>]\+') - if tag_name[0] == '/' - call setpos('.', [0, pos1[0], pos1[1], 0]) - let pos2 = searchpairpos('<'. tag_name[1:] . '>', '', '', 'bnW') - let pos1 = searchpos('>', 'cneW') - let block = [pos2, pos1] - elseif tag_name =~ '/$' - if !zencoding#util#pointInRegion(orgpos[1:2], block) - " it's broken tree - call setpos('.', orgpos) - let block = zencoding#util#searchRegion('>', '<') - let content = '><' - call zencoding#util#setContent(block, content) - silent! call setpos('.', orgpos) - return - endif - else - call setpos('.', [0, pos2[0], pos2[1], 0]) - let pos2 = searchpairpos('<'. tag_name . '>', '', '', 'nW') - call setpos('.', [0, pos2[0], pos2[1], 0]) - let pos2 = searchpos('>', 'neW') - let block = [pos1, pos2] - endif - if !zencoding#util#regionIsValid(block) - silent! call setpos('.', orgpos) - return - endif - if zencoding#util#pointInRegion(curpos[1:2], block) - let content = '' - call zencoding#util#setContent(block, content) - silent! call setpos('.', orgpos) - return - endif - endwhile -endfunction - -function! zencoding#lang#html#balanceTag(flag) range - let vblock = zencoding#util#getVisualBlock() - if a:flag == -2 || a:flag == 2 - let curpos = [0, line("'<"), col("'<"), 0] - else - let curpos = getpos('.') - endif - let settings = zencoding#getSettings() - - if a:flag > 0 - let mx = '<\([a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' - while 1 - let pos1 = searchpos(mx, 'bW') - let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) - let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze') - if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1 - let pos2 = searchpos('>', 'nW') - else - let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '\zs', 'nW') - endif - let block = [pos1, pos2] - if pos1[0] == 0 && pos1[1] == 0 - break - endif - if zencoding#util#pointInRegion(curpos[1:2], block) && zencoding#util#regionIsValid(block) - call zencoding#util#selectRegion(block) - return - endif - endwhile - else - let mx = '<\([a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' - while 1 - let pos1 = searchpos(mx, 'W') - if pos1 == curpos[1:2] - let pos1 = searchpos(mx . '\zs', 'W') - let pos2 = searchpos('.\ze<', 'W') - let block = [pos1, pos2] - if zencoding#util#regionIsValid(block) - call zencoding#util#selectRegion(block) - return - endif - endif - let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) - let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze') - if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1 - let pos2 = searchpos('>', 'nW') - else - let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '\zs', 'nW') - endif - let block = [pos1, pos2] - if pos1[0] == 0 && pos1[1] == 0 - break - endif - if zencoding#util#regionIsValid(block) - call zencoding#util#selectRegion(block) - return - endif - endwhile - endif - call setpos('.', curpos) - if a:flag == -2 || a:flag == 2 - silent! exe "normal! gv" - endif -endfunction - -function! zencoding#lang#html#moveNextPrev(flag) - let pos = search('\%(<\/\|\(""\)\|^\(\s*\)$', a:flag ? 'Wpb' : 'Wp') - if pos == 3 - startinsert! - elseif pos != 0 - silent! normal! l - startinsert - endif -endfunction - -function! zencoding#lang#html#splitJoinTag() - let curpos = getpos('.') - while 1 - let mx = '<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' - let pos1 = searchpos(mx, 'bcnW') - let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) - let tag_name = substitute(content, '^<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\).*$', '\1', '') - let block = [pos1, [pos1[0], pos1[1] + len(content) - 1]] - if content[-2:] == '/>' && zencoding#util#cursorInRegion(block) - let content = content[:-3] . ">' - call zencoding#util#setContent(block, content) - call setpos('.', [0, block[0][0], block[0][1], 0]) - return - else - if tag_name[0] == '/' - let pos1 = searchpos('<' . tag_name[1:] . '[^a-zA-Z0-9]', 'bcnW') - call setpos('.', [0, pos1[0], pos1[1], 0]) - let pos2 = searchpos('', 'cneW') - else - let pos2 = searchpos('', 'cneW') - endif - let block = [pos1, pos2] - let content = zencoding#util#getContent(block) - if zencoding#util#pointInRegion(curpos[1:2], block) && content[1:] !~ '<' . tag_name . '[^a-zA-Z0-9]*[^>]*>' - let content = matchstr(content, mx)[:-2] . '/>' - call zencoding#util#setContent(block, content) - call setpos('.', [0, block[0][0], block[0][1], 0]) - return - else - if block[0][0] > 0 - call setpos('.', [0, block[0][0]-1, block[0][1], 0]) - else - call setpos('.', curpos) - return - endif - endif - endif - endwhile -endfunction - -function! zencoding#lang#html#removeTag() - let curpos = getpos('.') - while 1 - let mx = '<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' - let pos1 = searchpos(mx, 'bcnW') - let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) - let tag_name = substitute(content, '^<\(/\{0,1}[a-zA-Z0-9:_\-]*\).*$', '\1', '') - let block = [pos1, [pos1[0], pos1[1] + len(content) - 1]] - if content[-2:] == '/>' && zencoding#util#cursorInRegion(block) - call zencoding#util#setContent(block, '') - call setpos('.', [0, block[0][0], block[0][1], 0]) - return - else - if tag_name[0] == '/' - let pos1 = searchpos('<' . tag_name[1:] . '[^a-zA-Z0-9]', 'bcnW') - call setpos('.', [0, pos1[0], pos1[1], 0]) - let pos2 = searchpos('', 'cneW') - else - let pos2 = searchpos('', 'cneW') - endif - let block = [pos1, pos2] - let content = zencoding#util#getContent(block) - if zencoding#util#pointInRegion(curpos[1:2], block) && content[1:] !~ '<' . tag_name . '[^a-zA-Z0-9]*[^>]*>' - call zencoding#util#setContent(block, '') - call setpos('.', [0, block[0][0], block[0][1], 0]) - return - else - if block[0][0] > 0 - call setpos('.', [0, block[0][0]-1, block[0][1], 0]) - else - call setpos('.', curpos) - return - endif - endif - endif - endwhile -endfunction diff --git a/sources_forked/zencoding/autoload/zencoding/lang/sass.vim b/sources_forked/zencoding/autoload/zencoding/lang/sass.vim deleted file mode 100755 index 6b89b893..00000000 --- a/sources_forked/zencoding/autoload/zencoding/lang/sass.vim +++ /dev/null @@ -1,158 +0,0 @@ -function! zencoding#lang#sass#findTokens(str) - return zencoding#lang#html#findTokens(a:str) -endfunction - -function! zencoding#lang#sass#parseIntoTree(abbr, type) - if a:abbr =~ '>' - return zencoding#lang#html#parseIntoTree(a:abbr, a:type) - else - return zencoding#lang#css#parseIntoTree(a:abbr, a:type) - endif -endfunction - -function! zencoding#lang#sass#toString(settings, current, type, inline, filters, itemno, indent) - 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 = a:indent - let str = "" - - let current_name = current.name - let current_name = substitute(current.name, '\$$', itemno+1, '') - if len(current.name) > 0 - let str .= current_name - let tmp = '' - for attr in keys(current.attr) - let val = current.attr[attr] - while val =~ '\$\([^#{]\|$\)' - let val = substitute(val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') - endwhile - let attr = substitute(attr, '\$$', itemno+1, '') - if attr == 'id' - let str .= '#' . val - elseif attr == 'class' - let str .= '.' . val - else - let tmp .= attr . ': ' . val - endif - endfor - if len(tmp) > 0 - let str .= "\n" - for line in split(tmp, "\n") - let str .= indent . line . "\n" - endfor - else - let str .= "\n" - endif - - let inner = '' - for child in current.child - let inner .= zencoding#toString(child, type, inline, filters, itemno) - endfor - let inner = substitute(inner, "\n", "\n" . indent, 'g') - let inner = substitute(inner, "\n" . indent . "$", "", 'g') - let str .= indent . inner - else - let text = zencoding#lang#css#toString(settings, current, type, inline, filters, itemno, indent) - let text = substitute(text, '\${cursor}', '', 'g') - let text = substitute(text, '\s*;$', '', '') - return text - endif - return str -endfunction - -function! zencoding#lang#sass#imageSize() -endfunction - -function! zencoding#lang#sass#encodeImage() -endfunction - -function! zencoding#lang#sass#parseTag(tag) -endfunction - -function! zencoding#lang#sass#toggleComment() -endfunction - -function! zencoding#lang#sass#balanceTag(flag) range - let block = zencoding#util#getVisualBlock() - if a:flag == -2 || a:flag == 2 - let curpos = [0, line("'<"), col("'<"), 0] - else - let curpos = getpos('.') - endif - let n = curpos[1] - let ml = len(matchstr(getline(n), '^\s*')) - - if a:flag > 0 - if a:flag == 1 || !zencoding#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! zencoding#lang#sass#moveNextPrev(flag) - let pos = search('""\|\(^\s*|\s*\zs\)', a:flag ? 'Wpb' : 'Wp') - if pos == 2 - startinsert! - elseif pos != 0 - silent! normal! l - startinsert - endif -endfunction - -function! zencoding#lang#sass#splitJoinTag() -endfunction - -function! zencoding#lang#sass#removeTag() -endfunction diff --git a/sources_forked/zencoding/autoload/zencoding/lang/scss.vim b/sources_forked/zencoding/autoload/zencoding/lang/scss.vim deleted file mode 100755 index 39890af2..00000000 --- a/sources_forked/zencoding/autoload/zencoding/lang/scss.vim +++ /dev/null @@ -1,121 +0,0 @@ -function! zencoding#lang#scss#findTokens(str) - return zencoding#lang#html#findTokens(a:str) -endfunction - -function! zencoding#lang#scss#parseIntoTree(abbr, type) - if a:abbr =~ '>' - return zencoding#lang#html#parseIntoTree(a:abbr, a:type) - else - return zencoding#lang#css#parseIntoTree(a:abbr, a:type) - endif -endfunction - -function! zencoding#lang#scss#toString(settings, current, type, inline, filters, itemno, indent) - 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 = a:indent - let str = "" - - let current_name = substitute(current.name, '\$$', itemno+1, '') - if len(current.name) > 0 - let str .= current_name - let tmp = '' - for attr in keys(current.attr) - let val = current.attr[attr] - while val =~ '\$\([^#{]\|$\)' - let val = substitute(val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') - endwhile - let attr = substitute(attr, '\$$', itemno+1, '') - if attr == 'id' - let str .= '#' . val - elseif attr == 'class' - let str .= '.' . val - else - let tmp .= attr . ': ' . val . ';' - endif - endfor - if len(tmp) > 0 - let str .= " {\n" - for line in split(tmp, "\n") - let str .= indent . line . "\n" - endfor - else - let str .= " {\n" - endif - - let inner = '' - for child in current.child - let inner .= zencoding#toString(child, type, inline, filters, itemno) - endfor - let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g') - let inner = substitute(inner, "\n" . escape(indent, '\') . "$", "", 'g') - let str .= indent . inner . "\n}\n" - else - return zencoding#lang#css#toString(settings, current, type, inline, filters, itemno, indent) - endif - return str -endfunction - -function! zencoding#lang#scss#imageSize() - call zencoding#lang#css#imageSize() -endfunction - -function! zencoding#lang#scss#encodeImage() - return zencoding#lang#css#encodeImage() -endfunction - -function! zencoding#lang#scss#parseTag(tag) - return zencoding#lang#css#parseTag(a:tag) -endfunction - -function! zencoding#lang#scss#toggleComment() - call zencoding#lang#css#toggleComment() -endfunction - -function! zencoding#lang#scss#balanceTag(flag) range - if a:flag == -2 || a:flag == 2 - let curpos = [0, line("'<"), col("'<"), 0] - call setpos('.', curpos) - else - let curpos = getpos('.') - endif - if a:flag < 0 - let ret = searchpair('}', '', '.\zs{') - else - let ret = searchpair('{', '', '}', 'bW') - endif - if ret > 0 - let pos1 = getpos('.')[1:2] - if a:flag < 0 - let pos2 = searchpairpos('{', '', '}') - else - let pos2 = searchpairpos('{', '', '}') - endif - let block = [pos1, pos2] - if zencoding#util#regionIsValid(block) - call zencoding#util#selectRegion(block) - return - endif - endif - if a:flag == -2 || a:flag == 2 - silent! exe "normal! gv" - else - call setpos('.', curpos) - endif -endfunction - -function! zencoding#lang#scss#moveNextPrev(flag) - call zencoding#lang#css#moveNextPrev(a:flag) -endfunction - -function! zencoding#lang#scss#splitJoinTag() - call zencoding#lang#css#splitJoinTag() -endfunction - -function! zencoding#lang#scss#removeTag() - call zencoding#lang#ss#removeTag() -endfunction diff --git a/sources_forked/zencoding/autoload/zencoding/lang/slim.vim b/sources_forked/zencoding/autoload/zencoding/lang/slim.vim deleted file mode 100755 index 15bc968c..00000000 --- a/sources_forked/zencoding/autoload/zencoding/lang/slim.vim +++ /dev/null @@ -1,276 +0,0 @@ -function! zencoding#lang#slim#findTokens(str) - return zencoding#lang#html#findTokens(a:str) -endfunction - -function! zencoding#lang#slim#parseIntoTree(abbr, type) - return zencoding#lang#html#parseIntoTree(a:abbr, a:type) -endfunction - -function! zencoding#lang#slim#toString(settings, current, type, inline, filters, itemno, indent) - 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 = a:indent - let dollar_expr = zencoding#getResource(type, 'dollar_expr', 1) - let str = "" - - let comment_indent = '' - let comment = '' - 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 - for attr in current.attrs_order - if !has_key(current.attr, attr) - continue - endif - let val = current.attr[attr] - if dollar_expr - while val =~ '\$\([^#{]\|$\)' - let val = substitute(val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') - endwhile - endif - let attr = substitute(attr, '\$$', itemno+1, '') - let str .= ' ' . attr . '="' . val . '"' - endfor - - let inner = '' - if len(current.value) > 0 - let str .= "\n" - let text = current.value[1:-2] - if dollar_expr - let text = substitute(text, '\%(\\\)\@\ 0 - for child in current.child - let inner .= zencoding#toString(child, type, inline, filters, itemno) - 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, '\%(\\\)\@\ 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! zencoding#lang#slim#toggleComment() - let line = getline('.') - let space = matchstr(line, '^\s*') - if line =~ '^\s*/' - call setline('.', space . line[len(space)+1:]) - elseif line =~ '^\s*[a-z]' - call setline('.', space . '/' . line[len(space):]) - endif -endfunction - -function! zencoding#lang#slim#balanceTag(flag) range - let block = zencoding#util#getVisualBlock() - if a:flag == -2 || a:flag == 2 - let curpos = [0, line("'<"), col("'<"), 0] - else - let curpos = getpos('.') - endif - let n = curpos[1] - let ml = len(matchstr(getline(n), '^\s*')) - - if a:flag > 0 - if a:flag == 1 || !zencoding#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! zencoding#lang#slim#moveNextPrev(flag) - let pos = search('""\|\(^\s*|\s*\zs\)', a:flag ? 'Wpb' : 'Wp') - if pos == 2 - startinsert! - elseif pos != 0 - silent! normal! l - startinsert - endif -endfunction - -function! zencoding#lang#slim#splitJoinTag() - let n = line('.') - while n > 0 - if getline(n) =~ '^\s*\ze[a-z]' - let sn = n - let n += 1 - if getline(n) =~ '^\s*|' - while n <= line('$') - if getline(n) !~ '^\s*|' - break - endif - exe n "delete" - endwhile - call setpos('.', [0, sn, 1, 0]) - else - let spaces = matchstr(getline(sn), '^\s*') - call append(sn, spaces . ' | ') - call setpos('.', [0, sn+1, 1, 0]) - startinsert! - endif - break - endif - let n -= 1 - endwhile -endfunction - -function! zencoding#lang#slim#removeTag() - 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 diff --git a/sources_forked/zencoding/autoload/zencoding/util.vim b/sources_forked/zencoding/autoload/zencoding/util.vim deleted file mode 100755 index 5a028c97..00000000 --- a/sources_forked/zencoding/autoload/zencoding/util.vim +++ /dev/null @@ -1,249 +0,0 @@ -"============================================================================== -" region utils -"============================================================================== -" deleteContent : delete content in region -" if region make from between '' and '' -" -------------------- -" begin: -" :end -" -------------------- -" this function make the content as following -" -------------------- -" begin::end -" -------------------- -function! zencoding#util#deleteContent(region) - let lines = getline(a:region[0][0], a:region[1][0]) - call setpos('.', [0, a:region[0][0], a:region[0][1], 0]) - silent! exe "delete ".(a:region[1][0] - a:region[0][0]) - call setline(line('.'), lines[0][:a:region[0][1]-2] . lines[-1][a:region[1][1]]) -endfunction - -" change_content : change content in region -" if region make from between '' and '' -" -------------------- -" begin: -" :end -" -------------------- -" and content is -" -------------------- -" foo -" bar -" baz -" -------------------- -" this function make the content as following -" -------------------- -" begin:foo -" bar -" baz:end -" -------------------- -function! zencoding#util#setContent(region, content) - let newlines = split(a:content, '\n', 1) - let oldlines = getline(a:region[0][0], a:region[1][0]) - call setpos('.', [0, a:region[0][0], a:region[0][1], 0]) - silent! exe "delete ".(a:region[1][0] - a:region[0][0]) - if len(newlines) == 0 - let tmp = '' - if a:region[0][1] > 1 - let tmp = oldlines[0][:a:region[0][1]-2] - endif - if a:region[1][1] >= 1 - let tmp .= oldlines[-1][a:region[1][1]:] - endif - call setline(line('.'), tmp) - elseif len(newlines) == 1 - if a:region[0][1] > 1 - let newlines[0] = oldlines[0][:a:region[0][1]-2] . newlines[0] - endif - if a:region[1][1] >= 1 - let newlines[0] .= oldlines[-1][a:region[1][1]:] - endif - call setline(line('.'), newlines[0]) - else - if a:region[0][1] > 1 - let newlines[0] = oldlines[0][:a:region[0][1]-2] . newlines[0] - endif - if a:region[1][1] >= 1 - let newlines[-1] .= oldlines[-1][a:region[1][1]:] - endif - call setline(line('.'), newlines[0]) - call append(line('.'), newlines[1:]) - endif -endfunction - -" select_region : select region -" this function make a selection of region -function! zencoding#util#selectRegion(region) - call setpos('.', [0, a:region[1][0], a:region[1][1], 0]) - normal! v - call setpos('.', [0, a:region[0][0], a:region[0][1], 0]) -endfunction - -" point_in_region : check point is in the region -" this function return 0 or 1 -function! zencoding#util#pointInRegion(point, region) - if !zencoding#util#regionIsValid(a:region) | return 0 | endif - if a:region[0][0] > a:point[0] | return 0 | endif - if a:region[1][0] < a:point[0] | return 0 | endif - if a:region[0][0] == a:point[0] && a:region[0][1] > a:point[1] | return 0 | endif - if a:region[1][0] == a:point[0] && a:region[1][1] < a:point[1] | return 0 | endif - return 1 -endfunction - -" cursor_in_region : check cursor is in the region -" this function return 0 or 1 -function! zencoding#util#cursorInRegion(region) - if !zencoding#util#regionIsValid(a:region) | return 0 | endif - let cur = getpos('.')[1:2] - return zencoding#util#pointInRegion(cur, a:region) -endfunction - -" region_is_valid : check region is valid -" this function return 0 or 1 -function! zencoding#util#regionIsValid(region) - if a:region[0][0] == 0 || a:region[1][0] == 0 | return 0 | endif - return 1 -endfunction - -" search_region : make region from pattern which is composing start/end -" this function return array of position -function! zencoding#util#searchRegion(start, end) - return [searchpairpos(a:start, '', a:end, 'bcnW'), searchpairpos(a:start, '\%#', a:end, 'nW')] -endfunction - -" get_content : get content in region -" this function return string in region -function! zencoding#util#getContent(region) - if !zencoding#util#regionIsValid(a:region) - return '' - endif - let lines = getline(a:region[0][0], a:region[1][0]) - if a:region[0][0] == a:region[1][0] - let lines[0] = lines[0][a:region[0][1]-1:a:region[1][1]-1] - else - let lines[0] = lines[0][a:region[0][1]-1:] - let lines[-1] = lines[-1][:a:region[1][1]-1] - endif - return join(lines, "\n") -endfunction - -" region_in_region : check region is in the region -" this function return 0 or 1 -function! zencoding#util#regionInRegion(outer, inner) - if !zencoding#util#regionIsValid(a:inner) || !zencoding#util#regionIsValid(a:outer) - return 0 - endif - return zencoding#util#pointInRegion(a:inner[0], a:outer) && zencoding#util#pointInRegion(a:inner[1], a:outer) -endfunction - -" get_visualblock : get region of visual block -" this function return region of visual block -function! zencoding#util#getVisualBlock() - return [[line("'<"), col("'<")], [line("'>"), col("'>")]] -endfunction - -"============================================================================== -" html utils -"============================================================================== -function! zencoding#util#getContentFromURL(url) - let res = system(printf("%s %s", g:zencoding_curl_command, shellescape(substitute(a:url, '#.*', '', '')))) - let s1 = len(split(res, '?')) - let utf8 = iconv(res, 'utf-8', &encoding) - let s2 = len(split(utf8, '?')) - return (s2 == s1 || s2 >= s1 * 2) ? utf8 : res -endfunction - -function! zencoding#util#getTextFromHTML(buf) - let threshold_len = 100 - let threshold_per = 0.1 - let buf = a:buf - - let buf = strpart(buf, stridx(buf, '')) - let buf = substitute(buf, ']*>.\{-}', '', 'g') - let buf = substitute(buf, ']*>.\{-}', '', 'g') - let res = '' - let max = 0 - let mx = '\(]\{-}>\)\|\(<\/td>\)\|\(]\{-}>\)\|\(<\/div>\)' - let m = split(buf, mx) - for str in m - let c = split(str, '<[^>]*?>') - let str = substitute(str, '<[^>]\{-}>', ' ', 'g') - let str = substitute(str, '>', '>', 'g') - let str = substitute(str, '<', '<', 'g') - let str = substitute(str, '"', '"', 'g') - let str = substitute(str, ''', "'", 'g') - let str = substitute(str, ' ', ' ', 'g') - let str = substitute(str, '¥', '\¥', 'g') - let str = substitute(str, '&', '\&', 'g') - let str = substitute(str, '^\s*\(.*\)\s*$', '\1', '') - let str = substitute(str, '\s\+', ' ', 'g') - let l = len(str) - if l > threshold_len - let per = (l+0.0) / len(c) - if max < l && per > threshold_per - let max = l - let res = str - endif - endif - endfor - let res = substitute(res, '^\s*\(.*\)\s*$', '\1', 'g') - return res -endfunction - -function! zencoding#util#getImageSize(fn) - let fn = a:fn - - if zencoding#util#isImageMagickInstalled() - return zencoding#util#imageSizeWithImageMagick(fn) - endif - - if filereadable(fn) - let hex = substitute(system('xxd -p "'.fn.'"'), '\n', '', 'g') - else - let hex = substitute(system(g:zencoding_curl_command.' "'.fn.'" | xxd -p'), '\n', '', 'g') - endif - - let [width, height] = [-1, -1] - if hex =~ '^89504e470d0a1a0a' - let width = eval('0x'.hex[32:39]) - let height = eval('0x'.hex[40:47]) - endif - if hex =~ '^ffd8' - let pos = 4 - while pos < len(hex) - let bs = hex[pos+0:pos+3] - let pos += 4 - if bs == 'ffc0' || bs == 'ffc2' - let pos += 6 - let height = eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3]) - let pos += 4 - let width = eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3]) - break - elseif bs =~ 'ffd[9a]' - break - elseif bs =~ 'ff\(e[0-9a-e]\|fe\|db\|dd\|c4\)' - let pos += (eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3])) * 2 - endif - endwhile - endif - if hex =~ '^47494638' - let width = eval('0x'.hex[14:15].hex[12:13]) - let height = eval('0x'.hex[18:19].hex[16:17]) - endif - - return [width, height] -endfunction - -function! zencoding#util#imageSizeWithImageMagick(fn) - let img_info = system('identify -format "%wx%h" "'.a:fn.'"') - let img_size = split(substitute(img_info, '\n', '', ''), 'x') - let width = img_size[0] - let height = img_size[1] - return [width, height] -endfunction - -function! zencoding#util#isImageMagickInstalled() - if !get(s:, 'zencoding_use_identify', 1) - return 0 - endif - return executable('identify') -endfunction diff --git a/sources_forked/zencoding/doc/zencoding.txt b/sources_forked/zencoding/doc/zencoding.txt deleted file mode 100755 index ee453283..00000000 --- a/sources_forked/zencoding/doc/zencoding.txt +++ /dev/null @@ -1,438 +0,0 @@ -*zencoding.txt* ZenCoding for Vim - - ------------------------------------------------------- - ZenCoding: vim plugins for HTML and CSS hi-speed coding - ------------------------------------------------------- - -Author: Yasuhiro Matsumoto -WebSite: http://mattn.kaoriya.net/ -Repository: http://github.com/mattn/zencoding-vim -Site: http://mattn.github.com/zencoding-vim -License: BSD style license - -============================================================================== -CONTENTS *zencoding-contents* - -Introduction |zencoding-introduction| -Install |zencoding-install| -Tutorial |zencoding-tutorial| - 1. Expand Abbreviation |zencoding-expandabbr| - 2. Wrap with Abbreviation |zencoding-wrap-wtih-abbreviation| - 3. Balance Tag Inward |zencoding-balance-tag-inward| - 4. Balance Tag Outward |zencoding-balance-tag-outward| - 5. Go to Next Edit Point |zencoding-goto-next-point| |n| - 6. Go to Previous Edit Point |zencoding-goto-previous-point| - 7. Update Size |zencoding-update-image-size| - 8. Merge Lines |zencoding-merge-lines| - 9. Remove Tag |zencoding-remove-tag| - 10. Split/Join Tag |zencoding-split-join-tag| - 11. Toggle Comment |zencoding-toggle-comment| - 12. Make anchor from URL |zencoding-make-anchor-url| - 13. Make quoted text from URL |zencoding-quoted-text-url| - 14. Code Pretty |zencoding-code-pretty| -Customize |zencoding-customize| - 1. Key Mappings |zencoding-customize-keymappings| - 2. Indent Size |zencoding-indent-size| - 3. Define Tag's Behavior |zencoding-define-tags-behavior| - 4. Complete Tag |zencoding-complete-tag| -Links |zencoding-links| -ToDo |zencoding-todo| - -============================================================================== -INTRODUCTION *zencoding-introduction* *zencoding* - -|ZenCoding| is an editor plugin for high-speed HTML, XML, XSL (or any other -structured code format) coding and editing. The core of this plugin is a -powerful abbreviation engine which allows you to expand expressions?similar to -CSS selectors?into HTML code: -> - div#page>div.logo+ul#navigation>li*5>a -< -...can be expanded into: -> -

    - - -
    -< -Read more about current Zen Coding syntax - http://code.google.com/p/zen-coding/wiki/ZenHTMLSelectorsEn - -Abbreviation engine has a modular structure which allows you to expand -abbreviations into different languages. Zen Coding currently supports CSS, -HTML, XML/XSL and HAML, Slim languages via filters. - -============================================================================== -INSTALL *zencoding-install* - -Install the distributed files into Vim runtime directory which is usually -~/.vim/, or $HOME/vimfiles on Windows. - -If you install pathogen that provided from Tim Pope, you should extract the -file into 'bundle' directory. - -============================================================================== -TUTORIAL *zencoding-tutorial* - -If you are seeing this file as :help, then you can't edit this file. -You should copy this section and create new buffer, paste and write as -'zencoding-tutor.txt'. Formally, open the file to start tutorial. - -1. Expand Abbreviation *zencoding-expandabbr* *,* - - Type abbreviation as 'div>p#foo$*3>a' and type |,|. -> -
    -

    - -

    -

    - -

    -

    - -

    -
    -< -2. Wrap with Abbreviation *zencoding-wrap-wtih-abbreviation* *v_,* - - Write as below. -> - test1 - test2 - test3 -< - Then do visual select(line wize) and type |,|. - If you request 'Tag:', then type 'ul>li*'. -> -
      -
    • test1
    • -
    • test2
    • -
    • test3
    • -
    -< - If you type tag as 'blockquote', then you'll see as following. -> -
    - test1 - test2 - test3 -
    -< -3. Balance Tag Inward *zencoding-balance-tag-inward* *d* - - To select inward of ul tag, type |d| in insert mode. -> -
      - *
    • -
    • -
    • -
    -< - If cursor is at '*', |d| select from begin of
      to end of
    . - If cursor is at first of
  • , it select
  • . - -4. Balance Tag Outward *zencoding-balance-tag-outward* *D* - - To select outward of ul tag, insert mode, type D in insert mode. -> -
      - *
    • -
    • -
    • -
    -< - If cursor is at '*', |D| select from next letter of
      to previous - letter of
    . - If cursor is at first of
  • , it select
  • . - -5. Go to Next Edit Point *zencoding-goto-next-point* *n* - - To jump next point that need to edit, type |n| in insert mode. -> - *
    foo
    -
  • -< - If cursor is at '*', |n| move a cursor into attribute value of div - specified id as 'foo'. And type again |n| move a cursor into inner of - div specified id as 'bar'. - -6. Go to Previous Edit Point *zencoding-goto-previous-point* *N* - - To jump previous point that need to edit, type |N| in insert mode. -> -
    foo
    -
    * -< - If cursor is at '*', |N| move a cursor into div specified id as 'bar'. - And type again |N| move a cursor into attribute value of 'foo'. - -7. Update Size *zencoding-update-image-size* *i* - - To expand or update size of image, type |i| on img tag -> - -< - Type 'i' on img tag -> - -< - If you change image, then type it again. it will be following. -> - -< -8. Merge Lines *zencoding-merge-lines* - - To join multi line text like following, type |J|. -> -
      -
    • -
    • -
    • -
    -< - If you select part of line include
  • and type |m|, it will be - following. -> -
      -
    • -
    -< -9. Remove Tag *zencoding-remove-tag* *k* - - To remove tag in the block, type |k|. -> - -< - Type |k| in insert mode, then -> -
    - -
    -< - And type |k| in there again, then div will be removed. - -10. Split/Join Tag *zencoding-split-join-tag* *j* - - To join block, type |j|. -> -
    - cursor is here -
    -< - Type |j| in insert mode. then, -> -
    -< - And type |j| in there again. -> -
    -
    -< -11. Toggle Comment *zencoding-toggle-comment* */* - - Move cursor to block -> -
    - hello world -
    -< - Type '/' in insert mode. -> - -< - Type '/' in there again. -> -
    - hello world -
    -< -12. Make anchor from URL *zencoding-make-anchor-url* *a* - - Move cursor to URL -> - http://www.google.com/ -< - Type |a| -> - Google -< -13. Make quoted text from URL *zencoding-quoted-text-url* *A* - - Move cursor to URL -> - http://github.com/ -< - Type |A| -> -
    - Secure source code hosting and collaborative development - GitHub
    -

    How does it work? Get up and running in seconds by forking a project, pushing an existing repository...

    - http://github.com/ -
    -< -14. Code Pretty *zencoding-code-pretty* *c* - - Select code block, for example select following code from "int main()". -> -

    Writing in C language

    - - int main() { - puts("hello world"); - } -< - Type |c| -> -

    Writing in C language

    - - int main() {
    -   puts("hello world");
    - }
    -< -============================================================================== -CUSTOMIZE *zencoding-customize* - -1. Key Mapping *zencoding-customize-keymappings* - - To specify leading key for expanding or balance tag, or for all, - Add this line in your vimrc: > -> - let g:user_zen_leader_key = '' -< - Or if you prefer to map for each actions, then you set each variables. - - 'user_zen_expandabbr_key' - 'user_zen_expandword_key' - 'user_zen_balancetaginward_key' - 'user_zen_balancetagoutward_key' - 'user_zen_next_key' - 'user_zen_prev_key' - 'user_zen_imagesize_key' - 'user_zen_togglecomment_key' - 'user_zen_splitjointag_key' - 'user_zen_removetag_key' - 'user_zen_anchorizeurl_key' - 'user_zen_anchorizesummary_key' - -2. Indent Size *zencoding-indent-size* - - To change indent size of html, add this code in your vimrc. -> - let g:user_zen_settings = { - \ 'html' : { - \ 'indentation' : ' ' - \ }, - \} -< - If you prefer to change global indent size then add this. -> - let g:user_zen_settings = { - \ 'indentation' : ' ' - \} -< -3. Define Tag's Behavior *zencoding-define-tags-behavior* - - zencoding.vim can change behavior of expanding abbreviation for each - filetypes as |Dictionary|. for details, see official site of zencoding. - for example, vimmer can add following. -> - let g:user_zen_settings = { - \ 'lang' : 'ja', - \ 'html' : { - \ 'filters' : 'html', - \ 'indentation' : ' ' - \ }, - \ 'perl' : { - \ 'indentation' : ' ', - \ 'aliases' : { - \ 'req' : "require '|'" - \ }, - \ 'snippets' : { - \ 'use' : "use strict\nuse warnings\n\n", - \ 'w' : "warn \"${cursor}\";", - \ }, - \ }, - \ 'php' : { - \ 'extends' : 'html', - \ 'filters' : 'html,c', - \ }, - \ 'css' : { - \ 'filters' : 'fc', - \ }, - \ 'javascript' : { - \ 'snippets' : { - \ 'jq' : "$(function() {\n\t${cursor}${child}\n});", - \ 'jq:each' : "$.each(arr, function(index, item)\n\t${child}\n});", - \ 'fn' : "(function() {\n\t${cursor}\n})();", - \ 'tm' : "setTimeout(function() {\n\t${cursor}\n}, 100);", - \ }, - \ }, - \ 'java' : { - \ 'indentation' : ' ', - \ 'snippets' : { - \ 'main': "public static void main(String[] args) {\n\t|\n}", - \ 'println': "System.out.println(\"|\");", - \ 'class': "public class | {\n}\n", - \ }, - \ }, - \} -< -4. Complete Tag *zencoding-complete-tag* - - If you want to complete tags using |omnifunc| then add this. -> - let g:use_zen_complete_tag = 1 -< - -5. Enable functions in different mode - - If you want to use zencoding only in some modes, set an mode option: - - let g:user_zen_mode='n' "only enable normal mode functions, or - let g:user_zen_mode='inv' "enable all functions, which is equal to - let g:user_zen_mode='a' "enable all function in all mode. - -============================================================================== -LINKS *zencoding-links* - -zen-coding official site: - http://code.google.com/p/zen-coding/ - -zencoding.vim: - http://mattn.github.com/zencoding-vim - -development repository: - https://github.com/mattn/zencoding-vim - -my blog posts about zencoding-vim: - http://mattn.kaoriya.net/software/vim/20100222103327.htm - http://mattn.kaoriya.net/software/vim/20100306021632.htm - -japanese blog posts about zencoding-vim: - http://d.hatena.ne.jp/idesaku/20100424/1272092255 - http://d.hatena.ne.jp/griefworker/20110118/vim_zen_coding - http://d.hatena.ne.jp/sakurako_s/20110126/1295988873 - http://looxu.blogspot.jp/2010/02/zencodingvimhtml.html - -tutorial traslated in chinese: - http://www.zfanw.com/blog/zencoding-vim-tutorial-chinese.html - -============================================================================== -TODO *zencoding-todo* - * wrapping inline selected. - * more documents. - * more contributor. - * more time to improve zencodig.vim. - -============================================================================== -vim:tw=78:ts=8:ft=help:norl:noet:fen:fdl=0: diff --git a/sources_forked/zencoding/plugin/zencoding.vim b/sources_forked/zencoding/plugin/zencoding.vim deleted file mode 100755 index e627653d..00000000 --- a/sources_forked/zencoding/plugin/zencoding.vim +++ /dev/null @@ -1,215 +0,0 @@ -"============================================================================= -" File: zencoding.vim -" Author: Yasuhiro Matsumoto -" Last Change: 13-Feb-2013. -" Version: 0.75 -" WebPage: http://github.com/mattn/zencoding-vim -" Description: vim plugins for HTML and CSS hi-speed coding. -" SeeAlso: http://code.google.com/p/zen-coding/ -" Usage: -" -" This is vim script support expanding abbreviation like zen-coding. -" ref: http://code.google.com/p/zen-coding/ -" -" Type abbreviation -" +------------------------------------- -" | html:5_ -" +------------------------------------- -" "_" is a cursor position. and type "," (Ctrl+y and Comma) -" NOTE: Don't worry about key map. you can change it easily. -" +------------------------------------- -" | -" | -" | -" | -" | -" | -" | -" | _ -" | -" | -" +------------------------------------- -" Type following -" +------------------------------------- -" | div#foo$*2>div.bar -" +------------------------------------- -" And type "," -" +------------------------------------- -" |
    -" |
    _
    -" |
    -" |
    -" |
    -" |
    -" +------------------------------------- -" -" Tips: -" -" You can customize behavior of expanding with overriding config. -" This configuration will be marged at loading plugin. -" -" let g:user_zen_settings = { -" \ 'indentation' : ' ', -" \ 'perl' : { -" \ 'aliases' : { -" \ 'req' : 'require ' -" \ }, -" \ 'snippets' : { -" \ 'use' : "use strict\nuse warnings\n\n", -" \ 'warn' : "warn \"|\";", -" \ } -" \ } -" \} -" -" You can set language attribute in html using 'zen_settings.lang'. -" -" GetLatestVimScripts: 2981 1 :AutoInstall: zencoding.vim -" script type: plugin - -if &cp || (exists('g:loaded_zencoding_vim') && g:loaded_zencoding_vim) - finish -endif -let g:loaded_zencoding_vim = 1 - -let s:save_cpo = &cpo -set cpo&vim - -if !exists('g:zencoding_debug') - let g:zencoding_debug = 0 -endif - -if !exists('g:zencoding_curl_command') - let g:zencoding_curl_command = 'curl -s -L -A Mozilla/5.0' -endif - -if exists('g:use_zen_complete_tag') && g:use_zen_complete_tag - setlocal omnifunc=zencoding#CompleteTag -endif - -if !exists('g:user_zen_leader_key') - let g:user_zen_leader_key = '' -endif - -function! s:install_plugin_i() - for item in [ - \ {'mode': 'i', 'var': 'user_zen_expandabbr_key', 'key': ',', 'plug': 'ZenCodingExpandAbbr', 'func': 'u:call zencoding#expandAbbr(0,"")a'}, - \ {'mode': 'i', 'var': 'user_zen_expandword_key', 'key': ';', 'plug': 'ZenCodingExpandWord', 'func': 'u:call zencoding#expandAbbr(1,"")a'}, - \ {'mode': 'i', 'var': 'user_zen_balancetaginward_key', 'key': 'd', 'plug': 'ZenCodingBalanceTagInwardInsert', 'func': ':call zencoding#balanceTag(1)'}, - \ {'mode': 'i', 'var': 'user_zen_balancetagoutward_key', 'key': 'D', 'plug': 'ZenCodingBalanceTagOutwardInsert', 'func': ':call zencoding#balanceTag(-1)'}, - \ {'mode': 'i', 'var': 'user_zen_next_key', 'key': 'n', 'plug': 'ZenCodingNext', 'func': ':call zencoding#moveNextPrev(0)'}, - \ {'mode': 'i', 'var': 'user_zen_prev_key', 'key': 'N', 'plug': 'ZenCodingPrev', 'func': ':call zencoding#moveNextPrev(1)'}, - \ {'mode': 'i', 'var': 'user_zen_imagesize_key', 'key': 'i', 'plug': 'ZenCodingImageSize', 'func': ':call zencoding#imageSize()a'}, - \ {'mode': 'i', 'var': 'user_zen_togglecomment_key', 'key': '/', 'plug': 'ZenCodingToggleComment', 'func': ':call zencoding#toggleComment()a'}, - \ {'mode': 'i', 'var': 'user_zen_splitjointag_key', 'key': 'j', 'plug': 'ZenCodingSplitJoinTagInsert', 'func': ':call zencoding#splitJoinTag()'}, - \ {'mode': 'i', 'var': 'user_zen_removetag_key', 'key': 'k', 'plug': 'ZenCodingRemoveTag', 'func': ':call zencoding#removeTag()a'}, - \ {'mode': 'i', 'var': 'user_zen_anchorizeurl_key', 'key': 'a', 'plug': 'ZenCodingAnchorizeURL', 'func': ':call zencoding#anchorizeURL(0)a'}, - \ {'mode': 'i', 'var': 'user_zen_anchorizesummary_key', 'key': 'A', 'plug': 'ZenCodingAnchorizeSummary', 'func': ':call zencoding#anchorizeURL(1)a'}, - \] - - if !hasmapto(''.item.plug, item.mode) - exe item.mode . 'noremap ' . item.plug . ' ' . item.func - endif - if !exists('g:' . item.var) - endif - if exists('g:' . item.var) - let key = eval('g:' . item.var) - else - let key = g:user_zen_leader_key . item.key - endif - if len(maparg(key, item.mode)) == 0 - exe item.mode . 'map ' . key . ' ' . item.plug - endif - endfor -endfunction - -function! s:install_plugin_n() - for item in [ - \ {'mode': 'n', 'var': 'user_zen_expandabbr_key', 'key': ',', 'plug': 'ZenCodingExpandNormal', 'func': ':call zencoding#expandAbbr(3,"")'}, - \ {'mode': 'n', 'var': 'user_zen_expandword_key', 'key': ',', 'plug': 'ZenCodingExpandWord', 'func': ':call zencoding#expandAbbr(1,"")'}, - \ {'mode': 'n', 'var': 'user_zen_balancetaginward_key', 'key': 'd', 'plug': 'ZenCodingBalanceTagInwardNormal', 'func': ':call zencoding#balanceTag(1)'}, - \ {'mode': 'n', 'var': 'user_zen_balancetagoutward_key', 'key': 'D', 'plug': 'ZenCodingBalanceTagOutwardNormal', 'func': ':call zencoding#balanceTag(-1)'}, - \ {'mode': 'n', 'var': 'user_zen_next_key', 'key': 'n', 'plug': 'ZenCodingNext', 'func': ':call zencoding#moveNextPrev(0)'}, - \ {'mode': 'n', 'var': 'user_zen_prev_key', 'key': 'N', 'plug': 'ZenCodingPrev', 'func': ':call zencoding#moveNextPrev(1)'}, - \ {'mode': 'n', 'var': 'user_zen_imagesize_key', 'key': 'i', 'plug': 'ZenCodingImageSize', 'func': ':call zencoding#imageSize()'}, - \ {'mode': 'n', 'var': 'user_zen_togglecomment_key', 'key': '/', 'plug': 'ZenCodingToggleComment', 'func': ':call zencoding#toggleComment()'}, - \ {'mode': 'n', 'var': 'user_zen_splitjointag_key', 'key': 'j', 'plug': 'ZenCodingSplitJoinTagNormal', 'func': ':call zencoding#splitJoinTag()'}, - \ {'mode': 'n', 'var': 'user_zen_removetag_key', 'key': 'k', 'plug': 'ZenCodingRemoveTag', 'func': ':call zencoding#removeTag()'}, - \ {'mode': 'n', 'var': 'user_zen_anchorizeurl_key', 'key': 'a', 'plug': 'ZenCodingAnchorizeURL', 'func': ':call zencoding#anchorizeURL(0)'}, - \ {'mode': 'n', 'var': 'user_zen_anchorizesummary_key', 'key': 'A', 'plug': 'ZenCodingAnchorizeSummary', 'func': ':call zencoding#anchorizeURL(1)'}, - \] - - if !hasmapto(''.item.plug, item.mode) - exe item.mode . 'noremap ' . item.plug . ' ' . item.func - endif - if !exists('g:' . item.var) - endif - if exists('g:' . item.var) - let key = eval('g:' . item.var) - else - let key = g:user_zen_leader_key . item.key - endif - if len(maparg(key, item.mode)) == 0 - exe item.mode . 'map ' . key . ' ' . item.plug - endif - endfor -endfunction - -function! s:install_plugin_v() - for item in [ - \ {'mode': 'v', 'var': 'user_zen_expandabbr_key', 'key': ',', 'plug': 'ZenCodingExpandVisual', 'func': ':call zencoding#expandAbbr(2,"")'}, - \ {'mode': 'v', 'var': 'user_zen_balancetaginward_key', 'key': 'd', 'plug': 'ZenCodingBalanceTagInwardVisual', 'func': ':call zencoding#balanceTag(2)'}, - \ {'mode': 'v', 'var': 'user_zen_balancetagoutward_key', 'key': 'D', 'plug': 'ZenCodingBalanceTagOutwardVisual', 'func': ':call zencoding#balanceTag(-2)'}, - \ {'mode': 'v', 'var': 'user_zen_mergelines_key', 'key': 'm', 'plug': 'ZenCodingMergeLines', 'func': ':call zencoding#mergeLines()'}, - \ {'mode': 'v', 'var': 'user_zen_codepretty_key', 'key': 'c', 'plug': 'ZenCodingCodePretty', 'func': ':call zencoding#codePretty()'}, - \] - - if !hasmapto(''.item.plug, item.mode) - exe item.mode . 'noremap ' . item.plug . ' ' . item.func - endif - if !exists('g:' . item.var) - endif - if exists('g:' . item.var) - let key = eval('g:' . item.var) - else - let key = g:user_zen_leader_key . item.key - endif - if len(maparg(key, item.mode)) == 0 - exe item.mode . 'map ' . key . ' ' . item.plug - endif - endfor -endfunction - - -if exists('g:user_zen_mode') - let imode = matchstr(g:user_zen_mode, '[ai]') - let nmode = matchstr(g:user_zen_mode, '[an]') - let vmode = matchstr(g:user_zen_mode, '[av]') - - if !empty(imode) - call s:install_plugin_i() - endif - - if !empty(nmode) - call s:install_plugin_n() - endif - - if !empty(vmode) - call s:install_plugin_v() - endif -else - call s:install_plugin_i() - call s:install_plugin_n() - call s:install_plugin_v() -endif - - -delfunction s:install_plugin_i -delfunction s:install_plugin_n -delfunction s:install_plugin_v - -command! -nargs=1 Zen call zencoding#expandAbbr(4, ) - -let &cpo = s:save_cpo -unlet s:save_cpo - -" vim:set et: diff --git a/sources_forked/zencoding/unittest.vim b/sources_forked/zencoding/unittest.vim deleted file mode 100755 index c4fcc3d2..00000000 --- a/sources_forked/zencoding/unittest.vim +++ /dev/null @@ -1,794 +0,0 @@ -let s:sfile = expand('') - -function! s:reload(d) - exe "so" a:d."/plugin/zencoding.vim" - for f in split(globpath(a:d, 'autoload/**/*.vim'), "\n") - silent! exe "so" f - endfor -endfunction - -function! s:show_type(type) - echohl Search | echon "[" a:type "]\n" | echohl None - echo "\r" -endfunction - -function! s:show_category(category) - echohl MatchParen | echon "[" a:category "]\n" | echohl None - echo "\r" -endfunction - -function! s:show_pass(pass) - echohl Title | echo "pass".a:pass."\n" | echohl None -endfunction - -function! s:show_done() - echohl IncSearch | echo "done" | echohl None -endfunction - -function! s:escape(str) - let str = a:str - let str = substitute(str, "\n", '\\n', 'g') - let str = substitute(str, "\t", '\\t', 'g') - return str -endfunction - -function! s:show_title(no, title) - let title = s:escape(a:title) - let width = &columns - 23 - echohl MoreMsg | echon "\rtesting #".printf("%03d", a:no) - echohl None | echon ": " . (len(title) < width ? (title.repeat(' ', width-len(title))) : strpart(title, 0, width)) . ' ... ' -endfunction - -function! s:show_skip(no, title) - let title = s:escape(a:title) - let width = &columns - 23 - echohl WarningMsg | echon "\rskipped #".printf("%03d", a:no) - echohl None | echon ": " . (len(title) < width ? (title.repeat(' ', width-len(title))) : strpart(title, 0, width)) . ' ... ' - echo "" -endfunction - -function! s:show_ok() - echohl Title | echon "ok\n" | echohl None - echo "" -endfunction - -function! s:show_ng(no, expect, got) - echohl WarningMsg | echon "ng\n" | echohl None - echohl ErrorMsg | echo "failed test #".a:no | echohl None - set more - echohl WarningMsg | echo printf("expect(%d):", len(a:expect)) | echohl None - echo join(split(a:expect, "\n", 1), "|\n") - echohl WarningMsg | echo printf("got(%d):", len(a:got)) | echohl None - echo join(split(a:got, "\n", 1), "|\n") - let cs = split(a:expect, '\zs') - for c in range(len(cs)) - if c < len(a:got) - if a:expect[c] != a:got[c] - echohl WarningMsg | echo "differ at:" | echohl None - echo a:expect[c :-1] - break - endif - endif - endfor - echo "" - throw "stop" -endfunction - -function! s:test(...) - let type = get(a:000, 0, '') - let name = get(a:000, 1, '') - let index = get(a:000, 2, '') - - let testgroups = eval(join(filter(split(substitute(join(readfile(s:sfile), "\n"), '.*\nfinish\n', '', ''), '\n', 1), "v:val !~ '^\"'"))) - for testgroup in testgroups - if len(type) > 0 && testgroup.type != type | continue | endif - call s:show_type(testgroup.type) - for category in testgroup.categories - if len(name) > 0 && substitute(category.name,' ','_','g') != name | continue | endif - call s:show_category(category.name) - let tests = category.tests - let start = reltime() - for n in range(len(tests)) - if len(index) > 0 && n != index | continue | endif - let query = tests[n].query - let result = tests[n].result - if has_key(tests[n], 'skip') && tests[n].skip != 0 - call s:show_skip(n+1, query) - continue - endif - if stridx(query, '$$$$') != -1 - silent! 1new - silent! exe "setlocal ft=".testgroup.type - silent! let key = matchstr(query, '.*\$\$\$\$\zs.*\ze\$\$\$\$') - if len(key) > 0 - exe printf('let key = "%s"', key) - else - let key = "\," - endif - silent! let query = substitute(query, '\$\$\$\$.*\$\$\$\$', '$$$$', '') - silent! call setline(1, split(query, "\n")) - let cmd = "normal gg0/\\$\\$\\$\\$\ri\\\\".key - if stridx(result, '$$$$') != -1 - let cmd .= '$$$$' - endif - silent! exe cmd - unlet! res | let res = join(getline(1, line('$')), "\n") - silent! bw! - call s:show_title(n+1, query) - else - call s:show_title(n+1, query) - unlet! res | let res = zencoding#ExpandWord(query, testgroup.type, 0) - endif - if stridx(result, '$$$$') != -1 - if res ==# result - call s:show_ok() - else - call s:show_ng(n+1, result, res) - endif - else - if res ==# result - call s:show_ok() - else - call s:show_ng(n+1, result, res) - endif - endif - endfor - call s:show_pass(reltimestr(reltime(start))) - endfor - endfor -endfunction - -function! s:do_tests(...) - try - if exists('g:user_zen_settings') - let s:old_user_zen_settings = g:user_zen_settings - let g:user_zen_settings = { 'indentation': "\t" } - endif - let oldmore = &more - call s:reload(fnamemodify(s:sfile, ':h')) - let &more = 0 - call call('s:test', a:000) - call s:show_done() - catch - echohl ErrorMsg | echomsg v:exception | echohl None - finally - let &more=oldmore - if exists('g:user_zen_settings') - let g:user_zen_settings = s:old_user_zen_settings - endif - endtry -endfunction - -function! g:zencoding_unittest_complete(arglead, cmdline, cmdpos) - let args = split(a:cmdline, '\s\+', 1) - let testgroups = eval(join(filter(split(substitute(join(readfile(s:sfile), "\n"), '.*\nfinish\n', '', ''), '\n', 1), "v:val !~ '^\"'"))) - try - if len(args) == 2 - return filter(map(testgroups, 'v:val.type'), 'stridx(v:val,args[1])!=-1') - elseif len(args) == 3 - return map(filter(testgroups, 'v:val.type==args[1]')[0].categories, 'substitute(v:val.name," ","_","g")') - endif - catch - endtry - return [] -endfunction - -command! -nargs=* -complete=customlist,g:zencoding_unittest_complete ZenCodingUnitTest call s:do_tests() -if s:sfile == expand('%:p') - ZenCodingUnitTest -endif - -finish -[ -{ - 'type': "html", - 'categories': [ - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "div", - 'result': "
    \n", - }, - { - 'query': "div#wrapper", - 'result': "
    \n", - }, - { - 'query': "div.box", - 'result': "
    \n", - }, - { - 'query': "a[title=TITLE]", - 'result': "\n", - }, - { - 'query': "div#wrapper.box", - 'result': "
    \n", - }, - { - 'query': "div#wrapper.box.current", - 'result': "
    \n", - }, - { - 'query': "div#wrapper.box.current[title=TITLE rel]", - 'result': "
    \n", - }, - { - 'query': "div#main+div#sub", - 'result': "
    \n
    \n", - }, - { - 'query': "div#main>div#sub", - 'result': "
    \n\t
    \n
    \n", - }, - { - 'query': "html:xt>div#header>div#logo+ul#nav>li.item-$*5>a", - 'result': "\n\n\n\t\n\t\n\n\n\t
    \n\t\t
    \n\t\t
      \n\t\t\t
    • \n\t\t\t
    • \n\t\t\t
    • \n\t\t\t
    • \n\t\t\t
    • \n\t\t
    \n\t
    \n\t\n\n", - }, - { - 'query': "ol>li*2", - 'result': "
      \n\t
    1. \n\t
    2. \n
    \n", - }, - { - 'query': "a", - 'result': "\n", - }, - { - 'query': "obj", - 'result': "\n", - }, - { - 'query': "cc:ie6>p+blockquote#sample$.so.many.classes*2", - 'result': "", - }, - { - 'query': "html:4t>div#wrapper>div#header+div#contents+div#footer", - 'result': "\n\n\n\t\n\t\n\n\n\t
    \n\t\t
    \n\t\t
    \n\t\t
    \n\t
    \n\t\n\n", - }, - { - 'query': "a[href=http://www.google.com/].foo#hoge", - 'result': "\n", - }, - { - 'query': "a[href=http://www.google.com/]{Google}", - 'result': "Google\n", - }, - { - 'query': "{ZenCoding}", - 'result': "ZenCoding", - }, - { - 'query': "a+b", - 'result': "\n\n", - }, - { - 'query': "a>b>i\n", - }, - { - 'query': "a>b>i^b", - 'result': "\n", - }, - { - 'query': "a>b>i<\n\n", - }, - { - 'query': "a>b>i^^b", - 'result': "\n\n", - }, - { - 'query': "blockquote>b>i<\n\n", - }, - { - 'query': "blockquote>b>i^^b", - 'result': "
    \n\n", - }, - { - 'query': "a[href=foo][class=bar]", - 'result': "\n", - }, - { - 'query': "a[a=b][b=c=d][e]{foo}*2", - 'result': "foo\nfoo\n", - }, - { - 'query': "a[a=b][b=c=d][e]*2{foo}", - 'result': "\n\nfoo", - }, - { - 'query': "a*2{foo}a", - 'result': "\n\nfoo\n", - }, - { - 'query': "a{foo}*2>b", - 'result': "foo\nfoo\n", - }, - { - 'query': "a*2{foo}>b", - 'result': "\n\nfoo", - }, - { - 'query': "table>tr>td.name#foo+td*3", - 'result': "\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
    \n", - }, - { - 'query': "div#header + div#footer", - 'result': "
    \n
    \n", - }, - { - 'query': "#header + div#footer", - 'result': "
    \n
    \n", - }, - { - 'query': "#header > ul > li < p{Footer}", - 'result': "
    \n\t
      \n\t\t
    • \n\t
    \n\t

    Footer

    \n
    \n", - }, - { - 'query': "#header > ul > li ^ p{Footer}", - 'result': "
    \n\t
      \n\t\t
    • \n\t
    \n\t

    Footer

    \n
    \n", - }, - { - 'query': "a#foo$$$*3", - 'result': "\n\n\n", - }, - { - 'query': "ul+", - 'result': "
      \n\t
    • \n
    \n", - }, - { - 'query': "table+", - 'result': "\n\t\n\t\t\n\t\n
    \n", - }, - { - 'query': "#header>li<#content", - 'result': "
    \n\t
  • \n
    \n
    \n", - }, - { - 'query': "#header>li^#content", - 'result': "
    \n\t
  • \n
    \n
    \n", - }, - { - 'query': "(#header>li)<#content", - 'result': "
    \n\t
  • \n
    \n
    \n", - }, - { - 'query': "(#header>li)^#content", - 'result': "
    \n\t
  • \n
    \n
    \n", - }, - { - 'query': "a>b>i<\n
    \n", - }, - { - 'query': "a>b>i^^div", - 'result': "\n
    \n", - }, - { - 'query': "(#header>h1)+#content+#footer", - 'result': "
    \n\t

    \n
    \n
    \n
    \n", - }, - { - 'query': "(#header>h1)+(#content>(#main>h2+div#entry$.section*5>(h3>a)+div>p*3+ul+)+(#utilities))+(#footer>address)", - 'result': "
    \n\t

    \n
    \n
    \n\t
    \n\t\t

    \n\t\t
    \n\t\t\t

    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t

    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t

    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t

    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t

    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t
    \n
    \n
    \n\t
    \n
    \n", - }, - { - 'query': "(div>(ul*2)*2)+(#utilities)", - 'result': "
    \n\t
      \n\t
        \n\t
          \n\t
            \n
            \n
            \n", - }, - { - 'query': "table>(tr>td*3)*4", - 'result': "\n\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\n
            \n", - }, - { - 'query': "(((a#foo+a#bar)*2)*3)", - 'result': "\n\n\n\n\n\n\n\n\n\n\n\n", - }, - { - 'query': "div#box$*3>h3+p*2", - 'result': "
            \n\t

            \n\t

            \n\t

            \n
            \n
            \n\t

            \n\t

            \n\t

            \n
            \n
            \n\t

            \n\t

            \n\t

            \n
            \n" - }, - { - 'query': "div#box.foo$$$.bar$$$*3", - 'result': "
            \n
            \n
            \n", - }, - { - 'query': "div#box$*3>h3+p.bar*2|e", - 'result': "<div id=\"box1\">\n\t<h3></h3>\n\t<p class=\"bar\"></p>\n\t<p class=\"bar\"></p>\n</div>\n<div id=\"box2\">\n\t<h3></h3>\n\t<p class=\"bar\"></p>\n\t<p class=\"bar\"></p>\n</div>\n<div id=\"box3\">\n\t<h3></h3>\n\t<p class=\"bar\"></p>\n\t<p class=\"bar\"></p>\n</div>\n", - }, - { - 'query': "div>div#page>p.title+p|c", - 'result': "
            \n\t\n\t
            \n\t\t\n\t\t

            \n\t\t\n\t\t

            \n\t
            \n\t\n
            \n", - }, - { - 'query': "link:css", - 'result': "\n", - }, - { - 'query': "a[title=\"Hello', world\" rel]", - 'result': "\n", - }, - { - 'query': "div>a#foo{bar}", - 'result': "\n", - }, - { - 'query': ".content{Hello!}", - 'result': "
            Hello!
            \n", - }, - { - 'query': "div.logo+(div#navigation)+(div#links)", - 'result': "
            \n
            \n
            \n", - }, - { - 'query': "h1{header}+{Text}+a[href=http://link.org]{linktext}+{again some text}+a[href=http://anoterlink.org]{click me!}+{some final text}", - 'result': "

            header

            \nTextlinktext\nagain some textclick me!\nsome final text", - }, - { - 'query': "a{&}+div{&&}", - 'result': "&\n
            &&
            \n", - }, - { - 'query': "span$$$$\\,$$$$", - 'result': "", - }, - { - 'query': "foo span$$$$\\,$$$$", - 'result': "foo ", - }, - { - 'query': "foo span$$$$\\,$$$$ bar", - 'result': "foo bar", - }, - { - 'query': "foo $$$$\\ve\\,p\\$$$$bar baz", - 'result': "foo

            bar

            baz", - }, - { - 'query': "foo $$$$\\vee\\,p\\$$$$bar baz", - 'result': "foo

            bar baz

            ", - }, - { - 'query': "f div.boxes>article.box2>header>(hgroup>h2{aaa}+h3{bbb})+p{ccc}$$$$", - 'result': "f
            \n\t
            \n\t\t
            \n\t\t\t
            \n\t\t\t\t

            aaa

            \n\t\t\t\t

            bbb

            \n\t\t\t
            \n\t\t\t

            ccc

            \n\t\t
            \n\t
            \n
            ", - }, - { - 'query': "div.boxes>(div.box2>section>h2{a}+p{b})+(div.box1>section>h2{c}+p{d}+p{e}+(bq>h2{f}+h3{g})+p{h})", - 'result': "
            \n\t
            \n\t\t
            \n\t\t\t

            a

            \n\t\t\t

            b

            \n\t\t
            \n\t
            \n\t
            \n\t\t
            \n\t\t\t

            c

            \n\t\t\t

            d

            \n\t\t\t

            e

            \n\t\t\t
            \n\t\t\t\t

            f

            \n\t\t\t\t

            g

            \n\t\t\t
            \n\t\t\t

            h

            \n\t\t
            \n\t
            \n
            \n", - }, - { - 'query': "(div>(label+input))+div", - 'result': "
            \n\t\n\t\n
            \n
            \n", - }, - { - 'query': "test1\ntest2\ntest3$$$$\\ggVG\\,ul>li>span*>a\\$$$$", - 'result': "", - }, - { - 'query': "test1\ntest2\ntest3$$$$\\ggVG\\,input[type=input value=$#]*\\$$$$", - 'result': "\n\n", - }, - { - 'query': "div#id-$*5>div#id2-$", - 'result': "
            \n\t
            \n
            \n
            \n\t
            \n
            \n
            \n\t
            \n
            \n
            \n\t
            \n
            \n
            \n\t
            \n
            \n", - }, - { - 'query': "{test case $ }*3", - 'result': "test case 1 test case 2 test case 3 ", - }, - { - 'query': "{test case $${nr}}*3", - 'result': "test case 1\ntest case 2\ntest case 3\n", - }, - { - 'query': "{test case \\$ }*3", - 'result': "test case $ test case $ test case $ ", - }, - { - 'query': "{test case $$$ }*3", - 'result': "test case 001 test case 002 test case 003 ", - }, - { - 'query': "a[title=$#]{foo}", - 'result': "foo\n", - }, - ], - }, - { - 'name': 'split join tag', - 'tests': [ - { - 'query': "
            \n\t$$$$\\j$$$$\n
            ", - 'result': "
            \n\t\n
            ", - }, - { - 'query': "
            \n\tj$$$$/>\n
            ", - 'result': "
            \n\t\n
            ", - }, - ], - }, - { - 'name': 'toggle comment', - 'tests': [ - { - 'query': "
            \n\t$$$$\\/$$$$\n
            ", - 'result': "
            \n\t\n
            ", - }, - { - 'query': "
            \n\t\n
            ", - 'result': "
            \n\t\n
            ", - }, - ], - }, - { - 'name': 'image size', - 'tests': [ - { - 'query': "img[src=http://mattn.kaoriya.net/images/logo.png]$$$$\\,\\i$$$$", - 'result': "\"\"", - }, - { - 'query': "img[src=/logo.png]$$$$\\,\\i$$$$", - 'result': "\"\"", - }, - ], - }, - { - 'name': 'move next prev', - 'tests': [ - { - 'query': "foo+bar+baz[dankogai=\"\"]$$$$\\,\\gg0\\n\\n\\n\\Byw:%d _\\p$$$$", - 'result': "dankogai", - }, - ], - }, - ], -}, -{ - 'type': 'css', - 'categories': [ - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "@i", - 'result': "@import url();", - }, - { - 'query': "fs:n", - 'result': "font-style: normal;", - }, - { - 'query': "fl:l|fc", - 'result': "float: left;", - }, - { - 'query': "bg+$$$$", - 'result': "background: #FFF url($$$$) 0 0 no-repeat;", - }, - { - 'query': "bg+!$$$$", - 'result': "background: #FFF url($$$$) 0 0 no-repeat !important;", - }, - { - 'query': "m$$$$", - 'result': "margin: $$$$;", - }, - { - 'query': "m0.1p$$$$", - 'result': "margin: 0.1%;", - }, - { - 'query': "m1.0$$$$", - 'result': "margin: 1.0em;", - }, - { - 'query': "m2$$$$", - 'result': "margin: 2px;", - }, - { - 'query': "bdrs10$$$$", - 'result': "border-radius: 10px;", - }, - { - 'query': "-bdrs20$$$$", - 'result': "-webkit-border-radius: 20px;\n-moz-border-radius: 20px;\nborder-radius: 20px;", - }, - { - 'query': "lg(top,#fff,#000)$$$$", - 'result': "background-image: -webkit-gradient(top, 0 0, 0 100, from(#fff), to(#000));\nbackground-image: -webkit-linear-gradient(#fff, #000);\nbackground-image: -moz-linear-gradient(#fff, #000);\nbackground-image: -o-linear-gradient(#fff, #000);\nbackground-image: linear-gradient(#fff, #000);\n", - }, - { - 'query': "m10-5-0$$$$", - 'result': "margin: 10px 5px 0px;", - }, - { - 'query': "m-10--5$$$$", - 'result': "margin: -10px -5px;", - }, - { - 'query': "m10-auto$$$$", - 'result': "margin: 10px auto;", - }, - { - 'query': "w100p$$$$", - 'result': "width: 100%;", - }, - { - 'query': "h50e$$$$", - 'result': "height: 50em;", - }, - { - 'query': "(bg+)+c$$$$", - 'result': "background: #FFF url($$$$) 0 0 no-repeat;\ncolor: #000;", - }, - ], - }, - ], -}, -{ - 'type': 'haml', - 'categories': [ - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}", - 'result': "%div\n %p\n %ul#foo\n %li.bar1{ :foo => \"bar\", :bar => \"baz\" } baz\n %li.bar2{ :foo => \"bar\", :bar => \"baz\" } baz\n %li.bar3{ :foo => \"bar\", :bar => \"baz\" } baz\n", - }, - { - 'query': "div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}|haml", - 'result': "%div\n %p\n %ul#foo\n %li.bar1{ :foo => \"bar\", :bar => \"baz\" } baz\n %li.bar2{ :foo => \"bar\", :bar => \"baz\" } baz\n %li.bar3{ :foo => \"bar\", :bar => \"baz\" } baz\n", - }, - { - 'query': "a*3|haml", - 'result': "%a{ :href => \"\" }\n%a{ :href => \"\" }\n%a{ :href => \"\" }\n", - }, - { - 'query': ".content{Hello!}|haml", - 'result': "%div.content Hello!\n", - }, - { - 'query': "a[title=$#]{foo}", - 'result': "%a{ :href => \"\", :title => \"foo\" } foo\n", - }, - ], - }, - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "%a foo\n bar$$$$\\j$$$$", - 'result': "%a ", - }, - { - 'query': "$$$$\\j$$$$%a ", - 'result': "%a $$$$", - }, - ], - }, - { - 'name': 'toggle comment', - 'tests': [ - { - 'query': "%a{ :href => \"http://www.google.com\"$$$$\\/$$$$ } hello", - 'result': "-# %a{ :href => \"http://www.google.com\" } hello", - }, - { - 'query': "-# %a{ :href => \"http://www.google.com\"$$$$\\/$$$$ } hello", - 'result': "%a{ :href => \"http://www.google.com\" } hello", - }, - ], - }, - ], -}, -{ - 'type': 'slim', - 'categories': [ - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}", - 'result': "div\n p\n ul id=\"foo\"\n li class=\"bar1\" foo=\"bar\" bar=\"baz\"\n | baz\n li class=\"bar2\" foo=\"bar\" bar=\"baz\"\n | baz\n li class=\"bar3\" foo=\"bar\" bar=\"baz\"\n | baz\n", - }, - { - 'query': "div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}|slim", - 'result': "div\n p\n ul id=\"foo\"\n li class=\"bar1\" foo=\"bar\" bar=\"baz\"\n | baz\n li class=\"bar2\" foo=\"bar\" bar=\"baz\"\n | baz\n li class=\"bar3\" foo=\"bar\" bar=\"baz\"\n | baz\n", - }, - { - 'query': "a*3|slim", - 'result': "a href=\"\"\na href=\"\"\na href=\"\"\n", - }, - { - 'query': ".content{Hello!}|slim", - 'result': "div class=\"content\"\n | Hello!\n", - }, - { - 'query': "a[title=$#]{foo}", - 'result': "a href=\"\" title=\"foo\"\n | foo\n", - }, - ], - }, - { - 'name': 'split join tag', - 'tests': [ - { - 'query': "a\n | foo$$$$\\j$$$$", - 'result': "a", - }, - { - 'query': "a$$$$\\j$$$$", - 'result': "a\n | $$$$", - }, - ], - }, - { - 'name': 'toggle comment', - 'tests': [ - { - 'query': "a href=\"http://www.google.com\"$$$$\\/$$$$\n | hello", - 'result': "/a href=\"http://www.google.com\"\n | hello", - }, - { - 'query': "/a href=\"http://www.google.com\"$$$$\\/$$$$\n | hello", - 'result': "a href=\"http://www.google.com\"\n | hello", - }, - ], - }, - ], -}, -{ - 'type': 'xsl', - 'categories': [ - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "vari", - 'result': "\n", - }, - { - 'query': "ap>wp", - 'result': "\n\t\n\n", - }, - ], - }, - ], -}, -{ - 'type': 'xsd', - 'categories': [ - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "xsd:w3c", - 'result': "\n\n\t\n", - }, - ], - }, - ], -}, -{ - 'type': 'mustache', - 'categories': [ - { - 'name': 'expand abbreviation', - 'tests': [ - { - 'query': "div#{{foo}}", - 'result': "
            \n", - }, - { - 'query': "div.{{foo}}", - 'result': "
            \n", - }, - ], - }, - ], -}, -] -" vim:set et: diff --git a/sources_forked/zencoding/zencoding.vim.vimup b/sources_forked/zencoding/zencoding.vim.vimup deleted file mode 100755 index 72608e48..00000000 --- a/sources_forked/zencoding/zencoding.vim.vimup +++ /dev/null @@ -1,265 +0,0 @@ -script_name: ZenCoding.vim -script_id: '2981' -script_type: utility -script_package: zencoding-vim.zip -script_version: '0.80' -required_vim_version: '7.0' -summary: vim plugins for HTML and CSS hi-speed coding. - -detailed_description: | - - This is vim script support expanding abbreviation like zen-coding. - ref: http://code.google.com/p/zen-coding/ - - There is a movie using zencoding.vim - ref: http://mattn.github.com/zencoding-vim - - Source Repository. - ref: http://github.com/mattn/zencoding-vim - - Type abbreviation - +------------------------------------- - | html:5_ - +------------------------------------- - "_" is a cursor position. and type "," (Ctrl + y and Comma) - NOTE: Don't worry about key map. you can change it easily. - +------------------------------------- - | - | - | - | - | - | - | - | _ - | - | - +------------------------------------- - Type following - +------------------------------------- - | div#foo$*2>div.bar - +------------------------------------- - And type "," - +------------------------------------- - |
            - |
            _
            - |
            - |
            - |
            - |
            - | _ - +------------------------------------- - - Tutorial: - - http://github.com/mattn/zencoding-vim/raw/master/TUTORIAL - - How work this: - - http://mattn.github.com/zencoding-vim - - Tips: - - You can customize behavior of expanding with overriding config. - This configuration will be marged at loading plugin. - - let g:user_zen_settings = { - \ 'indentation' : ' ', - \ 'perl' : { - \ 'aliases' : { - \ 'req' : 'require ' - \ }, - \ 'snippets' : { - \ 'use' : "use strict\nuse warnings\n\n", - \ 'warn' : "warn \"|\";", - \ } - \ } - \} - - let g:user_zen_expandabbr_key = '' - - let g:use_zen_complete_tag = 1 - - You can set language attribute in html using zen_settings['lang']. - -install_details: | - - # cd ~/.vim - # unzip zencoding-vim.zip - - or if you install pathogen.vim: - - # cd ~/.vim/bundle # or make directory - # unzip /path/to/zencoding-vim.zip - - if you get sources from repository: - - # cd ~/.vim/bundle # or make directory - # git clone http://github.com/mattn/zencoding-vim.git - -versions: -- '0.80': | - This is an upgrade for ZenCoding.vim: add emmet features. -- '0.74': | - This is an upgrade for ZenCoding.vim: many bug fixes. -- '0.73': | - This is an upgrade for ZenCoding.vim: many bug fixes. and support slim format (experimental). -- '0.72': | - This is an upgrade for ZenCoding.vim: - [fix] fix finding tokens. -- '0.71': | - This is an upgrade for ZenCoding.vim: - [fix] fix finding begin of tokens. -- '0.70': | - This is an upgrade for ZenCoding.vim: - [mod] Changed behavior of expanding. "div div>a|" should keep first div element. - [add] Supported slim formatter. -- '0.60': | - This is an upgrade for ZenCoding.vim: - [fix] fixed expanding {{}}. -- '0.59': | - This is an upgrade for ZenCoding.vim: - [fix] fixed toggleComment and mny bugs. -- '0.58': | - This is an upgrade for ZenCoding.vim: - [fix] fixed 'foo+' style expandos. -- '0.57': | - This is an upgrade for ZenCoding.vim: - [fix] fixed expandos that don't work 'choose' in xsl. -- '0.56': | - This is an upgrade for ZenCoding.vim: - [fix] fixed contents parser. -- '0.55': | - uploaded again: sorry, files was old. -- '0.54': | - [add] support sass, xsd. - [fix] expanding with html tag. - uploaded again: sorry, fileformat was DOS. -- '0.53': | - [fix] gif width/height was swapped. -- '0.52': | - [fix] broken wrap expanding. -- '0.51': | - This is an upgrade for ZenCoding.vim: - [fix] wrap expanding with '&'. - [fix] expand .content to class="content". - [fix] haml expanding. - [fix] bg+ snippet -- '0.50': | - This is an upgrade for ZenCoding.vim: - [fix] fixed parsing '#{{foo}}' and '.{{bar}}'. -- '0.49': | - This is an upgrade for ZenCoding.vim: - [doc] add help manual. -- '0.48': | - This is an upgrade for ZenCoding.vim: - [fix] install mappings to global. -- '0.47': | - This is an upgrade for ZenCoding.vim: - [drastic changes] enable autoload. you should whole replace older files. - package was empty. upload again. -- '0.46': | - This is an upgrade for ZenCoding.vim: - [drastic changes] enable autoload. you should whole replace older files. -- '0.45': | - This is an upgrade for ZenCoding.vim: - fixed attribute parsing like: a[href="hello', world" rel]. -- '0.44': | - This is an upgrade for ZenCoding.vim: - fixed checking whether have mapping using maparg() / hasmapto(). -- '0.43': | - This is an upgrade for ZenCoding.vim: - fixed behavior for nested block. like "html:5>#page>(header#globalHeader>(hgroup>h1+h2)+(nav>ul>li*3>a)+(form>p.siteSearch>input+input[type=button]))+(#contents>(#main>(section>h2+p*5)+p.pagetop>a[href=#page])+(#sub>p+(nav>ul>li>a)))+(footer#globalFoooter>(ul>li>a)+(p.copyright>small))" -- '0.42': | - This is an upgrade for ZenCoding.vim: - fixed select/option indent. -- '0.41': | - This is an upgrade for ZenCoding.vim: - fixed default filter. when using 'e' filter, output become empty. -- '0.40': | - This is an upgrade for ZenCoding.vim: - add the pure vimscript code for 'get image size'. you can use it without perl interface just now. - change key assign of ZenCodingExpandWord from ',' to ';'. it don't effect to most users. -- '0.39': | - This is an upgrade for ZenCoding.vim: fixed problem about 'selection'. see http://github.com/mattn/zencoding-vim/issues/#issue/2 -- '0.38': | - This is an upgrade for ZenCoding.vim: use v7h"_s instead of v7hs for backspace. -- '0.37': | - This is an upgrade for ZenCoding.vim: fixed problem that won't working with some 'backspace' options. -- '0.36': | - This is an upgrade for ZenCoding.vim: fixed problem that filter does not work. -- '0.35': | - This is an upgrade for ZenCoding.vim: enable zencoding for other languages. (meaning php also) -- '0.34': | - This is an upgrade for ZenCoding.vim: enable zencoding for xsl. (you should add ~/.vim/ftplugin/xslt/zencoding.vim) -- '0.33': | - This is an upgrade for ZenCoding.vim: fixed problem breaking multibyte when cursor is in a part of line. enabled zencoding for javascript in html. -- '0.32': | - This is an upgrade for ZenCoding.vim: fixed indentation. supported extends so that you can enable zencoding for php/xhtml/haml other's section 14 in http://github.com/mattn/zencoding-vim/raw/master/TUTORIAL -- '0.31': | - This is an upgrade for ZenCoding.vim: fixed indentation and $$$ problem. fixed about missing support multiple classes. -- '0.30': | - This is an upgrade for ZenCoding.vim: Fixed key assign. -- '0.29': | - This is an upgrade for ZenCoding.vim: Changed leading key to '' from ''. -- '0.28': | - This is an upgrade for ZenCoding.vim: supported 'Balance Tag Inward/Outward', 'Go to Next/Previous Edit Point', 'Update Size', 'Remove Tag', 'Split/Join Tag', 'Toggle Comment' -- '0.27': | - This is an upgrade for ZenCoding.vim: fixed problem that can't work on the part of multibyte characters. fixed inline elements behavior. -- '0.26': | - This is an upgrade for ZenCoding.vim: The count of '(((a#foo + a#bar)*2)*3)' should be 12. -- '0.25': | - This is an upgrade for ZenCoding.vim: store undo before working. good luck about 'table>(tr>td*3)*4'. -- '0.24': | - This is an upgrade for ZenCoding.vim: fixed behavior of parsing area of visual selection. -- '0.23': | - This is an upgrade for ZenCoding.vim: pre-expand '#header>li<#content' to 'div#header>lili'. fix undo ring. support visual selection. when type trigger key on visual select, it request you leader like 'ul>li'. if you give 'ul>li*' as leader, you'll get each separate 'ul>li' tags. and when you give 'blockquote' as leader, you'll get blocked text. -- '0.21': | - This is an upgrade for ZenCoding.vim: treat xhtml as html. -- '0.20': | - This is an upgrade for ZenCoding.vim: add option use_zen_complete_tag for complete abbr. -- '0.19': | - This is an upgrade for ZenCoding.vim: fixed problem that couldn't expand 'link:css' correctly. -- '0.18': | - This is an upgrade for ZenCoding.vim: ignore duplicate key map. -- '0.17': | - This is an upgrade for ZenCoding.vim: fixed key map. -- '0.16': | - This is an upgrade for ZenCoding.vim: fixed problem 'endless loop'. -- '0.15': | - This is an upgrade for ZenCoding.vim: set default filetype to 'html'. -- '0.14': | - This is an upgrade for ZenCoding.vim: fixed tag name like 'fs:n' in 'css'. -- '0.14': | - This is an upgrade for ZenCoding.vim: indentation for each languages. -- '0.13': | - This is an upgrade for ZenCoding.vim: user key map. -- '0.12': | - This is an upgrade for ZenCoding.vim: few extensive notation. -- '0.11': | - This is an upgrade for ZenCoding.vim: fixed indent. -- '0.10': | - This is an upgrade for ZenCoding.vim: fixed behavior of '+' operator -- '0.9': | - This is an upgrade for ZenCoding.vim: fixed single line behavior -- '0.8': | - This is an upgrade for ZenCoding.vim: support 'a[href=http://www.google.com]{Google}' -- '0.7': | - This is an upgrade for ZenCoding.vim: fixed behavior in 'a+b'. -- '0.6': | - This is an upgrade for ZenCoding.vim: fixed strange behavior about 'b_'. -- '0.5': | - This is an upgrade for ZenCoding.vim: recover rest part in line. -- '0.4': | - This is an upgrade for ZenCoding.vim: fixed cursor position. fixed ${lang} replacement. -- '0.3': | - This is an upgrade for ZenCoding.vim: fixed line expanding. -- '0.2': | - This is an upgrade for ZenCoding.vim: fixed problem that moving cursor with expanding. -- '0.1': | - Initial upload - -# __END__ -# vim: filetype=yaml