(***********************************************************************)
(*                                                                     *)
(*                              Efuns                                  *)
(*                                                                     *)
(*       Fabrice Le Fessant, projet Para/SOR, INRIA Rocquencourt       *)
(*                                                                     *)
(*  Copyright 1999 Institut National de Recherche en Informatique et   *)
(*  Automatique.  Distributed only by permission.                      *)
(*                                                                     *)
(***********************************************************************)

Version 018:
===========
* module Text:
  - new function [search_backward_groups]
* TeX mode:
  - new function [end_env] bound on "C-c ]"
  - new function [new_env] bound on "C-c E"


Version 017:
===========
* Most options are now set by the ~/.efunsrc file, generated the first
   time Efuns is created. In particular, keys/menus binding can be 
   specified there, and also fonts and colors.
* Accents_mode: exit from minor mode by setting it again.
* C-g now interrupts "replace-string" and "replace-regexp".
* Bug fixes:
  - In "query-replace-...", the second cursor shows where the point is.
  - In "query-replace-...", the cursor always moves when 'y' or 'n' is
     pressed.
* New minor modes "paren_mode" and "abbrevs_mode".
* Bug fixed: drag-and-drop is now ok and selection immediate.

Version 016:
===========
* Efuns_filebrowser:
  - New program [efuns_filebrowser] to display directories like trees with
 shell-regexps on names, and click to edit with efuns_server.
* Server:
  - New interactive function "start-server" to make Efuns listen on a local
     port.
  - New program [efuns_server] to force an efuns server to load a file.
* Tex_mode:
  - New program [efuns_texbrowser] to display a LaTeX file as a tree,
     and call [efuns_server] to edit clicked parts.
  - New interactive function "tex-browse" to start efuns_texbrowser.
* System:
  - A SIG_KILL signal is sent to an inferior process when its buffer is 
     killed.
* Top_window:
  - Added one scrollbar per top frame.
* Ocaml_mode:
  - More abbrevs are available (map'a for Array.map, cop'a for Array.copy,
     sub'a for Array.sub, etc).
  - Dependencies toward Ocaml version moved to ocamlsrc/compat_comp.ml
* Bug fix:
  - ocaml_mode.mli doesn't contain names generated by ocamllex
     (thanks to Loic Correnson).
  - Keys in scrollbars and menus are normally processed.

Version 015:
============
* C_mode:
  - Added some indentation and more colorization.
* Start integration with WXlib:
  - Menus at top.
  - Mouse driven file selection in [File:Open] item.
* Fixed bug in minibuffer for cursor becoming invisible.
 
Version 014:
===========
* Text: 
 - bug fixed in regexp searches (cause a bug to appear in [fill_paragraph])
* Tex_mode:
 - [C-c Return] in a \input line open the corresponding file.
 - [C-c Down] to select a main file, [C-c Up] goto main file,
     [C-c Left] goto previous \input file, [C-c Right] goto next \input file.
* Std_efunsrc:
 - [C-M-Left] and [C-M-Right] circulate between buffers.
 - [C-M-Down] to select a buffer, and [C-M-Up] to go to the selected buffer.

Version 013: (26 avril 1996)
===========
* Tex_mode: 
 - Colors can be modified by [set-parameter].
 - New functions [tex-comment-region] [C-c %], and 
     [tex-uncomment-region] [C-c C-u %].
 - [Return] in comment line creates a new comment line.
 - Lines starting with \OT1 are not used while looking for errors.
* Keymap:
 - Bug fixed in printing key strokes.

Version 012:
==========
* Fixed bug in Xterm to remove multiple expose events for the same frame.
* Added [M-l] lowercase-word and [M-u] uppercase-word.

Version 011:
===========
* Compil: 
  - new interactive function [grep] to call Unix grep command and find
     occurrences in files.
* Fixed bug with selection passing between X clients.

Version 010:
============
* Added new module Dired to edit directories with bindings
   [+] add a directory, [-] remove an entry, [g] update, [Return] open file,
   [v] fast view file (start xv, gzip, etc depending of the file extension).
* Ebuffer: 
   - loading a directory creates a buffer with the files (~ ls -l).
   - better name formatting (thanks to utils.normal_name).
* Compil: "compile" tries to recurse directories to find a Makefile when
   command is "make ..." or "?make ..." (can be avoided by modifying
    the parameter Compil.compile_find_makefile).
* Ocaml_mode: 
   - [C-button1] on a word triggers "find_implementation".
   - [C-c C-BackSpace] to come back after find_implementation.
* Makefile_mode:
   - Colors are defined by parameters vars_color, rules_color and 
       target_color.

Version 009:
============
* Complex: 
  - Added [M-x set-local-variable, set-global-variable, get-variable
     and set-parameter, get-parameter] (Parameters are Ocaml refs,
     while variables are Local.var variables).
  - Added [M-x eval] to evaluate an ocaml string.
* Efuns:
  - Labels for keymaps, modes and local vars renamed.
  - New types for major and minor modes, with own maps.
* Keymap: 
  - maps contain names for interactives (M-x) calls.
  - Added MetaControlMap
  - Meta modifier can be modified (Keymap.meta)
* New module Local added to handle local vars.
* Ocaml_mode(only toplevel): 
  - find_type and find_implementation try to compile the buffer
     to find the type or the definition (using ocaml_path).
  - Some parameters are configurable through set-parameter
     (colors, fonts, paths).

Version 008:
============
* Undo bug fixed (cursor random movements)

Version 007:
============
* Keymap.interactive functionnal parameter must return unit. C-b and C-f bug
corrected (thanks to J.G. Malecki)

Version 006:
============
* Buffer module changed to Ebuffer (to avoid clach with new Ocaml Buffer module).
  Compile changed to Compil to avoid a clash with one of the toplevel modules.

Version 005
===========

* Efuns read the ressource file ~/.Xdefaults.
  Examples of used ressources:

Efuns*foreground: black
Efuns*width: 80
Efuns*height: 55
Efuns*font: -misc-fixed-medium-r-normal--0-0-75-75-c-70-iso8859-1
Efuns*font: 6x13

   and for Ocaml colors:

Efuns*ocaml.color.comment: blue
Efuns*ocaml.color.upper: black
Efuns*ocaml.font.upper: -misc-fixed-bold-r-normal--0-0-75-75-c-70-iso8859-1
Efuns*ocaml.font.upper: 6x13bold
Efuns*ocaml.font.keyword: 6x13bold
Efuns*ocaml.font.comment: -*-*-*-i-*-*-13-*-*-*-*-60-*-*

* Bugs corrected
 - Completions errors in mini-buffer (no more out-of-bound access)

version 004 (BETA)
=================

* Ajout de install_structures qui associe des touches avec des structures
  a trous (^^) qui peuvent etre parcourus avec [C-c -].
  - Mode Ocaml: [C-c b] insere "begin ^^ end", etc ...
  - Mode Tex:   [C-c 1] insere "\section{^^} ^^", etc ...
  - Mode HTML:  [C-c 1] insere "<H1> ^^ </H1> ^^", etc ...

* Ajout du préfixe C-q pour insérer des caractères spéciaux dans un buffer.

* Ajout de nouveaux modes avec coloriage: lisp-mode, html-mode et c-mode.

* Suppression de point_x dans text.ml.

* Ocaml-mode: 
  - compatibilité avec les mots cles JoCaml
  - recherche des erreurs d' ocamllex
 
* Bug fix:
  - positionnement correct du curseur après une délétion avant le point.
  - fill_paragraph correct

Efuns version 003 (BETA)
=================

* Modification de la forme des attributs des caractères pour permettre
   l'highlighting.

* Tex-mode: 
  - passage automatique à la ligne après 75 caractères (electric_insert_space)
  - formattage de paragraphe (fill_paragraph)

* Ocaml-mode:
  - Mise en évidence des associations de parenthèses (highlight_paren)

* Souris: drag (déplacement de la souris avec un bouton appuyé) et mise en 
  évidence de la région lors d'un drag

* Modification de l'expansion dynamique pour partir à l'envers du
  point courant.

* Ajout d'une fonction "add_start_hook" pour ce qui doit être évalué
  après l'exécution d'un module (démarrage et ensuite). Ajout de hooks,
  tels que handle_key_start_hook et handle_key_end_hook. Fonctions
  pour gérer les hooks dans Efuns.

* Isearch garde en mémoire la dernière chaîne recherchée. Sortie de isearch
avec n'importe quel flèche.

* Lors de la sélection des fichiers, utilisation possible de ~ et
remplacement par ~ lors de l'affichage des fichiers.

* Bugs fix:
  - plus de décallages dans les recherches/remplacements
  - coloriage correct des commentaires en Caml
  - curseur bien placé en fin de ligne

Efuns version 002 (BETA)
=================

* Ensembles de fonctions interactives accessibles depuis le minibuffer par
   M-x.

* Chargement au démarrage du fichier efunsrc.cmo. Possibilité d'exécuter
un buffer Ocaml (eval-buffer) dans l'éditeur pour le modifier. Possibilité
de charger un fichier .cmo dans l'éditeur (load-library). Utilisation de
la librairie Dynlink étendue au code natif.

* Ajout de modes majeurs (module Modes) avec modes_alist, de modes mineurs
  et de variables locales à un buffer ou à une frame.

* Ajout d'un mode Ocaml, basé sur le Lexer de Ocaml 2.00 pour le coloriage
   et l'indentation.
 - Compilation (ocaml-compile) et recherche d'erreurs (ocaml-next-error)
 - Coloriage (ocaml-color-buffer)
 - Indentation (ocaml-indent-phrase, ocaml-indent-buffer, ocaml-indent-line)
 - Abbréviations statiques (len's --> String.length, ...)
 - Aides à la programmation: recherche du type d'une valeur dans les
     fichiers .cmi (ocaml-print-type)

* Historiques et complétions dans les mini-buffers (pour les commandes
  intéractives et les fichiers, avec regexps à éviter).

* Remplacements sur tout le buffer:
  replace-string, replace-regexp, query-replace-string, query-replace-regexp

* Recherches incrémentales:
  isearch-forward, isearch-forward-regexp, isearch-backward, 
  isearch-backward-regexp

* Ajout d'un mode Makefile rudimentaire:
 - Coloriage
 - Tabulation

* Ajout d'un mode Tex rudimentaire:
 - Coloriage

* Fonctions travaillant sur les mots:
  transpose-words, forward-word, backward-word, delete-forward-word,
  delete-backward-word

* Expansion d'abbréviations statiques et dynamiques:
  expand-dabbrev, expand-sabbrev

* Meilleure intéraction avec X11. Gestion de la souris (3 boutons) et de 
la communication entre applications X par CUT_BUFFER:
  set-active-frame, insert-at-point, mouse-save-then-kill

* Gestion des lettres accentuées:
  accents-mode
  
* Gestion de plusieurs displays (open-display) et de plusieurs fenètres par
display (window-load-buffer, window-change-buffer, delete-window)

* Gestion de plusieurs frames par fenètre (one-frame, delete-frame, 
   vertical-cut-frame, horizontal-cut-frame, next-frame)

* Insertion de buffers entiers (insert-buffer)

* Gestion d'une marque par buffer (point-at-mark, kill-region)

* Terminaison avec sauvegarde des buffers modifiés

* Lancements de commandes du shell (shell-command)

* Gestion de la kill-ring (insert-killed, insert-next-killed)

* Déplacements aux extremités du buffer (end-of-file, begin-of-file)

* Déplacements par paragraphes (forward-paragraph, backward-paragraph)

* Retours arrières (undo) infinis et par session
    (par ensembles de modifications)

Efuns version 001 (BETA)
=================
First public release