diff options
Diffstat (limited to 'emacs/README.itz')
| -rw-r--r-- | emacs/README.itz | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/emacs/README.itz b/emacs/README.itz deleted file mode 100644 index 8e1366f478..0000000000 --- a/emacs/README.itz +++ /dev/null @@ -1,177 +0,0 @@ -DESCRIPTION: - -This directory contains files to help editing Caml code, running a -Caml toplevel, and running the Caml debugger under the Gnu Emacs editor. - -AUTHORS: - -Ian T Zimmerman <itz@rahul.net> added indentation to caml mode, beefed -up camldebug to work much like gud/gdb. - -Xavier Leroy (Xavier.Leroy@inria.fr), Jerome Vouillon (Jerome.Vouillon@ens.fr). -camldebug.el is derived from FSF code. - -CONTENTS: - - caml.el A major mode for editing Caml code in Gnu Emacs - inf-caml.el To run a Caml toplevel under Emacs, with input and - output in an Emacs buffer. - camldebug.el To run the Caml debugger under Emacs. - - -NOTE FOR EMACS 18 USERS: - -This package will no longer work with Emacs 18.x. Sorry. You really -should consider upgrading to Emacs 19. - -USAGE: - -Add the following lines to your .emacs file: - -(setq auto-mode-alist (cons '("\\.ml[iylp]?" . caml-mode) auto-mode-alist)) -(autoload 'caml-mode "caml" "Major mode for editing Caml code." t) -(autoload 'run-caml "inf-caml" "Run an inferior Caml process." t) -(autoload 'camldebug "camldebug" "Run the Caml debugger." t) - -The Caml major mode is triggered by visiting a file with extension .ml, -.mli, .mly. .mll or .mlp, or manually by M-x caml-mode. It gives you the -correct syntax table for the Caml language. For a brief description of -the indentation capabilities, see below under NEWS. - -The Caml mode also allows you to run batch Caml compilations from -Emacs (using M-x compile) and browse the errors (C-x `). Typing C-x ` -sets the point at the beginning of the erroneous program fragment, and -the mark at the end. Under Emacs 19, the program fragment is -temporarily highlighted. - -M-x run-caml starts a Caml toplevel with input and output in an Emacs -buffer named *inferior-caml*. This gives you the full power of Emacs -to edit the input to the Caml toplevel. This mode is based on comint -so you get all the usual comint features, including command history. - -After M-x run-caml, typing C-c C-e or M-C-x in a buffer in Caml mode -sends the current phrase (containing the point) to the Caml toplevel, -and evaluates it. - -M-x camldebug FILE starts the Caml debugger camldebug on the executable -FILE, with input and output in an Emacs buffer named *camldebug-FILE*. -For a brief description of the commands available in this buffer, see -NEWS below. - -NEWS: - -Ok, so this is the really important part of this file :-) I took the -original package from the contrib subdirectory of the caml-light -distribution, and hacked on it. First, I added real syntax dependent -indentation to caml mode. Like Xavier has said, it was hard (and I -knew it would be), but I refused to believe it was impossible, partly -because I knew of a Standard ML mode with indentation (written by -Matthew Morley). - -Indentation works pretty much like in other programming modes. C-j at -the end of a line starts a new line properly indented. M-C-\ indents -the current region (this may take a while :-)). I incorporated a -slightly different TAB function, one that I use in other modes: if TAB -is pressed while the point is not in line indentation, the line is -indented to the column where point is (instead of just inserting a TAB -character - you can always to that with C-q C-i). This way, you can -indent a line any time, regardless of where the point lies, by hitting -TAB twice in succession. If you don't like this behaviour (but you -should), it's quite easy to add to your startup code like this: - -(defun caml-old-style-indent () - (if (caml-in-indentation) - (caml-indent-command) - (insert "\t"))) - -(add-hook 'caml-mode-hook - (function (lambda () - (define-key 'caml-mode-map "\t" - caml-old-style-indent)))) - -You can customize the appearance of your caml code by twiddling the -variables listed at the start of caml.el. Good luck. :-) - -Other news in caml mode are the various caml-insert-*-form commands. I -believe they are self-explanatory - just do a C-h m in a caml buffer -to see what you've got. - -The ohter major news is that I changed camldebug mode considerably. I -took many clues from the gud "Grand Unified Debugger" mode distributed -with modern versions of Emacs. The main benefit here is that you can -do debugger commands _from your caml source buffer_. Commands with the -C-c prefix in the debugger buffer have counterparts which do the same -thing (well, a similar thing) in the source buffer, with the C-x C-a -prefix. - -I made the existing debugger commands smarter in that they now attempt -to guess the correct parameter to the underlying camldebug command. A -numeric argument will always override that guess. For example, the -guess for C-c C-b (camldebug-break) is to set a breakpoint at the -current event (which was the only behaviour provided with the old -camldebug.el). But C-u 1 C-c C-b will now send "break 1" to the -camldebug process, setting a break at code address 1. - -This also allowed me to add many more commands for which the -underlying camldebug commands require a parameter. The best way to -learn about them is to do C-h m in the camldebug buffer, and then C-h -f for the commands you'll see listed. - -Finally, I added command completion. To use it, you'll have to apply -the provided patch to the debugger itself -(contrib/debugger/command_line_interpreter.ml), and recompile it -(you'll get one warning from the compiler; it is safe to ignore -it). Then hitting TAB in the following situation, for example: - -(cdb) pri_ - -will complete the "pri" to "print". - -CAVEATS: - -I don't use X and haven't tested this stuff under the X mode of -emacs. It is entirely possible (though not very probable) that I -introduced some undesirable interaction between X (fontification, -highlighting,...) and caml mode. I will welcome reports of such -problems (see REPORTING below), but I won't be able to do much about -them unless you also provide a patch. - -I don't know if the informational messages produced by camldebug are -internationalized. If they are, the debugger mode won't work unless -you set the language to English. The mode uses the messages to -synchronize with camldebug, and looks for fixed Emacs regular -expressions that match them. This may be fixed (if necessary) in a -future release. - -BUGS: - -In the debugger buffer, it's possible to overflow your mental stack by -asking for help on help on help on help on help on help on help on -help... - -THANKS: - -Xavier Leroy <Xavier.Leroy@inria.fr> for Caml-light. Used together with the -Emacs interface, it is about the most pleasant programming environment -I've known on any platform. - -Eric Raymond <esr@thyrsus.com> for gud, which camldebug mode apes. - -Barry Warsaw <bwarsaw@cen.com> for elp, without which I wouldn't have -been able to get the indentation code to perform acceptably. - -Gareth Rees <Gareth.Rees@cl.cam.ac.uk> for suggestions how to speed up -Emacs regular expression search, even if I didn't use them in the end. - -Bill Dubuque <wgd@martigny.ai.mit.edu> for alerting me to the -necessity of guarding against C-g inside Emacs code which modifies -syntax tables. - -REPORTING: - -Bug reports (preferably with patches), suggestions, donations etc. to: - -Ian T Zimmerman +-------------------------------------------+ -Box 13445 I With so many executioners available, I -Berkeley CA 94712 USA I suicide is a really foolish thing to do. I -mailto:itz@rahul.net +-------------------------------------------+ |
