Pymacs -- usage example
For a recurring task I wanted to read a key in the minibuffer of Emacs and insert data from a xml file using xpath.
The simplified version of my solution using pymacs:
from Pymacs import lisp from lxml import etree interactions = {} def insert(): filename='data.xml' doc = etree.parse(filename) templates = doc.xpath('//tours/templates/template/@name') # list of templates to insert with numbers from 0 to n tlist = ["[%d] %s" % (i, templates[i]) for i in range(len(templates))] # show the list of templates to choose lisp.message("Which template (%s)?" % tlist) # read character key = lisp.read_char() # check if key is a number if key >= ord('0') and key <= ord('%d' % len(templates)): tempnum = key - ord('0') # save current cursor position start = lisp.point() # insert string lisp.insert("%s\n" % etree.tostring(doc.xpath("//tours/templates/template[@name='%s']" % templates[tempnum])[0], pretty_print=True, encoding=unicode)) # goto saved position lisp.goto_char(start) interactions[insert] = '' # set f6 for this function (mypymacsmodule is the name of this .py file) lisp.global_set_key((lisp.f6,), lisp.mypymacsmodule_insert)
The version I use has to modify the data from the xml file using a jinja based template.