Вопрос

I'm working on different projects and I want to select what plugins to enable (or disable) for every project. I'm using Pathogen to manage my plugins.

Plugins list:

.vim \
     |-bundle \
              |-vim-markdown
              |-latexsuite
              |-dirdo
              |-localvimrc
              |-nerdtree
     |-autostart
     |-doc

I've a main .vimrc which by default enables all plugins and a local lvimrc in every project main directory enabled by Localvimrc, in which I add some plugins to the disabled plugins list.

.vimrc

" Enables vim-pathogen and disables nearly all plugins
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
let g:pathogen_disabled = []
" This makes vim invoke Latex-Suite when you open a tex file.
filetype plugin on

latex-project's lvimrc

let g:pathogen_disabled = []
call add(g:pathogen_disabled, 'vim-markdown')

blog project's lvimrc

let g:pathogen_disabled = []
call add(g:pathogen_disabled, 'latexsuite')

The problem

Everything works fine except vim-markdown which is not loaded when I open my blog's html/markdown files (I've already added *.html extension in ftdetect/markdown.vim). Moreover, vim-markdown is not listed in the output of :scriptnames when editing my blog files.

Any hint?

Это было полезно?

Решение

As a VAM developer I could say that we had to add the following to make ftdetect plugins work. Briefly: adding paths to &rtp does not cause ftdetect files to be sourced, thus we have to source them manually. Pathogen also has a hack for this, but it uses filetype off then filetype on. This hack is not invoked when using pathogen#runtime_append_all_bundles, thus either add

call pathogen#cycle_filetype()

after pathogen#runtime_append_all_bundles or just use pathogen#infect instead which does this for you. If this does not work try also adding

unlet! g:did_load_filetype

before calling pathogen.

You can also migrate to VAM: like pathogen it puts all plugins to separate directories, but unlike it you have to specify which ones you want to activate instead of activating all by default and blacklisting. Here you can’t use documented API and avoid running this hack at the same time.

Другие советы

Did you know you could have more than one bundle directory? You could create different bundle directories for different projects.

So you could do something like this:

runtime bundle_main/pathogen/autoload/pathogen.vim
call pathogen#infect('bundle_main')
call pathogen#infect('bundle_projectX')
call pathogen#infect('bundle_projectY')
call pathogen#helptags()

You could conditionally load the plugin folders too.

Also with regards to vim-markdown: There are many implementations. See https://github.com/hallison/vim-markdown It seems to be more actively maintained.

Would adding filetype plugin on to every .lvimrc help to fix the problem?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top