diff --git a/autoload/emmet.vim b/autoload/emmet.vim index 69852df..0341742 100644 --- a/autoload/emmet.vim +++ b/autoload/emmet.vim @@ -1,7 +1,7 @@ "============================================================================= " emmet.vim " Author: Yasuhiro Matsumoto -" Last Change: 25-Aug-2013. +" Last Change: 09-Sep-2013. let s:save_cpo = &cpo set cpo&vim @@ -636,9 +636,11 @@ function! emmet#moveNextPrev(flag) endfunction function! emmet#imageSize() + let orgpos = emmet#util#getcurpos() let type = emmet#getFileType() let rtype = emmet#lang#exists(type) ? type : 'html' call emmet#lang#{rtype}#imageSize() + silent! call setpos('.', orgpos) return '' endfunction diff --git a/autoload/emmet/lang/css.vim b/autoload/emmet/lang/css.vim index 64b3f67..61f315b 100644 --- a/autoload/emmet/lang/css.vim +++ b/autoload/emmet/lang/css.vim @@ -194,7 +194,7 @@ function! emmet#lang#css#balanceTag(flag) range if a:flag == -2 || a:flag == 2 let curpos = [0, line("'<"), col("'<"), 0] else - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() endif let block = emmet#util#getVisualBlock() if !emmet#util#regionIsValid(block) diff --git a/autoload/emmet/lang/haml.vim b/autoload/emmet/lang/haml.vim index e3f5fa9..5242997 100644 --- a/autoload/emmet/lang/haml.vim +++ b/autoload/emmet/lang/haml.vim @@ -178,7 +178,7 @@ function! emmet#lang#haml#balanceTag(flag) range if a:flag == -2 || a:flag == 2 let curpos = [0, line("'<"), col("'<"), 0] else - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() endif let n = curpos[1] let ml = len(matchstr(getline(n), '^\s*')) diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim index fb80785..28bd539 100644 --- a/autoload/emmet/lang/html.vim +++ b/autoload/emmet/lang/html.vim @@ -516,8 +516,8 @@ function! emmet#lang#html#parseTag(tag) endfunction function! emmet#lang#html#toggleComment() - let orgpos = getpos('.') - let curpos = getpos('.') + let orgpos = emmet#util#getcurpos() + let curpos = emmet#util#getcurpos() let mx = '<\%#[^>]*>' while 1 let block = emmet#util#searchRegion('') @@ -535,7 +535,7 @@ function! emmet#lang#html#toggleComment() if pos1[0] == 0 && pos1[1] == 0 return endif - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() continue endif let pos1 = block[0] @@ -586,7 +586,7 @@ function! emmet#lang#html#balanceTag(flag) range if a:flag == -2 || a:flag == 2 let curpos = [0, line("'<"), col("'<"), 0] else - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() endif let settings = emmet#getSettings() @@ -658,7 +658,7 @@ function! emmet#lang#html#moveNextPrev(flag) endfunction function! emmet#lang#html#splitJoinTag() - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() while 1 let mx = '<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' let pos1 = searchpos(mx, 'bcnW') @@ -698,7 +698,7 @@ function! emmet#lang#html#splitJoinTag() endfunction function! emmet#lang#html#removeTag() - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() while 1 let mx = '<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' let pos1 = searchpos(mx, 'bcnW') diff --git a/autoload/emmet/lang/sass.vim b/autoload/emmet/lang/sass.vim index 1cb8a8f..ba408a1 100644 --- a/autoload/emmet/lang/sass.vim +++ b/autoload/emmet/lang/sass.vim @@ -79,7 +79,7 @@ function! emmet#lang#sass#balanceTag(flag) range if a:flag == -2 || a:flag == 2 let curpos = [0, line("'<"), col("'<"), 0] else - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() endif let n = curpos[1] let ml = len(matchstr(getline(n), '^\s*')) diff --git a/autoload/emmet/lang/scss.vim b/autoload/emmet/lang/scss.vim index 677880e..58bb7ea 100644 --- a/autoload/emmet/lang/scss.vim +++ b/autoload/emmet/lang/scss.vim @@ -81,7 +81,7 @@ function! emmet#lang#scss#balanceTag(flag) range let curpos = [0, line("'<"), col("'<"), 0] call setpos('.', curpos) else - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() endif if a:flag < 0 let ret = searchpair('}', '', '.\zs{') @@ -89,7 +89,7 @@ function! emmet#lang#scss#balanceTag(flag) range let ret = searchpair('{', '', '}', 'bW') endif if ret > 0 - let pos1 = getpos('.')[1:2] + let pos1 = emmet#util#getcurpos()[1:2] if a:flag < 0 let pos2 = searchpairpos('{', '', '}') else diff --git a/autoload/emmet/lang/slim.vim b/autoload/emmet/lang/slim.vim index 98c9912..820dea2 100644 --- a/autoload/emmet/lang/slim.vim +++ b/autoload/emmet/lang/slim.vim @@ -156,7 +156,7 @@ function! emmet#lang#slim#balanceTag(flag) range if a:flag == -2 || a:flag == 2 let curpos = [0, line("'<"), col("'<"), 0] else - let curpos = getpos('.') + let curpos = emmet#util#getcurpos() endif let n = curpos[1] let ml = len(matchstr(getline(n), '^\s*')) diff --git a/autoload/emmet/util.vim b/autoload/emmet/util.vim index ef3d96f..c5c015d 100644 --- a/autoload/emmet/util.vim +++ b/autoload/emmet/util.vim @@ -93,7 +93,7 @@ endfunction " this function return 0 or 1 function! emmet#util#cursorInRegion(region) if !emmet#util#regionIsValid(a:region) | return 0 | endif - let cur = getpos('.')[1:2] + let cur = emmet#util#getcurpos()[1:2] return emmet#util#pointInRegion(cur, a:region) endfunction @@ -107,7 +107,12 @@ endfunction " search_region : make region from pattern which is composing start/end " this function return array of position function! emmet#util#searchRegion(start, end) - return [searchpairpos(a:start, '', a:end, 'bcnW'), searchpairpos(a:start, '\%#', a:end, 'nW')] + let b = searchpairpos(a:start, '', a:end, 'bcnW') + if b == [0, 0] + return [searchpairpos(a:start, '', a:end, 'bnW'), searchpairpos(a:start, '\%#', a:end, 'ncW')] + else + return [b, searchpairpos(a:start, '', a:end. '', 'nW')] + endif endfunction " get_content : get content in region @@ -311,3 +316,11 @@ function! emmet#util#cache(name, ...) endif call writefile(split(content, "\n"), file) endfunction + +function! emmet#util#getcurpos() + let pos = getpos('.') + if mode(0) == 'i' && pos[2] > 0 + let pos[2] -=1 + endif + return pos +endfunction