Could Emacs be rewritten in Python?
Kim Petersen
kp at kyborg.dk
Mon Apr 7 08:57:09 EDT 2003
Lothar Scholz wrote:
>>"comparable in power." The reason is that there is a ton of elisp
>>code out there, including most of Emacs itself, that could be
>>translated to work with PyAlaMode. My goal isn't to be able to
>>convert in a completely automated fashion, but close enough to be
>>attractive to both an elisp programmer and a Python programmer.
>
>
> Sorry, have you ever written a elisp program, something that is larger
> then
> 100 lines. I can't think about a way to provide this in python without
> writting a lisp like interpreter. Remember that the scope of elisp
> variables for example are not lexical. This is something very hard to
> emulate in python.
Why would the variable scheme that elisp uses be tougher to emulate in
python than a lexical version ? From my pov it should make it a heck of
a lot easier (think of emacsen as having 1 global dictionary and 1
buffer specific dictionary for global/buffer local variables) then every
time you call a function in elisp - do a shallow copy of local variable
space (dictionary) and send it as the local vars - you can safely throw
away the dict after function returns).
eg. something like this:
def do_elisp_fun(local_name_space,fun,funargs,args):
local_name_space=local_name_space.copy()
# apply the args to the funargs (simple ignore :optional etc.)
map(lambda n,v,d=local_name_space:
local_name_space[n]=v,zip(funargs,args))
retval=lisp_eval(funbody(fun),local_name_space)
return retval
Excuses made for misremembering how lisp actually does optional args and
rest ;-)
> I would really suggest to look at the structure of keyhandling,
> keymaps and buffers. And then forget about lisp and design a good
> python editor.
More information about the Python-list
mailing list