Updated RELEASE_NOTES.
[mp-5.x.git] / RELEASE_NOTES
blobbb71f4c4cc5cea50ffe59ebdd5cb553cbd81e538
1 Minimum Profit Release Notes
2 ============================
4 5.1.2
5 -----
7  * New syntax color for special documentation blocks.
8  * Fix searching into empty selections (this was bug #1269).
10 5.1.1
11 -----
13  * Internationalization works in all platforms (including KDE4,
14    were it was faulty, and win32, where it was non-existent since
15    the 3.x series).
16  * The status line format string can also include the %w token
17    to show the number of words in the current document or selection
18    (can be slow).
19  * Search and replace is now limited to the selected block, if any.
21 5.1.0
22 -----
24 Fixes to the KDE4 driver:
26  * Underlined text works.
27  * Text fields in forms now have history.
28  * If no xserver can be contacted, fall back to the curses interface.
30 5.1.0-rc1
31 ---------
33  * KDE4 support.
34  * Rectangular block copy/paste support.
35  * New syntax highlight for the Euphoria language.
37 5.0.3
38 -----
40  * New action `open_under_cursor', that picks the word in the
41    current document under the cursor, accepts it as a document
42    name and tries to open it. If it's in the format string:number,
43    is accepted as a file name and a line number. It's bound by
44    default to `ctrl-enter' (`alt-enter' under Curses).
45  * The `grep' action bevahaviour has changed; instead of in a form,
46    matches are shown in a read-only document that is only closed
47    explicitly. Each change can be moved to by using the new
48    `open_under_cursor' (`ctrl-enter' or `alt-enter') action shown above.
49  * In a similar way, the `build' action also shows its output in a
50    read-only document instead of a form that is not automatically closed,
51    making the browsing and editing of compilation errors more useful.
52  * Forms in the Curses driver have changed their look. All fields in a
53    form are shown simultaneously on screen. This is one step to close
54    bug #1249.
55  * A set of character encoding converters have been natively implemented,
56    improving those platforms where the 'iconv' library is not available
57    (i.e. Windows and old Unix systems). The available encodings can be
58    shown by executing
60         dump(EMBEDDED_ENCODINGS);
62 5.0.2
63 -----
65  * New option to mark end of line characters, with its associated
66    configuration directive (mp.config.mark_eol).
67  * The end of line string (mp.config.eol) is now system-dependent (so,
68    on win32, it's set by default to \r\n).
69  * Copy and paste on GTK has been fixed (this was bug #1205).
70  * Fixed some redrawing issues (bug #1236 and others).
71  * Ctrl-keys no longer fail on GTK (bug #1252).
72  * New document _Minimum Profit Action Reference_.
73  * New action `build', for building Makefile-based projects. See the
74    action reference for details.
76 5.0.1
77 -----
79  * Improved line edition in the Curses interface (full edition plus file
80    expansion using the `tab' key in open / save file prompts).
81  * Auto-indenting is temporarily disabled while pasting (bug #1250).
82  * New document _Minimum Profit Function Reference_ (contributed by Lee Page).
84 5.0.0
85 -----
87  * The search hit is highlighted.
88  * When invoked from the menu, the `record_macro' action dropped
89    the last key (bug #1245).
90  * A Curses configuration detection has been fixed that made
91    some things behave strangely, as the drop-down menu not
92    responding under some terminal configurations (bug #1247).
93  * The Curses menu no longer crashes if it doesn't fit on
94    the screen (bug #1195).
95  * The -f (execute script) command line argument really works
96    (bug #1240).
97  * New manual page (bug #1219) and README files (bug #1218).
98  * Updated documents, _MPSL Overview_ and _Minimum Profit Cookbook_.
99  * New documents, _Minimum Profit Data Model_ and
100    _Creating interactive dialog boxes_.
102 5.0.0-rc3
103 ---------
105  * New session support. All open documents and its current position
106    can be stored / retrieved with the new `save_session' and
107    `load_session' actions. Two new configuration flags has
108    been added: `mp.config.auto_sessions', to automatically load / save
109    sessions, and `mp.config.local_sessions', to save sessions in the
110    currently active directory instead of in the home directory.
111  * Multiple key sequences for invoking actions (ala Emacs) are
112    now possible. To create them, just assign a hash to a keycode
113    instead of an action. For example, to assign the key sequence
114    Ctrl-x Ctrl-f to `open' and Ctrl-x Ctrl-s to `save', you can use
116         mp.keycodes['ctrl-x'] = {
117                 'ctrl-f'        => 'open',
118                 'ctrl-s'        => 'save'
119         };
121  * In the curses version, confirmations now have default values
122    (shown in brackets), activated with the ENTER key.
123  * New action `close_all', that closes all documents.
125 5.0.0-rc2
126 ---------
128  * New `complete' action, that asks for completion on the current
129    word using any of the words found in the same document.
130  * New `redo' action, to revert undo operations.
131  * The global configuration file `/etc/mp.mpsl' is also executed.
132  * In the `replace' action, the substitution string can contain
133    the special character &, that will be replaced by the matched
134    string (as in the `sed' command line tool).
136 5.0.0-rc1
137 ---------
139  * New support for translating key sequences into MP keycodes, mainly
140    for redefining ANSI sequences not supported by current terminfo /
141    termcap. For example, if your terminal sends the ANSI sequence [6;5~
142    whenever you press Ctrl+page down, you can add to your config file
143    the following line:
145         mp.add_keyseq("[6;5~", 'ctrl-page-down');
147  * A new `system_command' action, to pipe from and to system commands
148    (Closed bug #1120).
149  * A new `word_count' action, to count the number of lines and words
150    in a document (or in the selected block).
151  * Incorrect word wrapping has been fixed (Closed bug #1137).
152  * Search and replace expand backslashed characters like \n and \t
153    (Closed bug #1214).
154  * New timer functionality has been added; a user function can be called
155    each time a specified period of milliseconds have elapsed. If, for
156    example, you want to print a string on standard output each two
157    seconds, you can run
159         mp.timer(2000, sub { print("Hi, world!\n"); });
161 5.0.0-pre1
162 ----------
164  * Password-protected files fully work.
165  * Moving to next / previous instance of character (bound to ctrl-page-down
166    and ctrl-page-up) works (Closed bug #1131).
167  * Files open MUCH faster.
168  * Selection can be done by pressing shift + any movement key (Closed bug #1182).
169  * Dialog boxes work under Windows 98 (Closed bugs #1196, #1197).
170  * Block selection can be done by dragging the mouse (Closed bugs #1200, #1201).
171  * New `grep' functionality (Closed bug #1116).
172  * New action `sync' (save all modified documents, closed bug #1206).
173  * New action `document_list' (show a box with all open documents, allowing
174    the selection of the active one; closed bug #1211).
175  * Translations ported from mp 3.x (closed bug #1169).
176  * Most syntax highlight definitions ported from mp 3.x (closed bug #1168).
178 4.99.12
179 -------
181  * The menu in the Curses interface has been (finally) implemented.
182  * Interfaces have changed internally; a new driver function, mp.drv.form()
183    serves as a dialog box generic generator, resulting in more useful queries
184    for data (for example, all data required for a `replace' operation is
185    queried in only one dialog box). The Curses implementation, though
186    functional, is still just a wrapper to the old interface functions
187    and fields are queried one-by-one (which is annoying). This is an example
188    of a call to mp.drv.form(); the r variable will contain an array of 5
189    elements (one per widget) containing the values, or NULL if user cancelled:
191         local r = mp.drv.form( [
192         
193                 /* a 'text' widget */
194                 { 'label'       => "Replace this:",
195                   'type'        => 'text',
196                   'history'     => 'search',
197                   'value'       => 'THIS' },
198         
199                 /* another one */
200                 { 'label'       => "With:",
201                   'type'        => 'text',
202                   'history'     => 'replace',
203                   'value'       => 'THAT' },
204         
205                 /* a 'password' widget */
206                 { 'label'       => 'Password:',
207                   'type'        => 'password' },
208         
209                 /* a 'checkbox' widget */
210                 { 'label'       => "Case sensitive:",
211                   'type'        => 'checkbox',
212                   'value'       => mp.config.case_sensitive_search },
213         
214                 /* a 'list' widget */
215                 { 'label'       => 'All C files:',
216                   'type'        => 'list',
217                   'list'        => glob('*.c'),
218                   'value'       => 10 }
219         ] );
221  * Password protecting files works (but they cannot be opened yet, so this
222    is far from useful, unless you use mp 3.x to open them).
223  * Case sensitivity in searches can be controlled with the new
224    config flag mp.config.case_sensitive_search.
225  * Replace (and global replace by use of the new config flag
226    `mp.config.global_replace') works.
228 4.99.11
229 -------
231  * Syntax highlight definition have changed (again, hopefully for the last
232    time). Definitions are now an array of attribute name / regexes in which
233    the order is significative.
234  * Template insertion works.
235  * Tag selection (open the file where a symbol is defined) works.
236  * Symbol completion (using tags) works.
237  * Closed bugs #1159, #1158, #1153, #1161.
239 4.99.10
240 -------
242  * A big advance in the Curses interface; alerts, confirmations, and open
243    file, save file, search and generic prompts are working. Still lacking
244    the selection lists (as the rest of interfaces) and the menu.
245  * Improved menus; if an invalid action is added to a menu, it's shown
246    followed by a ?; if a key is bound to that action, it's shown between
247    square brackets.
248  * For systems lacking iconv support (MS Windows), a crappy, ad-hoc utf-8
249    converter has been added. This means that hitting `escape' and typing
250    `encoding('utf-8');' makes reading and writing utf-8 encoded files
251    possible on every system.
252  * New action `join_paragraph', to join current paragraph all in one line.
253  * New action `word_wrap_paragraph', that re-word-wraps current paragraph.
254    Word wrapping must be set ('mp.config.word_wrap = number;') for this to
255    work.
257 4.99.9
258 ------
260  * The GTK and win32 drivers now include a native open/save file dialog.
261  * Interactive help (help for the word under the cursor, triggered by
262    pressing `f1') works.
263  * The menu in GTK and win32 works.
264  * New icon!
265  * Some bugs that caused random crashes has been fixed.
266  * New action `exec-doc', that executes the active open document as
267    MPSL code.
269 4.99.8
270 ------
272  * New configuration option `mp.config.tabs_as_spaces', to store tabs
273    as spaces.
274  * Each syntax highlight definition can contain an optional function
275    called detect() that receives the document as argument and can be used
276    to tailor special detection rules.
277  * A big part of the internal storage of colors and attributes have
278    been rewritten to make it more dynamic.
279  * Tag target for the word over the cursor is shown in the status line.
280  * Move word left works.
281  * Opening an already open file makes it the active one instead of
282    re-opening it.
283  * The `execute code' action has been remapped from `ctrl-f1' to escape.
284  * Spellchecking via ispell works (though it's SLOW!). Activate it by
285    hitting escape and typing:
287         mp.ispell(1);
289  * By default, files are now unlinked before (re)written. File permissions
290    and ownership are restored if available. This behaviour can be disabled
291    by setting `mp.config.unlink' to zero.
292  * The GTK driver drawing code has been optimized, so it's much more
293    responsive now.
295 4.99.7
296 ------
298  * The `modified' flag of documents is maintained, so now closing files
299    with pending modifications ask for confirmation. Also, the %m status
300    line directive works (marking modified files with an asterisk).
301  * Flex and bison are no longer needed to build.
302  * The `close window' button in GUIs (win32 and GTK) now generate the
303    special keycode `close-window'.
304  * The `exit' action now closes all open documents, asking for saving
305    confirmation on those modified.
306  * Temporary versions of the `open' ans `save' actions (using
307    mp.drv.readline() instead of an ad-hoc open file dialog) have
308    been implemented.
309  * The GUI interfaces now can have their font preferences configured
310    by using mp.config.font_face and mp.config.font_size.
311  * The actions `zoom-in' and `zoom-out' (font size rescaling, bound to
312    `f11/f12' and `ctrl-kp-minus/ctrl-kp-plus') have been implemented.
313  * New mouse-related actions; `move-to-mouse-position', `move-mouse-wheel-up'
314    and `move-mouse-wheel-down'.
316 4.99.6
317 ------
319 This is an EXPERIMENTAL version for evaluation purposes only. There are
320 many things that aren't implemented, others fail miserably and many more
321 do it incorrectly. Basically, what is known to work is:
323  * Basic text editing fully works. I've been using it for six months or so
324    to maintain itself, and there has not been a crash in three months,
325    more or less.
326  * Scripting works fine (90% of Minimum Profit 5.x itself is implemented
327    in MPSL, its internal scripting language).
328  * Undo works fine. It's bound to ctrl-z.
329  * Works cleanly in an UTF-8 environment.
331 I do development on the GTK version, so it's where it works best. The
332 curses version lacks many of the interface (alerts, confirmations,
333 asking for text, etc.), so it's barely usable. The win32 version seem
334 to work, but it needs to be manually installed and probably need some
335 tweaking.
337 What it doesn't work:
339  * The dialogs to open or save a file by its name aren't implemented.
340    There are workarounds for this: files can be opened from the command
341    line and save works correctly if the edited file has a name. Also,
342    files can be opened by hitting `ctrl-f1' (execute script code) and
343    typing:
345         mp.open("file-to-be-opened");
347  * There is no menu.
348  * No ispell support.
349  * No password protected files.
350  * No grep.
351  * No external commands (so no support for help, tags, etc.).
352  * Some movement commands as moving a word left, moving to matching
353    brackets, etc. are still not implemented.
354  * Only a few syntax highlight definitions are implemented.
355  * Many other things I cannot remember.
357 Documentation is still scarce: the more interesting bits are inside the
358 mpsl/doc directory. This is where the scripting language is documented,
359 with some basic overviews and implementation notes (there is even an
360 embryo of a PostScript quick reference guide).
362 Customizing can be done by writing MPSL commands in the ~/.mp.mpsl file,
363 which is read on startup.
365 I have not tried to optimize the internal engine, so it's probably some
366 magnitudes slower than the 3.x version.