Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This repository is unmaintained!

The code of plone-mode is not stable and not really implemented.

Most of the features described here are integrated into e-max as plone-bundle.


plone-mode.el provides tools for developing plone / zope / python with emacs.



plone-mode.el is meant to be used in a buildout-based project environment. It provides interfaces to various development tools and extensions which are recommended to be installed within your project using buildout (such as mrs.developer and plone.reload) or globally with easy_install (such as i18ndude). Dependenging on what plone-mode.el features you wan't to use, you may need to install some of theese tools.

Supported development tools:


  • Changelog username


Running zope webserver within emacs

Run the zope webserver in foreground mode within emacs. This uses the emacs Grand Unified Debugger mode (GDB) wich allows to easily use the Python debugger (PDB).


  • Buildout based environment.

Default binding: M-p f

Reload python code

Reloads modified development python code dynamically without restarting the zope webserver.


Default binding: M-p r

Following python imports

This feature makes it possible to open the definition file of a import. Move the cursor in a python file to a python import line and press the key binding. The file where the imported item is defined will be opened. When the binding is invoked on a symbol somewhere in the code, it will try to find the import or the definition in above in the code.


Default binding: M-p g

Run i18ndude for generating translation files

i18ndude is a great command line tool for generating .pot- and .po-files, used for translation in zope / plone. This features allows to build the .pot-files automatically, that means to search translatable strings in your package and generate a translation template (.pot). In a second step you can the sync the .pot-file with a language specific .po-file and translate the missing strings directly within emacs.

As translation domain the name of the package is taken. That means if you are editing a file within the package "" and then invoking a i18ndude command, the domain name "" will be used. The translation files are stored in a "locales" directory within your package, old-style "i18n" directories are not supported, also old-style Products are not supported.


  • Python package (old-style Products not supported)
  • i18ndude installed and available in PATH
  • Only for domain with the same name as the package.

Default bindings:

  • Build .pot-file: M-p i
  • Sync with .po-file: M-p M-i

Create a dependency graph

Create a dependency-graph (PDF) of the depencies within your packages. By default all dependencies within development-packages are respected.


  • --follow: Also show packages in the graph which are not in development mode (meaning located in your src-directory) but has a direct dependency from a development-package.
  • --recursive: Show all packages wich have a direct or a indirect dependency from a development package.

See the mrs.developer documentation for further infos about the options.


  • Buildout based environment.
  • Development packages are within a "src" directory and the current buffer is somewhere within this directory.
  • mrs.developer is installed as script in your PATH
  • pygraphviz and Graphviz are installed.

Make changelog entry

In plone packages the changelog is usually located in docs/HISTORY.txt or in CHANGES.txt. This feature will search the right changelog file, open it and add your name in the common changelog form.

See the Configuration section for configuring your name.


  • Package with either a docs/HISTORY.txt or a `CHANGES.txt

Default binding: M-p c


Emacs minor mode for plone development.






No releases published


No packages published