From 0b9a40b45fe21ef9c7989eb31cf56d309e0447d4 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Wed, 3 Dec 2014 13:44:31 +0900 Subject: [PATCH] Properly handle tabs --- autoload/argwrap.vim | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/autoload/argwrap.vim b/autoload/argwrap.vim index 8aaf7bd..beb59bb 100644 --- a/autoload/argwrap.vim +++ b/autoload/argwrap.vim @@ -132,8 +132,8 @@ function! argwrap#extractContainer(range) let l:textStart = getline(a:range.lineStart) let l:textEnd = getline(a:range.lineEnd) - let l:indent = match(l:textStart, '\S') - let l:prefix = l:textStart[l:indent : a:range.colStart - 1] + let l:indent = matchstr(l:textStart, '\s*') + let l:prefix = l:textStart[strlen(l:indent) : a:range.colStart - 1] let l:suffix = l:textEnd[a:range.colEnd - 1:] return {'indent': l:indent, 'prefix': l:prefix, 'suffix': l:suffix} @@ -141,14 +141,13 @@ endfunction function! argwrap#wrapContainer(range, container, arguments, style) let l:argCount = len(a:arguments) - let l:padding = repeat(' ', a:container.indent) let l:line = a:range.lineStart if a:style ==? 'default' - call setline(l:line, l:padding . a:container.prefix) + call setline(l:line, a:container.indent . a:container.prefix) for l:index in range(l:argCount) - let l:text = l:padding . a:arguments[l:index] + let l:text = a:container.indent . a:arguments[l:index] if l:index < l:argCount - 1 let l:text .= ',' endif @@ -158,9 +157,9 @@ function! argwrap#wrapContainer(range, container, arguments, style) exec printf('%s>', l:line) endfor - call append(l:line, l:padding . a:container.suffix) + call append(l:line, a:container.indent . a:container.suffix) elseif a:style ==? 'bx' - let l:lineText = l:padding . a:container.prefix + let l:lineText = a:container.indent . a:container.prefix if l:argCount > 0 let l:lineText .= a:arguments[0] let l:arguments = a:arguments[1:] @@ -170,20 +169,20 @@ function! argwrap#wrapContainer(range, container, arguments, style) call setline(l:line, l:lineText) for l:index in range(l:argCount) - let l:text = ', ' . l:padding . l:arguments[l:index] + let l:text = a:container.indent . ', ' . l:arguments[l:index] call append(l:line, l:text) let l:line += 1 exec printf('%s>', l:line) endfor - call append(l:line, l:padding . a:container.suffix) + call append(l:line, a:container.indent . a:container.suffix) exec printf('%s>', l:line + 1) endif endfunction function! argwrap#unwrapContainer(range, container, arguments) - let l:text = repeat(' ', a:container.indent) . a:container.prefix . join(a:arguments, ', ') . a:container.suffix + let l:text = a:container.indent . a:container.prefix . join(a:arguments, ', ') . a:container.suffix call setline(a:range.lineStart, l:text) exec printf('silent %d,%dd_', a:range.lineStart + 1, a:range.lineEnd) endfunction