Index: tools/gn/misc/vim/autoload/gn.vim |
diff --git a/tools/gn/misc/vim/autoload/gn.vim b/tools/gn/misc/vim/autoload/gn.vim |
index c1df012149b944e1bcceefde79f5a74467c5efe0..5573efc0af319a22466af73460f6b70488018b07 100644 |
--- a/tools/gn/misc/vim/autoload/gn.vim |
+++ b/tools/gn/misc/vim/autoload/gn.vim |
@@ -10,8 +10,17 @@ function! gn#TranslateToBuildFile(name) abort |
let l:new_path = substitute(l:new_path, '\v:.*$', '', '') |
" Append 'BUILD.gn', only if this is a directory and not a file |
- if isdirectory(l:new_path) |
- let l:new_path = substitute(l:new_path, '\v/?$', '/BUILD.gn', '') |
+ " Prefer using maktaba if it's available, but fallback to an alternative |
+ if exists('*maktaba#path#Basename') |
+ " Check if the last part of the path appears to be a file |
+ if maktaba#path#Basename(l:new_path) !~# '\V.' |
+ let l:new_path = maktaba#path#Join([l:new_path, 'BUILD.gn']) |
+ endif |
+ else |
+ " This will break if 'autochdir' is enabled |
+ if isdirectory(l:new_path) |
+ let l:new_path = substitute(l:new_path, '\v/?$', '/BUILD.gn', '') |
+ endif |
endif |
return l:new_path |
endfunction |