46 lines
1014 B
VimL
Executable File
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 = []
|
|
|