texmacs-dev
[Top][All Lists]
Advanced

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

[Texmacs-dev] Re: [TeXmacs] ANNOUNCE: texmacs-fedit plug-in


From: Michael Lachmann
Subject: [Texmacs-dev] Re: [TeXmacs] ANNOUNCE: texmacs-fedit plug-in
Date: Sun, 17 Oct 2010 20:59:58 +0200

Hi all,

I also think that TeXmacs could be an amazing tool for literate programming. (I already use it for that...) I think though, that Sylvain and Sam's efforts are a bit different. I would need them both.

What Sylvain gives is a quick and easy way to edit a file inside TeXmacs. I think this is also a good enhancement for interactive work in TeXmacs. So, if I work interactively with R, I might want to edit a file instead of entering expressions line by line. Or I might whip up a quick perl filter for processing a file for R.

Sam on the other hand, gives a way to convert the whole document to various things - so real "literate programming". Or parts of the document. If I understand correctly, it isn't mainly intended for interactive work, but to create files that can be compiled or processed in other ways.

Of course, it could be that one can combine both. Provide a way to interactively edit a file, and create it right there, but also convert the whole document.

Michael



On 17 Oct 2010, at 9:47AM, Joris van der Hoeven wrote:

Dear Sylvain and Sam,

Thanks for your efforts to investigate literate programming in combination
with TeXmacs. I do not have much time to dig into this issue myself,
so I will wait a bit until your work has stabilized, before inclusion.

In order to keep things simple, I would prefer to have a single
TeXmacs tool for literate programming, which does not mean that
you cannot experiment each on your side.

I think that Sam is also aware of the fact that code extraction is
best done from within TeXmacs, using some Scheme scripts.
Indeed, Sylvain is right that it would be best not to depend
on any external scripts. Ideally, there would just be a button
'compile and run'.

As to upcoming work in TeXmacs, I already mentioned the fact that
I just implemented Packrat parsing. I would very much appreciate
any help regarding the support of new programming languages,
so as to have formal grammars for as many languages as possible.
Besides syntax highlighting, I am thinking about automatic indentation,
and (in the later future) automatic help/completion of defined
identifiers and classes. Anyway, having the full grammars available
opens a lot of possibilities, and this is by far the most robust solution
towards an integrated literate programming environment.

Another thing which will be implemented is editable hyperlinks
(the destination of the link being included in the source document;
the destination might also be part of a document, or even a part
of a document which is computed dynamically). This will make it
potentially possible to implement literate programming as
annotation of existing source files (which could be edited
using other editors). I am not sure yet how robust such
a solution can be made, but it has the potential of removing
the major drawback of forcing all developers to use the same
literate programming tool.

Finally, replying to Sylvain, it is indeed possible to use
the plug-in serialization methods for converting trees into strings.
In the future, more sophisticated serialization methods could
be implemented on top of the new Packrat parsing facility.
I already rely on this possibility for checking the syntactical
correctness of mathematical formulas (see the std-math grammar).

For further discussions, please post on address@hidden

Best wishes, --Joris


On Thu, Oct 14, 2010 at 01:19:04PM +0200, sylvain wrote:
Hi,

Your project is great. I apologise for not having discovered it before.

One of the fun of computing is that people can find very technically
different solutions to the same problem. This is yet another example.

We both wanted to be able to do the same: write program code in
Texmacs.

You seem to be very knowledgeable about literate programming à la
Knuth. I am more used to Integrated Development Environment like
Eclipse, that I love because of the productivity it allows.

So, you asked yourself the question: how can I put markups in a Texmacs document so that my external program can extract it? User inserts code fragment in an arbitrary order and runs "make", which calls an external
tool, that extracts the code, make compiles it. And your project does
exactly that.

I asked rather the question: how can I get Texmacs to extract the code,
compile it and insert the result so that I can have fast round-trip?

texmacs-fedit leverages the plug-in infrastructure to do exactly that.

The project is structured so that one can add a specialized plug-in for a dedicated language. It is possible to parse the output of the compiler
to, for example, highlight the location of an error.

Another problem I wanted to try to solve is to explore the possibility
to convert Texmacs advanced typesetting into one-lined ASCII concrete
syntax understood by a compiler. I believe the one-dimensional one- line input from the good old 70's is holding us back. Not when you program in traditional languages, but when you want to program in modern languages like ATS, whose text source, when forced to be one-dimensional, become rapidly unreadable. Other languages I can think of that would benefit of
that are Agda and Haskell.
(The trouble is, I am stuck with a bug in my version of Texmacs
(1.0.7.3, Ubuntu) and didn't made much progress on this front.)

I personally hate duplication of effort. If it was clear-cut that your project has the best approach to reach these goals, I would drop fedit
down right-away. But I am not convinced of that. Rather I think that
both answer to different use-cases and are valuable. In that sense we
didn't wasted our time, neither you nor me.

Ideally, we would merge both projects, but I don't see for now how it
could be done, since they have taken radically different technical ways.
If you have an idea, let me know.

Greetings,
Sylvain





reply via email to

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