Skip to content

Commit be409b2

Browse files
authored
Merge pull request #6 from kaethorn/master
Find project root
2 parents be8a43a + 589a5f4 commit be409b2

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

plugin/side-search.vim

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,24 @@ function! SideSearchWinnr()
151151
return s:my_buffer_winnr()
152152
endfunction
153153

154+
function! s:guessProjectRoot()
155+
let l:cwd = getcwd()
156+
let l:maxdistance = len(split(l:cwd, '/')) - 2
157+
let l:searchdir = ''
158+
159+
while len(split(l:searchdir, '/')) < l:maxdistance
160+
for l:marker in ['.rootdir', '.git', '.hg', '.svn', 'bzr', '_darcs', 'build.xml']
161+
let l:dir = l:searchdir.l:marker
162+
if filereadable(l:dir) || isdirectory(l:dir)
163+
return l:searchdir
164+
endif
165+
endfor
166+
let l:searchdir = '../'.l:searchdir
167+
endwhile
168+
169+
return l:cwd
170+
endfunction
171+
154172
" The public facing function.
155173
" Accept 1 or 2 arguments which basically get passed directly
156174
" to the `ag` command.
@@ -173,8 +191,10 @@ function! SideSearch(args) abort
173191

174192
call s:append_guide()
175193

194+
" determine root directory
195+
let l:cwd = s:guessProjectRoot()
176196
" execute showing summary of stuff read (without silent)
177-
let b:cmd = g:side_search_prg . ' ' . a:args
197+
let b:cmd = g:side_search_prg . ' ' . a:args . ' ' . l:cwd
178198
" Thanks: https://github.com/rking/ag.vim/blob/master/autoload/ag.vim#L154
179199
let query = matchstr(a:args, "\\v(-)\@<!(\<)\@<=\\w+|['\"]\\zs.{-}\\ze['\"]")
180200
let b:escaped_query = shellescape(query)

0 commit comments

Comments
 (0)