@property<EOL><INDENT>def variables(self):<DEDENT>
string = str(self)<EOL>constants = [match[<NUM_LIT:1>:-<NUM_LIT:1>] for match in re.findall('<STR_LIT>', string)]<EOL>variables = re.findall('<STR_LIT>', string)<EOL>return sorted(set(variables).difference(constants))<EOL>
Display a list of templatable variables present in the file.

Templating is accomplished by creating a bracketed object in the same
way that Python performs `string formatting`_. The editor is able to
replace the placeholder value of the template. Integer templates are
positional arguments.

.. _string formatting: https://docs.python.org/3.6/library/string.html