The Ruby world and many others have a
tap() method on a class way up
in the hierarchy near
God that lets the bug hunting developer peek
inside of objects during execution to see what the gnomes are getting
up to under the covers. I needed just such a tool for my latest
dabblings in Vim, so I built one and thought I’d share it here:
function! Tap(thing)
echom string(a:thing)
return a:thing
endfunction
|
It’s not very intimidating, I know, but thats a little gem of a
function. I used it to debug the setting of the
includeexpr option in
Vim, as shown here:
set includeexpr=Tap(substitute(Tap(v:fname),'\\${\\?\\(\\w\\+\\)}\\?','\\=expand(\"$\".submatch(1))','g'))
|
I was suspicious that the
v:fname variable was not being set properly
before
includeexpr was being evaluated by Vim.
Tap() proved that to be
the case which allowed me to focus my debug efforts on the real cause,
instead of continuing to waste time fretting over the search and
replace patterns in the
substitute and whether I’d escaped them
correctly or not. I only wish the
Tap() inspiration had come to me
sooner than it really did. Oh well… with
Tap() as a permanent
fixture in my
~/.vimrc, hopefully it won’t take me as long to think of
it the next time I need its services.