Poplog Plugin for JEdit
General
The plugin consists of two parts, the actual compiler and a documentation server/client
pair. The documentation server deals with requests equivalent to xved's HELP, REF, DOC
and TEACH <stuff>. The compiler runs your code in the incremental compiler and
displays the results in buffers for the output and error streams.
It should be noted here that this jar is actually a collection of independent programs
put together, only at the end, as a plugin. Here you will find:
-
Documentation Server, which can run anywhere on the web and be accessed
by any client elsewhere (you can even use telnet for this). To run use:
java -cp .:/path/to/JPop.jar org.jpop.net.PoplogDocServer
.
-
Documentation Client, this is just a convenience application that
displays documents fetched from a documentation server. To run use:
java -cp .:/path/to/JPop.jar org.jpop.net.PoplogDocClient
.
-
Documentation Cached Client, this is a version of the client that in
addition to fetching documents from a server caches them in the home directory
of the user (~/.jpop/ by default) in order to reduce the time it takes to fetch
the same document in the future. To run use:
java -cp .:/path/to/JPop.jar org.jpop.net.PoplogCachedClient
.
-
Documentation Browser, this program is essentially a GUI for the cached
client. It displays the document on a tabbed pane. To run use:
java -cp .:/path/to/JPop.jar org.jpop.gui.PoplogDocBrowser
.
-
Process Console, this is a container for a native process, it shows the
output and error streams in tabs, and the input stream on a text area, the class
itself can be extended to run any process. To run use:
java -cp .:/path/to/JPop.jar org.jpop.gui.ProcessConsole
.
-
Poplog Process Console, this is a ProcessConsole instance that runs
poplog processes, but the properties can be modified to make it run just about
anything else. To run use:
java -cp .:/path/to/JPop.jar org.jpop.gui.PoplogProcessConsole
.
-
Poplog Plugin for JEdit, this is another instance of ProcessConsole, made
to run inside JEdit. To use download and install JEdit, then add the JPop.jar
file to your ~/.jedit/jars/ folder and start jedit.
Detailed instructions
on how to set this up for Birmingham University students (the most likely
audience for this plugin) can be found in this
document.
Bugs
- Files compiled by the plugin do not display line numbers when an error is found.
The normal compile mechanism of poplog is not valid for this plugin (although an
alternative is being loking for) as we just pipe the contents of the file into
the input stream of the process. Poplog uses a different mechanism for this
(HELP * COMPILE) which, in time, the plugin will emulate. For the time being you
will just have to live with this or implement a better execFile() method.
- Pop11's readline() function will not wait until the end of input before reading,
instead it will try to grab the first line of text that goes into stdin. This
is, unfortunately, most likely to be the next line of pop11 code to be compiled.
You can see the problem here... This will be worked around by adding a new
definition for readline() in org/jpop/io/init/pop11.p
- The plugin doesn't do ranges in the same way xved does, but I have been thinking
of a way to implement them. For the time being use the "compile selection"
action instead.
- Killing and restarting the plugin from the Plugin Manager after a local
documentation server has been started has the side effect of forking a process
that uses 100% CPU.
- On some ocassions trailing pop11 processes have been left behind as a result of
reloading the plugin. I have not been able to reproduce that behabiour lately,
which *might* mean it fixed itself... then again, it would be stupid to just
forget about it because it seems to be gone...
- INFO and VERSION requests to server turn up with nothing in PoplogDocClient.
If you find any other problems please contact ug57dsm AT cs.bham.ac.uk or seconddevil AT
users.sourceforge.net. Please include any information you think relevant with your
message.
Links
API
Here is the javadoc for all the java files included in this
distribution.