dotar/vim/autoload/railmoon/trace.vim
2011-11-17 16:00:49 -06:00

46 lines
1014 B
VimL
Executable File

" Author: Mykola Golubyev ( Nickolay Golubev )
" Email: golubev.nikolay@gmail.com
" Site: www.railmoon.com
" Module: railmoon#trace
" Purpose: help write debug information and call stack
function! railmoon#trace#start_debug(file_name)
let s:is_debug_on = 1
let s:debug = 1
let s:log_file_name = a:file_name
call delete(s:log_file_name)
exec 'redir! > '.s:log_file_name
echo 'start_debug'
exec 'redir END'
endfunction
function! railmoon#trace#push(function_name)
if s:is_debug_on
call add(s:stack, a:function_name)
endif
endfunction
function! railmoon#trace#pop()
if s:is_debug_on
let s:stack = s:stack[ : -2]
endif
endfunction
function! railmoon#trace#debug(message)
if s:debug
call s:write(a:message)
endif
endfunction
function! s:write(message)
exec 'redir >> '.s:log_file_name
silent echo '[ '.join(s:stack, ' >> ').'] '.a:message
exec 'redir END'
endfunction
let s:is_debug_on = 0
let s:debug = 0
let s:stack = []