This is Jess Mode - an Emacs environment for developing Java Expert System Shell (Jess) applications.

Jess Mode is a collection of GNU Emacs Lisp files designed to facilitate the development of Jess applications. Currently, Jess Mode is at release 1.2 and is considered production software. However, enhancements are being made on a fairly regular basis; recent changes include much-improved font-lock support to accommodate Jess release 6.0.

Jess Mode was written for GNU Emacs, releases 19.34 and newer; all new development has occurred with the 20.x versions, so those old releases might no longer function. I've had a few requests for an Xemacs port; I looked into this but there appear to be significant differences between the two dialects, especially with syntax tables and the font-lock stuff. Right now I don't have time to work on an Xemacs implementation, but would be happy to incorporate patches.


Jess Editing Mode

Jess Interpreter Mode

A major mode for editing Jess source files. Based on lisp-mode, jess-mode offers such niceties as full syntax highlighting and special commands for evaluating expressions and communicating with an embedded Jess interpreter.

An inferior mode used to connect a running Jess interpreter to an Emacs buffer. This mode is derived from COMINT and offers hooks to customize the way Jess is invoked, short-cuts for evaluating Jess expressions, and a few other things.

Getting Jess Mode

Useful References

Stable version is here.
The Jess home page is here
Development releases will appear here.
The GNU home page is here.


There's currently no automated installation process for Jess Mode, so you'll have to do things manually. To use jess-mode you should probably install the files in some location accessible via load-path (like site-lisp or perhaps your personal elisp repository). Otherwise, you'll have to tell Emacs where jess-mode lives. You might put something like (setq load-path (cons "<path to jess-mode>" load-path)) in your .emacs file, or wherever you keep such things. Next, you'll probably want to "auto load" the functions jess-mode and run-jess; add the following someplace appropriate (again, perhaps your .emacs file):

(autoload 'jess-mode "jess-mode" "Jess Editing Mode" t nil)
(autoload 'run-jess "inf-jess" "Inferior Jess Mode" t nil)

You'll probably also want to take advantage of jess-mode's font-lock support; I do it like this:

(add-hook 'jess-mode-hook #'(lambda() (turn-on-font-lock)))

See the font-lock documentation for additional features. Finally, tell Emacs to start 'jess-mode' whenever you visit a Jess source file:

(setq auto-mode-alist (append auto-mode-alist '(("\\.clp$" . jess-mode))))

Running a Jess Process Within Emacs

To run an inferior Jess process you must first tell inf-jess how Jess should be started. At a minimum, one does this by setting the variable inferior-jess-program to something meaningful. Currently, this is either a string that evaluates to a program file (a script, say) or a function that supplies a list of Java virtual machine arguments. This isn't as hard as it might sound; here are a couple of examples:

If you typically invoke Jess via a shell script, do something like:

(add-hook 'inferior-jess-load-hook #'(lambda () (setq inferior-jess-program "/usr/local/bin/jess")))

If instead you run Jess using the virtual machine directly, use something like:

(add-hook 'inferior-jess-load-hook
#'(lambda () (setq inferior-jess-program
#'(lambda () '("-classpath" ".:/opt/jess/jess.jar" "jess.Main")))))

Look at the documentation at the top of inf-jess.el for further explanations and examples. Once you've set things up correctly, evaluating the form (run-jess) should give you a buffer attached to the running Jess interpreter.


All trademarks and copyrights on this page are properties of their respective owners. Forum comments are owned by the poster. The rest is copyright ©1999-2000 VA Linux Systems, Inc.