Some Hints about the Implementation of isa-mode for Developers.
===============================================================

------------------------------------------------------------------------------

FILE STRUCTURE  (subject to change - it's a bit extreme!)
--------------

1. For each port of isa-mode, there is a compatibility file:

==> isa-18.el <==
;;; isa-18.el - Isabelle Mode Support for Emacs 18.

==> isa-19.el <==
;;; isa-19.el - Isabelle mode support for FSF Emacs 19.


==> isa-lcd.el <==
;;; isa-lcd.el - Isabelle mode support for Lucid Emacs.


2. There are also some (perhaps hacked) versions of files from
   various Emacs distributions:

==> comint.el <==
;;; comint.el --- general command interpreter in a window stuff

==> ring.el <==
;;; ring.el --- handle rings of items

==> isa-lmenu.el <==
;;; isa-lmenu.el - emulate Lucid's menubar support

==> isa-lucid.el <==
;;; isa-lucid.el - Emulate some Lucid Emacs functions in FSF Emacs 19.

==> isa-screen.el <==
;;; isa-screen.el - Screen/frame manipulation functions.


3. Start-up files for isa-mode  
   (I think autoloads belong in isa-site, and isa-load should
    load the whole thing.  Don't worry about separating 
    proofstate, etc?).

==> isa-site.el <==
;;; isa-site.el - Site and compiler specifics for Isabelle mode.

==> isa-load.el <==
;;; isa-load.el - load-file for Isabelle mode.



4. Main files for isa-mode.

==> isa-mode.el <==
;;; isa-mode.el - Isabelle interaction mode.

==> isa-listener-mode.el <==
;;; isa-listener-mode.el - Listener buffer for Isabelle mode

==> isa-ruletable-mode.el <==
;;; isa-ruletable-mode.el 
;;;       - Buffer holding table of rules and tactics for Isabelle mode.

==> isa-proofstate-mode.el <==
;;; isa-proofstate-mode.el - Buffer holding proof state in Isabelle mode

==> isa-thy-mode.el <==
;;; isa-thy-mode.el - Mode for Isabelle theory files.



5. Subsidiary files

==> isa-cmd.el <==
;;; isa-cmd.el - User-level commands for Isabelle mode.

==> isa-menus.el <==
;;; isa-menus.el - Menus for Isabelle mode.

==> isa-proofscript.el <==
;;; isa-proofscript.el - manipulating Isabelle proof scripts.

==> isa-rules.el <==
;;; isa-rules.el - Rules and tactics for object logics in Isabelle.



5. Utilities

==> isa-display.el <==
;;; isa-display.el - Display manipulation for Isabelle mode.

==> isa-proc.el <==
;;; isa-proc.el - Process handling for Isabelle Mode.

==> isa-utils.el <==
;;; isa-utils.el - Miscellaneous functions for Isabelle Mode.



------------------------------------------------------------------------------

MAJOR MODES.

 isa-thy-mode        -  editing ".thy" files
 isa-mode            -  running Isabelle interpreters
 listener-mode       -  echoing input from Isabelle interpreters
 proofstate-mode     -  displaying current proof state
 ruletable-mode      -  showing tables of rule names

Each mode has its own <mode>-key-map and <mode>-mode functions as
  usual.

Global functions and variables all have the prefixes
isa-,listener-,proofstate-,ruletable- 

------------------------------------------------------------------------------

ASSOCIATED-BUFFER SCHEME.

<sym>       Is function that initialises buffer.
<sym>-mode  Is mode name and initialisation function.
            NB: isa-create-new-associated generates buffer
            and links it to isabelle buffer.  Also sets
            kill-buffer-hook and local variable isa-buffer.
            So don't use kill-all-local variables in mode fn!

See funcs: isa-create-new-associated, isa-find-associated,
and variable isa-possible-associated-buffers.

Look at listener for simple example of method.

------------------------------------------------------------------------------


