[Python-Dev] The impact of '@' on Leo
Edward K. Ream
edreamleo at charter.net
Thu Aug 5 22:48:48 CEST 2004
The mandate for this post is the following from GvR:
> Please bring up the Leo issues in Python-dev.
The major concern I have with '@' syntax as it relates to Leo is the
potential for ongoing and never-ending conflicts between Leo's directives
and @x constructs in Python.
Leo presently supports the following directives:
@ (followed by one or more whitespace characters)
@all, @asis,
@c, @code, @color, @comment,
@delims, @doc,
@encoding, @end_raw,
@file, @first,
@header,
@ignore,
@killcolor,
@language, @last, @lineending,
@nocolor, @noheader, @noref, @nosent, @nowrap,
@others,
@pagewidth, @path,
@quiet,
@raw,
@root, @root-code, @root-doc,
@silent,
@tabwidth, @terse, @thin,
@unit,
@verbose,
@wrap
Worse, Leo allows plugins to define their own directives. There is already
a plugin that defines @wiki. Furthermore, @run, @test and @suite are also
used in special contexts.
Leo's users could probably live with a small, fixed set of @x constructs in
Python. But if the Python programmer can create new @x identifiers then
they have a big, big problem. What happens when another Python @x construct
conflicts with one of these directives or some other directive?
These directives act as a markup meta-language. Many of these directives
are found interspersed in the code: a conflict with a construct in Python
would have most unhappy consequences.
To make matters worse, one of the _best_ choices I ever made in Leo was to
remove all "escape" conventions regarding '@' (and other noweb constructs).
This took a bit of courage, but it has turned out to be clearly the right
choice. But if Python can now generate arbitrary @x strings Leo will have
to do something really drastic.
There are a number of markup languages that use '@' to from the underlying
language (Python) to the markup language. I was always under the impression
that the clear statement in the Reference Manual that at signs are invalid
everywhere (except in comments and strings) was a clear signal of an
intention to keep those symbols for other valid purposes. I do hope this
won't change.
Edward
P.S. I recently wrote a pretty-printer for Python using the tokenize
module. What will be the status of the '@' token? Is it still an
"errortoken" ? Sure, this is a minor point, but it _will_ affect other
tools.
EKR
--------------------------------------------------------------------
Edward K. Ream email: edreamleo at charter.net
Leo: Literate Editor with Outlines
Leo: http://webpages.charter.net/edreamleo/front.html
--------------------------------------------------------------------
More information about the Python-Dev
mailing list