| 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 | 
|  |