MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

A new general-purpose interactive front end

  • To: mathgroup at
  • Subject: [mg16019] A new general-purpose interactive front end
  • From: Timo Felbinger <timof at>
  • Date: Sat, 20 Feb 1999 02:52:07 -0500
  • Organization: University of Potsdam
  • Sender: owner-wri-mathgroup at


for quite some time, I have been looking for an alternative
interactive front end for Mathematica, and some weeks ago I 
had the idea to use Vim (a free vi clone written by Bram 
Moolenaar) for that purpose.

It seems to be working now (though still in alpha stage), 
and everyone who
  - uses Mathematica,
  - isn't satisfied with the standard Notebook interface, but
  - likes vi (or any vi-clone),
might have a look at it at

There you will find two different packages:
  - A small auxiliary program `ml2vim' which "translates"
    between Vim and the Mathematica kernel; you need the 
    mathlink developer's kit (usually part of every (?)
    Mathematica distribution), version 3, to compile it;
  - The patched sources of Vim 5.4c. This package contains
    the full source of Vim, enhanced by code to allow Vim 
    to be used as a front end, in addition to the usual 
    functionality as a text editor.

    ----------            ----------            ------------------
   |          | -------> |          | -------> |  Mathematica     |
   |   Vim    |   ASCII  |  ml2vim  | mathlink |  kernel          |
   |          | <------  |          | <------  |                  |
    ----------            ----------            -----------------

Some features:

- You have the superior editing capabilities of a high-end
  programmer's editor at your fingertips; no mouse is required
  (though there are rumors that Vim can even be used with a
  mouse, if you really want to).
  Commands like "evaluate" or selections based on 
  regular expressions are no problem, and Vim comes with a 
  powerful builtin macro language.

- This frontend will run not only in xterms, but even on plain
  text terminals and console screens.

- All input and output is pure ASCII, readable and visible in the 
  editor. There is no "hidden information", and thus no "corrupted 
  This also means that the conversion between interactive and 
  batch jobs is trivial.

- Unlike in the notebook interface, keyboard input will always
  take priority over input from the Mathematica kernel, so the front
  end remains responsive at any time. The editor is fully
  operational while computations are going on, and any transfer
  from Mathematica to the front end can easily be interrupted,
  suspended or discarded at any time.

- This is free and open-source software, so if there is a feature 
  you would like to see, chances are it can be implemented.

The following is a fragment of an actual sample file:

> i[1] (4 + 7) * 13
> o[1]
>   143
> -------------------------------------
> i[3]  
>    InputForm[ Integrate[ x^4 * Exp[-x^2], {x,-Infinity,Infinity} ] ]
> o[3]
>   (3*Sqrt[Pi])/4
> -----------------------------------------------
> i[26]  Integrate[ x^4 * Exp[-x^2], {x,-Infinity,Infinity} ]
> o[26]
>   3 Sqrt[Pi]
>   ----------
>       4
> -----------------------------------------------
> i[21]  Integrate[ (x^3 + 4x) / (x^3 + 4*x - 7) , {x,-5,5} ]
> o[21]
>                      3
>               4 x + x
>   Integrate[-------------, {x, -5, 5}]
>                         3
>             -7 + 4 x + x
> m[21]
>   Integrate::idiv:
>                                         3
>                                  4 x + x
>   Integrate::idiv: Integral of ------------- does not converge on {-5, 5}.
>                                            3
>                                -7 + 4 x + x
> -----------------------------------------------

Be warned:

  This is currently in a "alpha-stage" and comes purely "as-is",
  whith no warranty whatsoever.

  I have successfully built it under Linux/Intel and Tru64 Unix 
  (formerly known as Digital Unix) 4.0c.
  Porting to other not-too-ancient Unix-like systems should not be

  It will currently not work under any version of Windoze.



PS: Thanks to all who replied to my recent question in this group and
    explained the difference between MLPutString and MLPutByteString
    (MLPutString works fine)!

Timo Felbinger   <Timo.Felbinger at>
Quantum Physics Group
Institute of Physics
University of Potsdam, Germany

  • Prev by Date: Re: Re: Bug?
  • Next by Date: Re: Block-defined matrices
  • Previous by thread: Re: "Display", "ESP" and "MathLink"
  • Next by thread: telling DSolve to satisfy boundary conditions?