A little help in VIM...
I'm working on an old, large codebase. (Who doesn't? ;)
Often, I'm handling modules containing around 8000 lines of code with subs (or JavaScript functions) being several hundred lines long - and I'd like to know how this monster is called I'm in right now.
So, thanks to Damian Conway's handy article series about vim scripts I created a quick and dirty hack to display the name of a sub (or a JavaScript function name) in my vim statusline:
function! FindSub()
let subpattern = '\(sub\|function\) \w\+'
let subline = search(subpattern, 'bnW')
if !subline
return 'not in sub'
else
return matchstr(getline(subline), subpattern)
endif
endfunction
which gets incorporated (with line number and git branch I'm in) via set statusline:
%-10.(%l\ of\ %L%)\ \ %<%r%{FindSub()}\ \ %=%{GitBranchInfoTokens()[0]}
It's not perfect yet, but you get the idea. I'd like to match it JavaScript object literal stuff like foobar : function () { ... too.
Result:


It automatically updates itself as the cursor moves into a different sub/function.
I ♥ Perl.
Thanks for the tip. Which color scheme do you use?
You might also be interested in vim TagList plugin.