emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Sv: Sv: Christmas wish: Literate Elisp


From: arthur miller
Subject: Sv: Sv: Christmas wish: Literate Elisp
Date: Fri, 20 Dec 2019 15:50:29 +0000

I really understand the concern, but I must ask how would one change the
elisp itself without re-implementing much or some of of elisp parser if it would
be done externally?

The read-eval loop is not exposed to elisp, so one would need to implement
own? Or am I missunderstanding? As I understand the elisps read-eval loop
is part of C runtime core, so if one would implement another parser on top of
it, it would mean some kind of preprocessor to preprocess elisp before it is
handled into elisp parser. Thisis only for read-eval loop.

I believe it would mean lots of work, and maybe less efficiency since it might
impose some extra copying/reading? I don't know, as I noted before I am not
that very wellacquinted with Emacs internals so I can't tell for sure. Personally
I don't care in which way it is implemented as long as the result is the same.

Just as a note about the C change and hooks and runtime support: the flag I
used lets me completely bypass the change to the "old" parser. Skipping
comment lines is hard coded into read-eval loop, so I have just hacked around
it, but if one would introduce some kind of modifiable read-eval loop with hooks
or I don't know what then it would probably need more C changes than waht
I did. Byte compiler would also need some change since comments are
hardcoded there as well. Also if one not introduce any change in byte compiler
and read eval loop, it might mean one would preprocess elisp source in some
hook, which might need extra loop through source file which is less effecient.

At least that is how I am reading the code, but I just started to hack it, so I might
be missing something. If one added a buffer-local flag instead of as I did a global
flag, then this could be that support in runtime to make it possible/easier to
support this. I don't know, I might be wrong, just as I see the code as of the
moment.

Från: Stefan Monnier <address@hidden>
Skickat: den 20 december 2019 16:00
Till: arthur miller <address@hidden>
Kopia: address@hidden <address@hidden>
Ämne: Re: Sv: Christmas wish: Literate Elisp
 
Of course, this decision is not up to me, but I'll point out that
I think I don't think we should change the C code to or the
byte-compiler to directly support this new format.

I'd welcome changes that add hooks to make it possible/easier to support
such a format (and other formats like Org-mode), OTOH.


        Stefan


arthur miller [2019-12-20 00:55:29] wrote:

> Here is a little prototype to test my idea with literal Elisp.
>
> I have patched read-eval loop as stated in previous mail, in lread.c.
> It is probably possible to implement that in Elisp, but I don't have
> enough knowledge of either Emacs internals nor Elisp to do this in some
> short time. It would took me a lot of time to look up all the
> things I would need. Anyway, C code turned to be rather trivial, and also
> completely by-passable if so desired, so I have introduced a user-customizable
> variable 'emacs-lisp-allow-literal-comments', which is by default nil.
>
> I wasn't sure in which elisp file to introduce this variable, so I have used
> 'simple.el' found in lisp directory of Emacs source distribution. That file
> seems to have some other user customizable variables that affect elisp so I
> thought it might be appropriate place.
>
> For the byte compiler I have patched bytecomp.el, in rather brutish way, but it
> seems to work. It wasn't very difficult either, but I think I have done it rather
> ugly. Someone might wish to refactor that code. Anyway, it is less then
> twenty lines of code, and it is by default bypassed as well. The variable
> that controls it is also user customizable and found  in same file,
> named 'byte-comp-allow-literal-comments'.
>
> I have attached also a small trivial elisp file for illustration purpose.
>
> It is just a test of an idea, and small prototype to show that it might work.
> It needs more thorough testing and can probably be implemented in some better
> way.
>
> I have tested on GNU/Linux and Windows. Emacs was able to compile it's own
> elisp as well as external packages I use.
>
> As a note, the change in C is completely backwards compatible. No logical
> change to elisp parser happens when 'emacs-lisp-allow-literal-comments'
> variable is nil.
>
> ________________________________
> Från: Emacs-devel <emacs-devel-bounces+arthur.miller=address@hidden> för
> Jean-Christophe Helary <address@hidden>
> Skickat: den 19 december 2019 02:50
> Till: address@hidden <address@hidden>
> Ämne: Re: Christmas wish: Literate Elisp
>
>
>
>> On Dec 19, 2019, at 9:42, chad <address@hidden> wrote:
>>
>> There is a large body of existing software which will be totally unaware of your changes.
>
> Although I think the premise of your comment is absolutely valid, I'm not so
> sure about the "*large* body of existing software".
>
>
> Jean-Christophe Helary
> -----------------------------------------------
> http://mac4translators.blogspot.com @brandelune


reply via email to

[Prev in Thread] Current Thread [Next in Thread]