summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-06-25 21:33:15 +0100
committerw0rp <devw0rp@gmail.com>2017-06-25 21:33:15 +0100
commit3828ea5b2655a03fe8de0332797386f42ae3b9ac (patch)
treedecf0cc38ea64ea7964ef8d3acbbc4839216b7d1 /autoload
parent8b557f346c5b528e1a309b17a5baf2d014c7276e (diff)
downloadale-3828ea5b2655a03fe8de0332797386f42ae3b9ac.zip
Detect .git directories for finding the project root for C projects
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/c.vim11
1 files changed, 9 insertions, 2 deletions
diff --git a/autoload/ale/c.vim b/autoload/ale/c.vim
index 17d72605..4fe2f547 100644
--- a/autoload/ale/c.vim
+++ b/autoload/ale/c.vim
@@ -2,11 +2,18 @@
" Description: Functions for integrating with C-family linters.
function! ale#c#FindProjectRoot(buffer) abort
- for l:project_filename in ['configure', 'Makefile', 'CMakeLists.txt']
+ for l:project_filename in ['.git/HEAD', 'configure', 'Makefile', 'CMakeLists.txt']
let l:full_path = ale#path#FindNearestFile(a:buffer, l:project_filename)
if !empty(l:full_path)
- return fnamemodify(l:full_path, ':h')
+ let l:path = fnamemodify(l:full_path, ':h')
+
+ " Correct .git path detection.
+ if fnamemodify(l:path, ':t') ==# '.git'
+ let l:path = fnamemodify(l:path, ':h')
+ endif
+
+ return l:path
endif
endfor