Search code examples
markdownvimpathogen

Selectively enabling VIM plugins with Pathogen + Localvimrc


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?


Solution

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