Improvements to the handling of Django related files in Vim, some of which are
based on Steve Losh's htmldjango scripts.
Django support in Vim sucks.
| What Sucks? | Sucks? |
|---|---|
Hard-coded htmldjango filetype for any .html file |
Yes |
| HTML indentation | Yes |
QuerySet completions |
Yes |
settings.py variable completions |
Yes |
| Template tag and filter completions | Yes |
Template file completion for {% include %} and {% extends %} |
Yes |
| Template file completion for rendering functions | Yes |
To help you understand the difference this plugin makes, I used science:
As you can see, one line goes up. However, the other line doesn't go up that much. It doesn't get any clearer than that.
A summary of improvements to Django development in Vim.
- Django is detected by searching parent directories for clues that indicate the current file is within a Django project.
b:is_djangois set in any file that's within a Django project. This could be useful for your personal scripts.b:is_django_settingsis set if the file issettings.pyor if the file is in the same directory assettings.py. (b:is_djangowill still be set)- Optionally append
.djangoto thefiletypefor files found within a Django project. - If a Django project's
manage.pyscript is found, completions will include your settings and templatetags found inINSTALLED_APPS. g:django_filetypestakes a list of glob patterns to append thedjangofiletype to matching files. e.g.*.xmlwill have the filetypexml.djangoif the file is found in a Django project.
- Completions for Django settings when
b:is_django_settingsis present. - Completions for
settings.whenb:is_djangois present in a.pyfile. - Completions for template files when using
render(),get_template(),render_to_string(),render_to_response(), ortemplate_name =. - QuerySets could be lurking anywhere. That's why QuerySet completions will be included for basically anything after a period.
- If you are using
Ultisnips, Django snippets are enabled andUltiSnips#FileTypeChanged()is called to ensure that:UltiSnipsEditopensdjango.snippetsby default instead ofpython.snippets.
- The filetype is set to
htmldjangowhen editing HTML files. - Basic completions for template tags and filters.
- Completions for template files when using
{% extends %}or{% include %}. - Django tags are indented correctly, including custom tags.
matchitconfiguration for Django tags, including custom tags. Additionally, the cursor is placed at the beginning of the tag name.- Tag and variable blocks are highlighted within script tags, style tags, and HTML attributes.
- If you are using Ultisnips, HTML snippets are enabled and
UltiSnips#FileTypeChanged()is called to ensure that:UltiSnipsEditopenshtmldjango.snippetsby default instead ofhtml.snippets.

