Skip to content

Latest commit

 

History

History
502 lines (369 loc) · 15.3 KB

changes.txt

File metadata and controls

502 lines (369 loc) · 15.3 KB

0.27 (Q2 2024)

first public release on OPAM

better merlin support

automatic case-analysis code generation,

docs

added Editor.nw in docs/literate/ from principia

———————————————————–

0.26 (Q? 202?)

a new Jsonnet mode (based on ojsonnet parser in semgrep)

added a generic highlighter using the generic AST in semgrep

Maintenance mode in 2020/2021/2022/2023

———————————————————–

0.25 (Q4 2019)

a new Python mode

based on the Python parser and highlighter in Pfff.

support for the bento code checker

especially useful for Python and Javascript code

0.24 (Q3 2019)

0.23 (Q2 2019)

a new Javascript mode

based on the Javascript parser and highlighter in Pfff.

0.22 (Q1 2019)

macros!

(finally deserve to be called an Emacs clone)

bugfixes

correct exception backtrace in backtrace

and report it also for Failure exn

reset modifier when focus back in window

otherwise it’s like Alt is still on

internals

full switch to cairo2, opam 2.0, and ocaml 4.07.1

———————————————————–

0.21 (Q3 2018)

a new Merlin minor mode

to support type and ocamldoc information under cursor, jump-to-definition, jump-to-interface, completion, search-def

noweb

better coloring

use fuzzy tree to correctly handle nested elements, and support and [< >] correctly (different lexing rules).

shell

shell history (Up and Down)

working C-a, M-backspace that do not go beyond the prompt

support for Windows!

can now compile Efuns for Linux, Windows, and macOS

better fonts for Linux and Windows

misc

C-c = to get position information

SEMI copy to and from clipboard

so can have efuns interact with other applications (e.g., web browser)

M-x align_char

basic rectangle operations (C-x r t, C-x r k)

internals

cleanup external/, rely more on OPAM

simplified interface for interactive functions and bindings

use [@@interactive] attribute (thx to my ppx_interactive extension)

factorized code with Frame.buf_text_point helper

Cleaner Message.message API and add messages to Messages buffer

port to cairo2

cairo seems obsolete; I can not even install it with OPAM with recent versions of OCaml. Also cairo2’s maintainer is very responsive (he quickly added the support for Pango fonts that I needed).

———————————————————–

— (2017)

———————————————————–

— (2016)

———————————————————–

0.20 (Q2 2015)

a new Org mode

a new Outline mode

with special support for pfff-based modes

code navigation a la Tags (M-.)

but using pfff code database instead of TAGS file

compilation mode

working M-x compile, with colors, with C-n working (for ocaml errors) and internally using variables rather than major mode interactives patches

shell mode

better ls in eshell, multi cols, correctly sorted, hiding object files

a new minimap (a la Sublime Text)

with variable font size for important entities (a la Code thumbnails of visual studio) for pfff-based major modes

adjustments to Emacs behavior

M-w (copy_region) M-c (capitalize_words) C-s C-w (incomplete though) Top|Bot|% for line in status line C-u C-space (position history navigation) correct order for history of visited buffers blinking cursor (using a simple thread)

pad’s stuff

scroll other windows buffer menu C-M-Tab, C-M-l and right order

refactoring

  • split efuns.ml and simple.ml in many more modules
  • add more .mli
  • more use of with_dup_point, with_new_point, with_session
  • lots of renaming to make it easier to explain things in Efuns.nw

0.19 (Q1 2015)

fork Efuns (after 15 years), and port it to gtk/cairo

also use pfff/h_visualization/simple_color.ml for emacs style color names

a new Dircolors module

(based on my dircolors.el plugin for emacs)

a new Buffer_menu mode

a new (eshell inspired) Shell mode

new programming language major modes using pfff for parsing

for Caml, C/C++, and TeX/Noweb, with correct and more highlightings for identifiers (e.g. differentiate fields from parameters from locals).

adjustments to Emacs behavior

  • maintain a “goal column” when goes up and down in a file, similar to Emacs

refactoring

  • files and directories reorganization, pad’s style
  • LPization (literate programming restructuring, with help from syncweb)
  • removed many opens
  • use global for location
  • reorg main.ml to use less toplevels and pack in a main() function
  • use more List.iter, Common.do_option, |>, with_session, with_dup_point
  • added many .mli
  • factorize color in pl_colors.ml

———————————————————–

Version 018: (1999?)

===========

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