mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 07:20:04 +08:00
3.5 KiB
3.5 KiB
Improvements to the handling of Django related files in Vim, some of which are
based on Steve Losh's htmldjango
scripts.
Why?
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.
Improvements
A summary of improvements to Django development in Vim.
General
- Django is detected by searching parent directories for clues that indicate the current file is within a Django project.
b:is_django
is set in any file that's within a Django project. This could be useful for your personal scripts.b:is_django_settings
is set if the file issettings.py
or if the file is in the same directory assettings.py
. (b:is_django
will still be set)- Optionally append
.django
to thefiletype
for files found within a Django project. - If a Django project's
manage.py
script is found, completions will include your settings and templatetags found inINSTALLED_APPS
. g:django_filetypes
takes a list of glob patterns to append thedjango
filetype to matching files. e.g.*.xml
will have the filetypexml.django
if the file is found in a Django project.
Python
- Completions for Django settings when
b:is_django_settings
is present. - Completions for
settings.
whenb:is_django
is present in a.py
file. - 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:UltiSnipsEdit
opensdjango.snippets
by default instead ofpython.snippets
.
HTML
- The filetype is set to
htmldjango
when 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.
matchit
configuration 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:UltiSnipsEdit
openshtmldjango.snippets
by default instead ofhtml.snippets
.