public
Last active

  • Download Gist
cucumbertables.vim
VimL
1 2 3 4 5 6 7 8 9 10 11 12
inoremap <silent> <Bar> <Bar><Esc>:call <SID>align()<CR>a
 
function! s:align()
let p = '^\s*|\s.*\s|\s*$'
if exists(':Tabularize') && getline('.') =~# '^\s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g'))
let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*'))
Tabularize/|/l1
normal! 0
call search(repeat('[^|]*|',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
endif
endfunction

I'm wondering, what does the "l1" option on the match of the Tabularize?

l means left align; 1 means one space of padding.

Would you recommend putting this in a ftplugin so as to not slow down non-cucumber-related file editing?

If you do, make sure you add <buffer> to the map. In practice, I haven't had any issues with it being global.

Ah cool, thank you!

FYI: I just added this to my after/ftplugin/cucumber.vim and it works like a charm. Very nice.

Thanks! Added this to my vimrc and it works perfectly.

I copied this into my .vimrc. And I have installed Tabular.vim successfully.
But it doesn't work. I input ab | cd | ef and nothing happened. What's wrong?!

@jznhljg, that doesn't look like a valid Cucumber table to me.

@tpope, I just want to edit some plain text, can I use this function to automatically adjust the padding space?

Sure, if you relax the regex a bit. As it stands now, it's hell bent on avoiding false positives.

@tpope, I am not familiar with regex. Can you do me a favor? Or a clue?

Thanks a lot!

Arthur Lee
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)

I was looking for some solution for dealing with Cuke tables in gVIM similar or close to the one TextMate bundle for Cucumber has.
But this is so much better, thanks a lot Tim, as usual :)

For those interested, I made a modified version of this that does the same for equals (=) signs. You can find it in the list of forks to the right, or here: https://gist.github.com/1258015
Credits still go to Tim for the awesome original, I just made a few small changes.

For those who are interested I made a little plugin that you can use easily with pathogen, it is available here: https://github.com/quentindecock/vim-cucumber-align-pipes

Feedback are welcome,

Enjoy,

For those interested, I made a little plugin that extends this concept to creating full fledged tables as you type :). It is available here - https://github.com/dhruvasagar/vim-table-mode. You can put let g:table_mode_border=0 in your vimrc to get the same behavior as this plugin.

Also you can change the separator itself by let g:table_mode_separator='=' or whatever you need to achieve the same effect for other type of characters. Please refer to the :h table-mode.txt for more information. Feedback is welcome :).

Thanks.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.