django-plus.vim

by tweekmonster

tweekmonster /django-plus.vim

:guitar: Improvements to the handling of Django related files in Vim

138 Stars 8 Forks Last release: Not found MIT License 31 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

django-plus.vim


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:

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 is
    settings.py
    or if the file is in the same directory as
    settings.py
    . (
    b:is_django
    will still be set)
  • Optionally append
    .django
    to the
    filetype
    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 in
    INSTALLED_APPS
    .
  • g:django_filetypes
    takes a list of glob patterns to append the
    django
    filetype to matching files. e.g.
    *.xml
    will have the filetype
    xml.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.
    when
    b:is_django
    is present in a
    .py
    file.
  • Completions for template files when using
    render()
    ,
    get_template()
    ,
    render_to_string()
    ,
    render_to_response()
    , or
    template_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 and
    UltiSnips#FileTypeChanged()
    is called to ensure that
    :UltiSnipsEdit
    opens
    django.snippets
    by default instead of
    python.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
    opens
    htmldjango.snippets
    by default instead of
    html.snippets
    .

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.