Pony Mode -a Django mode for emacs
A Django mode for emacs.
- Run dev server in an emacs buffer [C-c C-p r] * Checks to see if runserver_plus is available * If not uses in-built runserver
- Jump to current project in browser (start server if required) [C-c C-p b]
- Run test case at point in buffer [C-c C-p t]
- Run tests for current app in buffer [C-c C-p t]
- Run Syncdb on current project
- Management commands for current project in interactive buffer
- South integration - run south convert, schemamigration, migrate
- Run django shell in buffer [C-c C-p s] * Checks for shell_plus * If not defaults to shell
- Fabric integration [C-c C-p f]
- Startapp and dumpdata on current project within emacs
- Database integration with Emacs sql-mode interactive buffer [C-c C-c d
- Django Template minor mode with syntax highlighting for django template tags
- Snippet collection for django
- generate tags table for project
- run manage commands in interactive buffer
- Buildout integration
- Generate TAGS table for project to enable quick navigation
- Jump to template at point or from editing view [C-c C-p g t]
- Virtualenv integration
Pony mode will interact with fabric for your current project, building a list of functions to auto-complete, and running commands within a *fabric* buffer.
Pony mode is aware of buildout, and will use buildout-root/bin/django to run management commands when available, manage.py when not.
The command M-x django-buildout will re-run buildout for your current project
M-x django-buildout-bin will run a script from your buildout's bin directory in an interactive buffer
Generate a TAGS table for your project with M-x django-tags The exact command used is customisable through django-etags-command in M-x customize-group RET django
Run tests in in an interactive buffer, allowing you to drop out into ipdb/pdb as required.
Tests will default to --failfast, but you can turn that off with the variable django-test-failfast or set it in M-x customize-group django
in a test run buffer, C-c C-g will jump to the last file and line indicated by the traceback.
Pony-mode will check to see if your project is inside a virtualenv. If so, it will use the python interpreter from the virtualenv to run all django-related management commands.
Virtualenv support assumes that you initialized the virtualenv with something equivalent to
$ virtualenv my-cool-project [--no-site-packages]
$ cd my-cool-project
$ django-admin.py startproject awzm
$ source ./bin/activate
$ cd awzm
$ emacs settings.py
If your setup is different to this, then the implicit Virtualenv detection may fail.
Fear not though! - you can customise the interpreter used by Pony-mode with a pony-project.
Pony projects are defined in the .dir-locals.el file at the root of your current project.
The file should look something like this:
;; Pony mode config for the megacorp project ((nil ;; This applies these settings regardless of major mode
- (pony-settings . (make-pony-project
- :python "/home/david/virtualenvs/megacorp/production/bin/python" :settings "local_settings_file")
clone this repo somewhere $ git clone https://github.com/davidmiller/pony-mode
Byte-compile the file:
Add the path to your load-path:
(add-to-list 'load-path "path/to/pony-mode/src")
Add to your .emacs:
Pony-mode is under active development, so please report any bugs on the github issue tracker
Turns out that there is a mailing list at https://groups.google.com/group/pony-mode .
Low frequency, high helpfulness. Feel free to stop by for helps & chats...
Check the org-mode file pony.org for current todo/wish list
(If you can stand the org-to-github-markdown transition: https://github.com/davidmiller/pony-mode/blob/master/pony.org )hs