From 1efd8a094f30855a94960c3b09b80ed52231a721 Mon Sep 17 00:00:00 2001 From: mattn Date: Sun, 3 Jun 2012 00:39:05 +0900 Subject: [PATCH] move splitJoinTag into each types. --- autoload/zencoding.vim | 42 +++----------------------------- autoload/zencoding/lang/css.vim | 4 +++ autoload/zencoding/lang/haml.vim | 4 +++ autoload/zencoding/lang/html.vim | 40 ++++++++++++++++++++++++++++++ autoload/zencoding/lang/slim.vim | 4 +++ 5 files changed, 56 insertions(+), 38 deletions(-) diff --git a/autoload/zencoding.vim b/autoload/zencoding.vim index 71b1269..0606868 100644 --- a/autoload/zencoding.vim +++ b/autoload/zencoding.vim @@ -1,7 +1,7 @@ "============================================================================= " zencoding.vim " Author: Yasuhiro Matsumoto -" Last Change: 02-Jun-2012. +" Last Change: 03-Jun-2012. let s:save_cpo = &cpo set cpo&vim @@ -428,43 +428,9 @@ function! zencoding#balanceTag(flag) range endfunction function! zencoding#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 + let type = zencoding#getFileType() + let rtype = len(globpath(&rtp, 'autoload/zencoding/lang/'.type.'.vim')) ? type : 'html' + return zencoding#lang#{rtype}#splitJoinTag() endfunction function! zencoding#mergeLines() range diff --git a/autoload/zencoding/lang/css.vim b/autoload/zencoding/lang/css.vim index 4de4d52..c492305 100644 --- a/autoload/zencoding/lang/css.vim +++ b/autoload/zencoding/lang/css.vim @@ -141,3 +141,7 @@ function! zencoding#lang#css#moveNextPrev(flag) startinsert endif endfunction + +function! zencoding#lang#css#splitJoinTag() + " nothing to do +endfunction diff --git a/autoload/zencoding/lang/haml.vim b/autoload/zencoding/lang/haml.vim index 806c68c..c1eb7d6 100644 --- a/autoload/zencoding/lang/haml.vim +++ b/autoload/zencoding/lang/haml.vim @@ -196,3 +196,7 @@ function! zencoding#lang#haml#moveNextPrev(flag) startinsert endif endfunction + +function! zencoding#lang#haml#splitJoinTag() + " TODO +endfunction diff --git a/autoload/zencoding/lang/html.vim b/autoload/zencoding/lang/html.vim index c796cad..a2848ad 100644 --- a/autoload/zencoding/lang/html.vim +++ b/autoload/zencoding/lang/html.vim @@ -591,3 +591,43 @@ function! zencoding#lang#html#moveNextPrev(flag) 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 diff --git a/autoload/zencoding/lang/slim.vim b/autoload/zencoding/lang/slim.vim index 68b1c1b..f76f244 100644 --- a/autoload/zencoding/lang/slim.vim +++ b/autoload/zencoding/lang/slim.vim @@ -185,3 +185,7 @@ function! zencoding#lang#slim#moveNextPrev(flag) startinsert endif endfunction + +function! zencoding#lang#slim#splitJoinTag() + " TODO +endfunction