sponsor Vim development Vim logo Vim Book Ad

vim-htmldjango_omnicomplete : htmldjango filetype omnicomplete - completes template tags/filters/variables

 script karma  Rating 13/4, Downloaded by 2142  Comments, bugs, improvements  Vim wiki

created by
Michael Brown
script type
Vim htmldjango autocomplete

An omnicomplete tailored to django templates "tags/variables/filters/templates" I mainly find it useful for completing template and static directory paths. It will also fall back to regular html omnicomplete

Repo: http://github.com/mjbrownie/vim-htmldjango_omnicomplete (star it for updates, feedback appreciated)


    block: https://github.com/mjbrownie/vim-htmldjango_omnicomplete/raw/master/examples/block_eample.png
    url: https://github.com/mjbrownie/vim-htmldjango_omnicomplete/raw/master/examples/url_example.png
    extends: https://github.com/mjbrownie/vim-htmldjango_omnicomplete/blob/master/examples/extends_example.png


    1. Filters

        {{ somevar|a<c-x><c-o>}} should complete 'add' , 'addslashes'

    2. Tags

        {% cy<c-x><x-o> %} should complete 'cycle'

    3. Load statements

        It also should grab any libs you have {% load tag_lib %} in the file.
        Although it needs them in INSTALLED_APPS.

        {% load <c-x><c-o> %} will complete libraries (eg. 'cache', 'humanize')

    4. template filenames

        {% extends '<c-x><c-o>' %} will list base.html ... etc

    5. url complete

        {% url <c-x><c-o> %} should complete views and named urls

    6. super block complete

        eg {% block c<c-x><c-o> %} to complete 'content' or something defined
        in an extended template.

    7. static files complete

        eg {% static "r<c-x><c-o>" %}

        <script src="{% static "<c-x><c-o>" %}" /> - completes js files in static
        <style src="{% static "<c-x><c-o>" %}" /> - completes css files in static
        <img src="{% static "<c-x><c-o>" %}" /> - completes img files in static
        {{ s<c-x><x-o> }}

    8. optional variable name completion (placeholder)

        will complete any maps defined in the python htmldjango_opts['variable']
        dict list. See below for info.

    Where possible info panels show the functions __doc__. Most of the
    internal ones are decent.



    I have this working on command line vim for linux and mac (I had to compile my own for osx with ./configure --enable-pythoninterp --with-features=huge).

    also I have DJANGO_SETTINGS_MODULE set in my vimrc. please look at my dotfiles if you are having trouble



    1. I like pathogen/Vundle clone into ~/.vim/bundle directory.

        Alternately just stick the vim file in your ~/.vim/autoload/ dir.

    2. in .vimrc set the omnifunc Eg.

        au FileType htmldjango set omnifunc=htmldjangocomplete#CompleteDjango

    3. Optional: At the moment you need to force a html flavour for htmlcompletion

        in .vimrc

        let g:htmldjangocomplete_html_flavour = 'html401s'

        :verbose function htmlcomplete#CheckDoctype for DocType details

            'html401t' 'xhtml10s' 'html32' 'html40t' 'html40f' 'html40s'
            'html401t' 'html401f' 'html401s' 'xhtml10t' 'xhtml10f' 'xhtml10s'

            'html5' if you have html5.vim


    django needs to be in sys.path along with DJANGO_SETTINGS_MODULE in your

    To test...

    :python import django

    should not result in an error

    :python from django.conf import settings; print settings.INSTALLED_APPS
    :python from django.conf import settings; print settings.TEMPLATE_DIRS

    should show the apps template dirs you need

    I've only tested this on a mac with vim 7.3 and django 1.4
install details
pathogen and github clone recommended as updates will be less frequent here.

cd ~/.vim/bundle && git clone git@github.com:mjbrownie/vim-htmldjango_omnicomplete.git

or extract and copy .vim file to ~/.vim/autoload

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
vim-htmldjango_omnicomplete-0.9.4.zip 0.9.4 2015-05-29 7.0 Michael Brown Django 1.8 compatibility
vim-htmldjango_omnicomplete-0.9.3.zip 0.9.3 2015-01-06 7.0 Michael Brown Added support for django 1.7+ - Thanks Daniel Hahler
vim-htmldjango_omnicomplete-master.tar.gz 0.9 2012-11-26 7.0 Michael Brown Added staticfiles {% static %} for js/css/img in all app/project directories
vim-htmldjango_omnicomplete-b54beb0e57.tar.gz 0.8.1 2012-11-24 7.0 Michael Brown Added warning suppression to stop depreciation messages in apps appearing on initial load.
mjbrownie-vim-htmldjango_omnicomplete-7c6d8c7.tar.gz 0.8 2012-05-21 7.2 Michael Brown added {% block | %} name autocomplete
mjbrownie-vim-htmldjango_omnicomplete-69a285f.zip 0.7 2012-04-28 7.0 Michael Brown added named url completion, improved support for inline include tag matching.
Fixed missing glob import
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.