From 7fe889d2146b5365371537411f02607578b7c94c Mon Sep 17 00:00:00 2001 From: mattn Date: Thu, 31 May 2012 17:47:14 +0900 Subject: [PATCH] moveNextPrev --- autoload/zencoding.vim | 25 +++++++++++----------- autoload/zencoding/lang/css.vim | 10 +++++++++ autoload/zencoding/lang/haml.vim | 36 ++++++++++++++++++++++++++++++++ autoload/zencoding/lang/html.vim | 10 +++++++++ autoload/zencoding/lang/slim.vim | 13 +++++++++++- 5 files changed, 80 insertions(+), 14 deletions(-) diff --git a/autoload/zencoding.vim b/autoload/zencoding.vim index 37995f9..5eab8a6 100644 --- a/autoload/zencoding.vim +++ b/autoload/zencoding.vim @@ -1,7 +1,7 @@ "============================================================================= " zencoding.vim " Author: Yasuhiro Matsumoto -" Last Change: 30-May-2012. +" Last Change: 31-May-2012. let s:save_cpo = &cpo set cpo&vim @@ -407,16 +407,14 @@ function! zencoding#expandAbbr(mode) range endfunction function! zencoding#moveNextPrev(flag) - if search('><\/\|\(""\)\|^\s*$', a:flag ? 'Wpb' : 'Wp') == 3 - startinsert! - else - silent! normal! l - startinsert - endif + let type = zencoding#getFileType() + let rtype = len(globpath(&rtp, 'autoload/zencoding/lang/'.type.'.vim')) ? type : 'html' + return zencoding#lang#{rtype}#moveNextPrev(a:flag) endfunction function! zencoding#imageSize() - let rtype = len(globpath(&rtp, 'autoload/zencoding/lang/'.&ft.'.vim')) ? &ft : 'html' + let type = zencoding#getFileType() + let rtype = len(globpath(&rtp, 'autoload/zencoding/lang/'.type.'.vim')) ? type : 'html' return zencoding#lang#{rtype}#imageSize() endfunction @@ -426,6 +424,12 @@ function! zencoding#toggleComment() return zencoding#lang#{rtype}#toggleComment() endfunction +function! zencoding#balanceTag(flag) range + let type = zencoding#getFileType() + let rtype = len(globpath(&rtp, 'autoload/zencoding/lang/'.type.'.vim')) ? type : 'html' + return zencoding#lang#{rtype}#balanceTag(a:flag) +endfunction + function! zencoding#splitJoinTag() let curpos = getpos('.') while 1 @@ -511,11 +515,6 @@ function! zencoding#removeTag() endwhile endfunction -function! zencoding#balanceTag(flag) range - let rtype = len(globpath(&rtp, 'autoload/zencoding/lang/'.&ft.'.vim')) ? &ft : 'html' - return zencoding#lang#{rtype}#balanceTag(a:flag) -endfunction - function! zencoding#anchorizeURL(flag) let mx = 'https\=:\/\/[-!#$%&*+,./:;=?@0-9a-zA-Z_~]\+' let pos1 = searchpos(mx, 'bcnW') diff --git a/autoload/zencoding/lang/css.vim b/autoload/zencoding/lang/css.vim index 45bfe12..4de4d52 100644 --- a/autoload/zencoding/lang/css.vim +++ b/autoload/zencoding/lang/css.vim @@ -131,3 +131,13 @@ function! zencoding#lang#css#balanceTag(flag) range 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 diff --git a/autoload/zencoding/lang/haml.vim b/autoload/zencoding/lang/haml.vim index d4a60f4..e365f8e 100644 --- a/autoload/zencoding/lang/haml.vim +++ b/autoload/zencoding/lang/haml.vim @@ -125,4 +125,40 @@ function! zencoding#lang#haml#toggleComment() endfunction function! zencoding#lang#haml#balanceTag(flag) range + 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*')) + + 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 + 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, sn, 1, 0]) + normal! V + call setpos('.', [0, n, 1, 0]) +endfunction + +function! zencoding#lang#haml#moveNextPrev(flag) + let pos = search('""', a:flag ? 'Wb' : 'W') + if pos != 0 + silent! normal! l + startinsert + endif endfunction diff --git a/autoload/zencoding/lang/html.vim b/autoload/zencoding/lang/html.vim index d108873..e920637 100644 --- a/autoload/zencoding/lang/html.vim +++ b/autoload/zencoding/lang/html.vim @@ -573,3 +573,13 @@ function! zencoding#lang#html#balanceTag(flag) range call setpos('.', curpos) 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 diff --git a/autoload/zencoding/lang/slim.vim b/autoload/zencoding/lang/slim.vim index 955a636..4ebfec6 100644 --- a/autoload/zencoding/lang/slim.vim +++ b/autoload/zencoding/lang/slim.vim @@ -28,7 +28,8 @@ function! zencoding#lang#slim#toString(settings, current, type, inline, filters, let val = substitute(val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') endwhile let attr = substitute(attr, '\$$', itemno+1, '') - if val =~ '\s' + let sval = substitute(val, '\${cursor}', '', '') + if sval =~ '\s' || sval == '' let str .= ' ' . attr . '="' . val . '"' else let str .= ' ' . attr . '=' . val @@ -116,3 +117,13 @@ endfunction function! zencoding#lang#slim#balanceTag(flag) range 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