diff --git a/autoload/zencoding/lang/css.vim b/autoload/zencoding/lang/css.vim index 5495f9f..da5cb33 100644 --- a/autoload/zencoding/lang/css.vim +++ b/autoload/zencoding/lang/css.vim @@ -140,3 +140,7 @@ endfunction function! zencoding#lang#css#splitJoinTag() " nothing to do endfunction + +function! zencoding#lang#css#removeTag() + " nothing to do +endfunction diff --git a/autoload/zencoding/lang/haml.vim b/autoload/zencoding/lang/haml.vim index 19fc155..cd067db 100644 --- a/autoload/zencoding/lang/haml.vim +++ b/autoload/zencoding/lang/haml.vim @@ -198,6 +198,34 @@ function! zencoding#lang#haml#moveNextPrev(flag) endfunction function! zencoding#lang#haml#splitJoinTag() + let n = line('.') + while n > 0 + if getline(n) =~ '^\s*\ze%[a-z]' + let line = getline(n) + call setline(n, matchstr(line, '^\s*%\w\+\s*{[^}]*}')) + let sn = n + let n += 1 + let ml = len(matchstr(getline(n), '^\s*%[a-z]')) + if getline(n) =~ '^\s*|' + while n < line('$') + let l = len(matchstr(getline(n), '^\s*')) + if l <= ml + break + endif + exe n "delete" + let n += 1 + 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#haml#removeTag() diff --git a/autoload/zencoding/lang/slim.vim b/autoload/zencoding/lang/slim.vim index 837d999..b3df9ca 100644 --- a/autoload/zencoding/lang/slim.vim +++ b/autoload/zencoding/lang/slim.vim @@ -187,7 +187,30 @@ function! zencoding#lang#slim#moveNextPrev(flag) endfunction function! zencoding#lang#slim#splitJoinTag() - " TODO + 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" + let n += 1 + 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() diff --git a/plugin/zencoding.vim b/plugin/zencoding.vim index ec679a4..75dc4f1 100644 --- a/plugin/zencoding.vim +++ b/plugin/zencoding.vim @@ -1,7 +1,7 @@ "============================================================================= " File: zencoding.vim " Author: Yasuhiro Matsumoto -" Last Change: 03-Jun-2012. +" Last Change: 04-Jun-2012. " Version: 0.72 " WebPage: http://github.com/mattn/zencoding-vim " Description: vim plugins for HTML and CSS hi-speed coding. @@ -112,7 +112,7 @@ function! s:install_plugin() \ {'mode': 'i', 'var': 'user_zen_togglecomment_key', 'key': '/', 'plug': 'ZenCodingToggleComment', 'func': ':call zencoding#toggleComment()a'}, \ {'mode': 'n', 'var': 'user_zen_togglecomment_key', 'key': '/', 'plug': 'ZenCodingToggleComment', 'func': ':call zencoding#toggleComment()'}, \ {'mode': 'v', 'var': 'user_zen_mergelines_key', 'key': 'm', 'plug': 'ZenCodingMergeLines', 'func': ':call zencoding#mergeLines()'}, - \ {'mode': 'i', 'var': 'user_zen_splitjointag_key', 'key': 'j', 'plug': 'ZenCodingSplitJoinTagInsert', 'func': ':call zencoding#splitJoinTag()a'}, + \ {'mode': 'i', 'var': 'user_zen_splitjointag_key', 'key': 'j', 'plug': 'ZenCodingSplitJoinTagInsert', 'func': ':call zencoding#splitJoinTag()'}, \ {'mode': 'n', 'var': 'user_zen_splitjointag_key', 'key': 'j', 'plug': 'ZenCodingSplitJoinTagNormal', 'func': ':call zencoding#splitJoinTag()'}, \ {'mode': 'i', 'var': 'user_zen_removetag_key', 'key': 'k', 'plug': 'ZenCodingRemoveTag', 'func': ':call zencoding#removeTag()a'}, \ {'mode': 'n', 'var': 'user_zen_removetag_key', 'key': 'k', 'plug': 'ZenCodingRemoveTag', 'func': ':call zencoding#removeTag()'},