Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tweekmonster/django-plus.vim
:guitar: Improvements to the handling of Django related files in Vim
https://github.com/tweekmonster/django-plus.vim
django htmldjango neovim vim vim-plugins
Last synced: about 2 months ago
JSON representation
:guitar: Improvements to the handling of Django related files in Vim
- Host: GitHub
- URL: https://github.com/tweekmonster/django-plus.vim
- Owner: tweekmonster
- License: mit
- Created: 2016-06-10T04:13:55.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T20:10:07.000Z (almost 2 years ago)
- Last Synced: 2024-07-04T00:56:19.105Z (3 months ago)
- Topics: django, htmldjango, neovim, vim, vim-plugins
- Language: Vim script
- Size: 54.7 KB
- Stars: 177
- Watchers: 7
- Forks: 15
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
---
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](doc/science.png?raw=true)
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`.[deoplete]: https://github.com/Shougo/deoplete.nvim