Python plugin developer guide, part 1
I’m a Python newbie, so if you are at least that good :-D, you should be able to dive in and write useful Python plugins for your favourite editor too! This is the first in what I hope will be a series of notes and tutorials to help you along the way.
Where can I find examples
to steal from inspire me?
Any good developer knows that a good way to launch into a new area is to look at examples, so here is a list of places I’ve encountered.
- Plugins that came with Kate. These will be in the directory shown when you open the Python plugin configuration page, probably someplace like /usr/share/apps/kate/pate.
Remember to respect others’ copyrights, and give credit where it is due.
Where do I put my code?
The Pâté Python plugin looks in several places to find usable plugins, you should be able to use the Python console to find a directory you can use for your developments. Select it, and press “Reload”:
Launch it from the View menu, and then ask KDE where your files should go:
Or, if that’s a bit hard to read, like this:
>>> from PyKDE4.kdecore import *
>>> print KStandardDirs.locateLocal(“appdata”,”pate”)
Try the directory
If the given directory does not exist, create it. Press Reload, and the new directory should be visible:
You are ready to create your plugin in the new directory! This plugin directory will be added to the initial value of sys.path used for all plugins.
Plugin structure and naming
Your plugin can be just a single .py file, such as “console.py”, or multiple files contained in a directory. A single .py file is useful for simple things, but if you want to use .ui files or multiple Python files, a directory is recommended. If you use this option, the main plugin file must be named after the directory, so:
- If the directory is called “console”
- The main plugin file must be named “console/console.py”
In the directory case, the directory is added to sys.path to load the main plugin file and other Python modules you may have. Since sys.path is searched by Python in order to load modules, having the same plugin in multiple locations would be very confusing. Pâté supports this by refusing to load identically named plugins; instead they are highlighted as being hidden:
This also means you can just copy one of the plugins supplied with Kate to get started!