diff --git a/autoload/vebugger/jdb.vim b/autoload/vebugger/jdb.vim index a2c9ed2..319fe3a 100644 --- a/autoload/vebugger/jdb.vim +++ b/autoload/vebugger/jdb.vim @@ -87,14 +87,15 @@ function! s:findFolderFromStackTrace(src,nameFromStackTrace,frameNumber) endif " If no such tag was found, try to find it using the src path. - let l:path=a:src - for l:dirname in split(a:nameFromStackTrace,'\.') - let l:nextPath=l:path.'/'.fnameescape(l:dirname) - if empty(glob(l:nextPath)) - return l:path - endif - let l:path=l:nextPath - endfor + for l:path in vebugger#util#listify(a:src) + for l:dirname in split(a:nameFromStackTrace,'\.') + let l:nextPath=l:path.'/'.fnameescape(l:dirname) + if empty(glob(l:nextPath)) + return l:path + endif + let l:path=l:nextPath + endfor + endfor return l:path endfunction diff --git a/autoload/vebugger/util.vim b/autoload/vebugger/util.vim index 2db1d12..b05ab50 100644 --- a/autoload/vebugger/util.vim +++ b/autoload/vebugger/util.vim @@ -115,3 +115,12 @@ function! vebugger#util#isPathAbsolute(path) return a:path[0]=~'\v^[/~$]' "Absolute paths in Linux start with ~(home),/(root dir) or $(environment variable) endif endfunction + +function! vebugger#util#listify(stringOrList) + if type(a:stringOrList) == type([]) + return copy(a:stringOrList) " so it could safely be modified by map&filter + else + return [a:stringOrList] + endif +endfunction + diff --git a/doc/vebugger.txt b/doc/vebugger.txt index 5a7eeb5..9202029 100644 --- a/doc/vebugger.txt +++ b/doc/vebugger.txt @@ -202,7 +202,7 @@ Unlike in the other debuggers, the first argument here is not the name of a file - it's the name of the class to run. The supported extra arguments are: * "args": Command line arguments for the debugged program * "classpath": Where to look for class files -* "srcpath": Where to look for source files +* "srcpath": Where to look for source files. You can have multiple srcpaths, passed as a list * "version": The version of the debugger to run If you don't supply "classpath" and "srcpath", Vebugger will assume you are using the current directory for source files and class files. @@ -210,6 +210,10 @@ using the current directory for source files and class files. JDB does not have a command for starting it, since you usually want to supply "classpath" and "srcpath". +If you need Vebugger to search for the source files in multiple locations, you can +specify `srcpath` as a list. Vebugger will search on all these folders +and the first match will be returned as the Source file to be shown. + LAUNCHING RDEBUG *vebugger-rdebug*