Version 5.0.0 RELEASED.
[mp-5.x.git] / RELEASE_NOTES
blob827358a5ab1bcf742dff92934b18cb332c15eb09
1 Minimum Profit 5.x Release Notes
2 ================================
4 5.0.0-rc4
5 ---------
7  * The search hit is highlighted.
8  * When invoked from the menu, the 'record_macro' action dropped
9    the last key (bug #1245).
10  * A Curses configuration detection has been fixed that made
11    some things behave strangely, as the drop-down menu not
12    responding under some terminal configurations (bug #1247).
13  * The Curses menu no longer crashes if it doesn't fit on
14    the screen (bug #1195).
15  * The -f (execute script) command line argument really works
16    (bug #1240).
17  * New manual page (bug #1219) and README files (bug #1218).
18  * Updated documents, 'MPSL Overview' and 'Minimum Profit Cookbook'.
19  * New documents, 'Minimum Profit Data Model' and 'Creating interactive
20    dialog boxes'.
22 5.0.0-rc3
23 ---------
25  * New session support. All open documents and its current position
26    can be stored / retrieved with the new 'save_session' and
27    'load_session' actions. Two new configuration flags has
28    been added: mp.config.auto_sessions, to automatically load / save
29    sessions, and mp.config.local_sessions, to save sessions in the
30    currently active directory instead of in the home directory.
31  * Multiple key sequences for invoking actions (ala Emacs) are
32    now possible. To create them, just assign a hash to a keycode
33    instead of an action. For example, to assign the key sequence
34    Ctrl-x Ctrl-f to 'open' and Ctrl-x Ctrl-s to 'save', you can use
36         mp.keycodes['ctrl-x'] = {
37                 'ctrl-f'        => 'open',
38                 'ctrl-s'        => 'save'
39         };
41  * In the curses version, confirmations now have default values
42    (shown in brackets), activated with the ENTER key.
43  * New action 'close_all', that closes all documents.
45 5.0.0-rc2
46 ---------
48  * New 'complete' action, that asks for completion on the current
49    word using any of the words found in the same document.
50  * New 'redo' action, to revert undo operations.
51  * The global configuration file `/etc/mp.mpsl' is also executed.
52  * In the 'replace' action, the substitution string can contain
53    the special character &, that will be replaced by the matched
54    string (as in the `sed' command line tool).
56 5.0.0-rc1
57 ---------
59  * New support for translating key sequences into MP keycodes, mainly
60    for redefining ANSI sequences not supported by current terminfo /
61    termcap. For example, if your terminal sends the ANSI sequence [6;5~
62    whenever you press Ctrl+page down, you can add to your config file
63    the following line:
65         mp.add_keyseq("[6;5~", 'ctrl-page-down');
67  * A new 'system_command' action, to pipe from and to system commands
68    (Closed bug #1120).
69  * A new 'word_count' action, to count the number of lines and words
70    in a document (or in the selected block).
71  * Incorrect word wrapping has been fixed (Closed bug #1137).
72  * Search and replace expand backslashed characters like \n and \t
73    (Closed bug #1214).
74  * New timer functionality has been added; a user function can be called
75    each time a specified period of milliseconds have elapsed. If, for
76    example, you want to print a string on standard output each two
77    seconds, you can run
79         mp.timer(2000, sub { print("Hi, world!\n"); });
81 5.0.0-pre1
82 ----------
84  * Password-protected files fully work.
85  * Moving to next / previous instance of character (bound to ctrl-page-down
86    and ctrl-page-up) works (Closed bug #1131).
87  * Files open MUCH faster.
88  * Selection can be done by pressing shift + any movement key (Closed bug #1182).
89  * Dialog boxes work under Windows 98 (Closed bugs #1196, #1197).
90  * Block selection can be done by dragging the mouse (Closed bugs #1200, #1201).
91  * New 'grep' functionality (Closed bug #1116).
92  * New action 'sync' (save all modified documents, closed bug #1206).
93  * New action 'document_list' (show a box with all open documents, allowing
94    the selection of the active one; closed bug #1211).
95  * Translations ported from mp 3.x (closed bug #1169).
96  * Most syntax highlight definitions ported from mp 3.x (closed bug #1168).
98 4.99.12
99 -------
101  * The menu in the Curses interface has been (finally) implemented.
102  * Interfaces have changed internally; a new driver function, mp.drv.form()
103    serves as a dialog box generic generator, resulting in more useful queries
104    for data (for example, all data required for a 'replace' operation is
105    queried in only one dialog box). The Curses implementation, though
106    functional, is still just a wrapper to the old interface functions
107    and fields are queried one-by-one (which is annoying). This is an example
108    of a call to mp.drv.form(); the r variable will contain an array of 5
109    elements (one per widget) containing the values, or NULL if user cancelled:
111         local r = mp.drv.form( [
112         
113                 /* a 'text' widget */
114                 { 'label'       => "Replace this:",
115                   'type'        => 'text',
116                   'history'     => 'search',
117                   'value'       => 'THIS' },
118         
119                 /* another one */
120                 { 'label'       => "With:",
121                   'type'        => 'text',
122                   'history'     => 'replace',
123                   'value'       => 'THAT' },
124         
125                 /* a 'password' widget */
126                 { 'label'       => 'Password:',
127                   'type'        => 'password' },
128         
129                 /* a 'checkbox' widget */
130                 { 'label'       => "Case sensitive:",
131                   'type'        => 'checkbox',
132                   'value'       => mp.config.case_sensitive_search },
133         
134                 /* a 'list' widget */
135                 { 'label'       => 'All C files:',
136                   'type'        => 'list',
137                   'list'        => glob('*.c'),
138                   'value'       => 10 }
139         ] );
141  * Password protecting files works (but they cannot be opened yet, so this
142    is far from useful, unless you use mp 3.x to open them).
143  * Case sensitivity in searches can be controlled with the new
144    config flag mp.config.case_sensitive_search.
145  * Replace (and global replace by use of the new config flag
146    'mp.config.global_replace') works.
148 4.99.11
149 -------
151  * Syntax highlight definition have changed (again, hopefully for the last
152    time). Definitions are now an array of attribute name / regexes in which
153    the order is significative.
154  * Template insertion works.
155  * Tag selection (open the file where a symbol is defined) works.
156  * Symbol completion (using tags) works.
157  * Closed bugs #1159, #1158, #1153, #1161.
159 4.99.10
160 -------
162  * A big advance in the Curses interface: Alerts, confirmations, and open
163    file, save file, search and generic prompts are working. Still lacking
164    the selection lists (as the rest of interfaces) and the menu.
165  * Improved menus: if an invalid action is added to a menu, it's shown
166    followed by a ?; if a key is bound to that action, it's shown between
167    square brackets.
168  * For systems lacking iconv support (MS Windows), a crappy, ad-hoc utf-8
169    converter has been added. This means that hitting 'escape' and typing
171         encoding('utf-8');
173    makes reading and writing utf-8 encoded files possible on every system.
174  * New action 'join_paragraph', to join current paragraph all in one line.
175  * New action 'word_wrap_paragraph', that re-word-wraps current paragraph.
176    Word wrapping must be set ('mp.config.word_wrap = number;') for this to
177    work.
179 4.99.9
180 ------
182  * The GTK and win32 drivers now include a native open/save file dialog.
183  * Interactive help (help for the word under the cursor, triggered by
184    pressing 'f1') works.
185  * The menu in GTK and win32 works.
186  * New icon!
187  * Some bugs that caused random crashes has been fixed.
188  * New action 'exec-doc', that executes the active open document as
189    MPSL code.
191 4.99.8
192 ------
194  * New configuration option mp.config.tabs_as_spaces, to store tabs
195    as spaces.
196  * Each syntax highlight definition can contain an optional function
197    called detect() that receives the document as argument and can be used
198    to tailor special detection rules.
199  * A big part of the internal storage of colors and attributes have
200    been rewritten to make it more dynamic.
201  * Tag target for the word over the cursor is shown in the status line.
202  * Move word left works.
203  * Opening an already open file makes it the active one instead of
204    re-opening it.
205  * The 'execute code' action has been remapped from ctrl-f1 to escape.
206  * Spellchecking via ispell works (though it's SLOW!). Activate it by
207    hitting escape and typing:
209         mp.ispell(1);
211  * By default, files are now unlinked before (re)written. File permissions
212    and ownership are restored if available. This behaviour can be disabled
213    by setting mp.config.unlink to 0.
214  * The GTK driver drawing code has been optimized, so it's much more
215    responsive now.
217 4.99.7
218 ------
220  * The 'modified' flag of documents is maintained, so now closing files
221    with pending modifications ask for confirmation. Also, the %m status
222    line directive works (marking modified files with an asterisk).
223  * Flex and bison are no longer needed to build.
224  * The 'close window' button in GUIs (win32 and GTK) now generate the
225    special keycode 'close-window'.
226  * The 'exit' action now closes all open documents, asking for saving
227    confirmation on those modified.
228  * Temporary versions of the 'open' ans 'save' actions (using
229    mp.drv.readline() instead of an ad-hoc open file dialog) have
230    been implemented.
231  * The GUI interfaces now can have their font preferences configured
232    by using mp.config.font_face and mp.config.font_size.
233  * The actions 'zoom-in' and 'zoom-out' (font size rescaling, bound to
234    F11/F12 and ctrl-kp-minus/ctrl-kp-plus) have been implemented.
235  * New mouse-related actions: move-to-mouse-position, move-mouse-wheel-up
236    and move-mouse-wheel-down.
238 4.99.6
239 ------
241 This is an EXPERIMENTAL version for evaluation purposes only. There are
242 many things that aren't implemented, others fail miserably and many more
243 do it incorrectly. Basically, what is known to work is:
245  * Basic text editing fully works. I've been using it for six months or so
246    to maintain itself, and there has not been a crash in three months,
247    more or less.
248  * Scripting works fine (90% of Minimum Profit 5.x itself is implemented
249    in MPSL, its internal scripting language).
250  * Undo works fine. It's bound to ctrl-z.
251  * Works cleanly in an UTF-8 environment.
253 I do development on the GTK version, so it's where it works best. The
254 curses version lacks many of the interface (alerts, confirmations,
255 asking for text, etc.), so it's barely usable. The win32 version seem
256 to work, but it needs to be manually installed and probably need some
257 tweaking.
259 What it doesn't work:
261  * The dialogs to open or save a file by its name aren't implemented.
262    There are workarounds for this: files can be opened from the command
263    line and save works correctly if the edited file has a name. Also,
264    files can be opened by hitting ctrl-f1 (execute script code) and
265    typing:
267         mp.open("file-to-be-opened");
269  * There is no menu.
270  * No ispell support.
271  * No password protected files.
272  * No grep.
273  * No external commands (so no support for help, tags, etc.).
274  * Some movement commands as moving a word left, moving to matching
275    brackets, etc. are still not implemented.
276  * Only a few syntax highlight definitions are implemented.
277  * Many other things I cannot remember.
279 Documentation is still scarce: the more interesting bits are inside the
280 mpsl/doc directory. This is where the scripting language is documented,
281 with some basic overviews and implementation notes (there is even an
282 embryo of a PostScript quick reference guide).
284 Customizing can be done by writing MPSL commands in the ~/.mp.mpsl file,
285 which is read on startup.
287 I have not tried to optimize the internal engine, so it's probably some
288 magnitudes slower than the 3.x version.