2015-07-16 2 views
1

Мой корневой каталог проекта имеет следующее:Vim Ctrlp Plugin: ctrlp_root_markers игнорирует значения, которые я установил?

root/ 
    .git 
    Assets 
    Library 
    obj 
    Temp 
    etc. 

Ctrlp по умолчанию выглядит в этом корневом каталоге. Я хочу настроить каталог, в который он начинает искать, в «Активы». Я посмотрел на документы и читать в несколько ссылок, которые я должен использовать ctrlp_root_markers, так что в моем vimrc:

let g:ctrlp_root_markers = ['Assets'] 

Но затем вызвать Ctrlp в Vim, пока я в любом исходном файле под активами, он всегда начинает свое индексирование/поиск из каталога root. Он просто игнорирует значения, заданные в списке корневых маркеров. (Я также пытался баловаться с ctrlp_working_path_mode)

Я закончил с использованием этой функции (которую я нашел скрытую SO):

function! FindProjectRoot(lookFor) 
    let pathMaker='%:p' 
    while(len(expand(pathMaker))>len(expand(pathMaker.':h'))) 
     let pathMaker=pathMaker.':h' 
     let fileToCheck=expand(pathMaker).'/'.a:lookFor 
     if filereadable(fileToCheck)||isdirectory(fileToCheck) 
      return expand(pathMaker).'/'.a:lookFor 
     endif 
    endwhile 
    return 0 
endfunction 

А затем переназначение C-р:

nnoremap <C-p> :CtrlP `=FindProjectRoot("Assets")`<CR> 

работает отлично. Но если функция должна быть включена в основной плагин, я считаю, что избыточно иметь дело с этим.

Любые идеи, что я делаю неправильно в настройке моих корневых маркеров?

Цените любую помощь!

ответ

1

То, что вы видите, - это ожидаемое поведение. Согласно docs:

'g:ctrlp_root_markers' 
Use this to set your own root markers in addition to the default ones (.git, 
.hg, .svn, .bzr, and _darcs). Your markers will take precedence: 
let g:ctrlp_root_markers = [''] 

Обратите внимание, что на проекте мерзавца .git папка является внутри корень проекта, как показано на вашем примере. Включив Assets в качестве корневого маркера, вы ничего не изменили.

Если вы намерены изменить корень проекта на Assets, тогда вы должны указать файл/папку, которая находится внутри этой папки.

+0

Спасибо за ответ. Я неправильно понял. Я думал, что Ctrlp берет каталог текущего редактируемого файла и начинает навигацию до тех пор, пока не достигнет одного из определенных корней, поэтому он должен достигнуть «Активы» и остановиться. – vexe