Tuesday, March 23, 2010

Django on Pydev (take #2)

It's nice that the previous post on Django on Pydev made so many people happy :)

There were many comments and I decided for writing a separate post to answer those and explain a bit better what should be the final state of the integration.

1. Django templates

There will be a special editor for that, but this will not be in the next release. This editor will be based upon the new Aptana Studio 3 (if you don't know about it, there's a preview explaining it at http://vimeo.com/channels/radrails#9895797). Initially it may be simpler (at least syntax highlighting and outline) and it should shape to have code-completion and other features in the future.

2. Custom Django actions

A new nightly has just been pushed with support for any custom action to manage.py. There's still room for improvement, like automatically going through the manage.py help and executing a command or asking help on that, but this won't be available for the upcoming release.

3. Code Analysis of Django

Most things should work as it is now, but I'm waiting for bug-reports saying what exactly Pydev fails to acknowledge on Django.

And that's it for the current plans... if there are more suggestions, they're very welcome!

Sunday, March 21, 2010

Django on Pydev

The current nightly build (which will be 1.5.6) is already providing some special support for Django (special thanks to Leo Soto for providing a good base for building upon).

There are still some details until the final release, but I'd like to get some feedback before that.

The special support goes in the following:

1. Create a 'Pydev Django' project (will use django to create a manage.py, settings.py and urls.py)



2. For an existing project, just right click it and choose 'Pydev > Set as Django project)'




3. Custom Django actions can be accessed right clicking a project with the Django config and choosing Django > action.



4. Note that the Shell with django environment will create a shell properly configured with your settings, providing the default features from the pydev shell, such as code completion, history, context assistants (ctrl+1), etc (see: http://pydev.org/manual_adv_interactive_console.html for more details)




5. Run as Django/Debug as Django are available (note that they set the --no-reload by default, otherwise the debugger may have some issues and other processes may be kept alive when closing the process spawned by Pydev).



And that's it. It's all there in the nightly build already (I still have some features and minor adjustments to do, but that should already give a good idea of what will be available, and I'm waiting for feedback to know if there's something missing that really should be there).

Tuesday, March 02, 2010

Preparing for upcoming release (testers needed)

Pydev 1.5.5 is getting near a new release. The current nightly build (1.5.5.2010030222) should be the released version if no critical bugs are found until Thursday.

The major highlights for this release are:

1. The contents of the interpreter PYTHONPATH are all shown in the Pydev Package explorer (so, the contents of those modules can be seen, including zip file contents)

2. Predefined completions can be used in Pydev. Those are plain Python 3.0 files with the interface for modules, and there's a choice where Pydev creates those files from QScintilla .api files (see: unpublished instructions at git for more details)

3. The find/replace dialog in Pydev has a new button which can be used for finding the current string being searched for in the currently opened editors (although because of an Eclipse limitation it doesn't work on external files, just editors opened with files under a project).

4. Improved hover support for compiled modules.

Well, that's it for this release.

For the next release, the focus will be on a special Django integration in Pydev.

Leo Soto has been working for some time on it already and I was eagerly waiting for it (available at http://github.com/leosoto/Pydev/tree/bingo), so, the next release will be integrating that branch into Pydev and making it as smooth as possible for Django developers inside of Pydev.

Wednesday, January 20, 2010

Pydev 1.5.4 released

Yes, Pydev 1.5.4 is out already.

The most noteworthy things done in this release were:

It's now possible to create your own template variables through Jython scripting.

A bug that could deadlock Pydev in a race condition was fixed.

Aside from that, many little things were done:

There are now actions to copy the qualified name of your current context to the clipboard and go to the matching bracket.

The wrap paragraph is now also available in the source menu (it seems many didn't know it existed), and Ctrl+2 will bring up a dialog with the available options (although it can still be completed as before -- in fact, there's a delay in bringing up the dialog so that it doesn't bother if you already know what to choose).

The hover is improved and will actually show the code related to the variable being hovered as well as a link to the definition if hovering over a method or class.

Several minor bugs and enhancements in the grammars used for Python parsing as well as in code analysis and code completion were also done.

The complete details can be seen at http://pydev.org/

Saturday, January 09, 2010

Templates on Pydev (with Jython scripting)

One really nice feature that has just been added to Pydev (available in the nightly build) is the possibility of extending the variables that are available for templates through Jython scripting.

It opens lots of possibilities, as when it's resolved it has access to the python code being edited (and all the available modules and Pydev APIs).

Some default templates were added already taking advantage of that (see: pytemplate_defaults.py as a reference -- the docstring explains how to create your own templates).

The image below shows the variables created in the defaults (already using Jython scripting -- note that when multiple superclasses are available, the ${superclass} variable enables the user to choose which one to use):





This enabled the print template to work as expected (giving only 'print ' in python 2.x and 'print()' in python 3.x, as it can 'know' which grammar you are using).

To finish, 2 other templates were creating taking advantage of the context:
super : super(MyClass, self).CurrentMethod()
super_raw : MySuperClass.CurrentMethod(self)

If anyone has other 'must have' template suggestions now that this is available, those are very welcome.

On a side note, the current nightly build is pretty stable (and should be the new released version unless there's some critical error lying there found in the next 2-3 days), so, it should be safe to get it to experiment with those.