1 Minimum Profit Release Notes
2 ============================
7 * Fixed insert / overwrite mode.
8 * New action `filter_selection', to filter the selection (or the
9 full document if no selection is done) through a system command.
10 * If a selection is invisible (incomplete or with the start and end
11 in the same character), a new keystroke does not jump to it.
12 * If a block is selected, actions `word_wrap_paragraph',
13 `join_paragraph' and `eval_doc' act only on it.
14 * New action `exec_action', that shows a list of actions to execute
15 on the current document.
16 * New action `cut_lines_with_string', that cuts to the clipboard
17 all lines in a document or block that matches a regular expression.
18 * New command line option `-txt' to use text mode (instead of GUI).
19 * New configuration option `mp.config.hw_cursor' to activate
20 the hardware cursor in text environments (disabled by default).
21 * File opening in Curses is fully navegable.
22 * New action `insert_next_item', to insert a new enumeration
24 * If a text mode menu panel do not fit vertically on the screen,
25 scroll menu items as necessary.
30 * If a block is selected, any keystroke substitutes it.
31 * Support for Alt + keys (ASCII and movement) has been added,
32 and mostly left unbound to be used by the user for his own
34 * A new tab mode, which uses the previous line as a template
36 * Fixed action `open_under_cursor'.
37 * The `mp.paste()' function returns the clipboard content
38 as a string if called without arguments.
39 * New Grutatxt syntax highlighter.
41 * Fix a bug when calculating the drawing position in the
42 selected block, that were leading to crashes.
47 * A new Qt4 driver (adapted from the KDE4 driver).
48 * A new hexadecimal viewer.
49 * New action `open_dropped_files', to open files dropped from
50 the underlying system GUI.
51 * Improved file encoding autodetection by looking at the
53 * New configuration option `keep_eol', to keep the original
54 end of line sequence each document had.
55 * Fixed some clipboard issues, as replacing the selected block
56 when pasting and some crashes.
57 * win32 executable has been renamed to `mp-5.exe'.
58 * The status line format string can also include the %e token
59 to show the encoding used by the document.
60 * Fixed win32 input processing in non-latin environments.
61 * Setting an empty encoding (to fall back to system defaults)
67 * The `grep' action can now be recursive.
68 * New syntax color for special documentation blocks.
69 * Fix searching into empty selected blocks (this was bug #1269).
70 * New action `section_list', that shows a list of _sections_
71 in the current document to jump to. Sections are usually
72 function definitions and special marks in programming
74 * New action `seek_misspelled', to search the next
75 misspelled word. It has been assigned to keycode `f5'.
76 * New action `ignore_last_misspell', to add the last misspelled
77 word found by `seek_misspelled' to a whitelist so it won't
79 * New action `seek_repeated_word', to search for words starting
80 or ending with the same number of letters up to a maximum
81 distance. It's controlled by the new configuration directives
82 `mp.config.rw_num_chars' and `mp.config.rw_max_dist'.
83 It has been assigned to keycode `f6' (this keycode was
84 previously assigned to `join_paragraph', which has no
86 * The action `open_templates_file' has been fixed.
87 * Several GTK interface updates by fellow developer Sebastian Vöcking.
88 * New command line option `-d', to change the working directory.
89 * Several fixes to the win32 driver; word wrapping, combobox
90 drop-down sizes, underlined text.
91 * Avoid hanging if the external ispell program is broken.
92 * The `dump()' function now dumps its argument as MPSL code.
97 * Internationalization works in all platforms (including KDE4,
98 were it was faulty, and win32, where it was non-existent since
100 * The status line format string can also include the %w token
101 to show the number of words in the current document or selection
103 * Search and replace is now limited to the selected block, if any.
108 Fixes to the KDE4 driver:
110 * Underlined text works.
111 * Text fields in forms now have history.
112 * If no xserver can be contacted, fall back to the curses interface.
118 * Rectangular block copy/paste support.
119 * New syntax highlight for the Euphoria language.
124 * New action `open_under_cursor', that picks the word in the
125 current document under the cursor, accepts it as a document
126 name and tries to open it. If it's in the format string:number,
127 is accepted as a file name and a line number. It's bound by
128 default to `ctrl-enter' (`alt-enter' under Curses).
129 * The `grep' action bevahaviour has changed; instead of in a form,
130 matches are shown in a read-only document that is only closed
131 explicitly. Each change can be moved to by using the new
132 `open_under_cursor' (`ctrl-enter' or `alt-enter') action shown above.
133 * In a similar way, the `build' action also shows its output in a
134 read-only document instead of a form that is not automatically closed,
135 making the browsing and editing of compilation errors more useful.
136 * Forms in the Curses driver have changed their look. All fields in a
137 form are shown simultaneously on screen. This is one step to close
139 * A set of character encoding converters have been natively implemented,
140 improving those platforms where the 'iconv' library is not available
141 (i.e. Windows and old Unix systems). The available encodings can be
144 dump(EMBEDDED_ENCODINGS);
149 * New option to mark end of line characters, with its associated
150 configuration directive (mp.config.mark_eol).
151 * The end of line string (mp.config.eol) is now system-dependent (so,
152 on win32, it's set by default to \r\n).
153 * Copy and paste on GTK has been fixed (this was bug #1205).
154 * Fixed some redrawing issues (bug #1236 and others).
155 * Ctrl-keys no longer fail on GTK (bug #1252).
156 * New document _Minimum Profit Action Reference_.
157 * New action `build', for building Makefile-based projects. See the
158 action reference for details.
163 * Improved line edition in the Curses interface (full edition plus file
164 expansion using the `tab' key in open / save file prompts).
165 * Auto-indenting is temporarily disabled while pasting (bug #1250).
166 * New document _Minimum Profit Function Reference_ (contributed by Lee Page).
171 * The search hit is highlighted.
172 * When invoked from the menu, the `record_macro' action dropped
173 the last key (bug #1245).
174 * A Curses configuration detection has been fixed that made
175 some things behave strangely, as the drop-down menu not
176 responding under some terminal configurations (bug #1247).
177 * The Curses menu no longer crashes if it doesn't fit on
178 the screen (bug #1195).
179 * The -f (execute script) command line argument really works
181 * New manual page (bug #1219) and README files (bug #1218).
182 * Updated documents, _MPSL Overview_ and _Minimum Profit Cookbook_.
183 * New documents, _Minimum Profit Data Model_ and
184 _Creating interactive dialog boxes_.
189 * New session support. All open documents and its current position
190 can be stored / retrieved with the new `save_session' and
191 `load_session' actions. Two new configuration flags has
192 been added: `mp.config.auto_sessions', to automatically load / save
193 sessions, and `mp.config.local_sessions', to save sessions in the
194 currently active directory instead of in the home directory.
195 * Multiple key sequences for invoking actions (ala Emacs) are
196 now possible. To create them, just assign a hash to a keycode
197 instead of an action. For example, to assign the key sequence
198 Ctrl-x Ctrl-f to `open' and Ctrl-x Ctrl-s to `save', you can use
200 mp.keycodes['ctrl-x'] = {
205 * In the curses version, confirmations now have default values
206 (shown in brackets), activated with the ENTER key.
207 * New action `close_all', that closes all documents.
212 * New `complete' action, that asks for completion on the current
213 word using any of the words found in the same document.
214 * New `redo' action, to revert undo operations.
215 * The global configuration file `/etc/mp.mpsl' is also executed.
216 * In the `replace' action, the substitution string can contain
217 the special character &, that will be replaced by the matched
218 string (as in the `sed' command line tool).
223 * New support for translating key sequences into MP keycodes, mainly
224 for redefining ANSI sequences not supported by current terminfo /
225 termcap. For example, if your terminal sends the ANSI sequence [6;5~
226 whenever you press Ctrl+page down, you can add to your config file
229 mp.add_keyseq("[6;5~", 'ctrl-page-down');
231 * A new `system_command' action, to pipe from and to system commands
233 * A new `word_count' action, to count the number of lines and words
234 in a document (or in the selected block).
235 * Incorrect word wrapping has been fixed (Closed bug #1137).
236 * Search and replace expand backslashed characters like \n and \t
238 * New timer functionality has been added; a user function can be called
239 each time a specified period of milliseconds have elapsed. If, for
240 example, you want to print a string on standard output each two
243 mp.timer(2000, sub { print("Hi, world!\n"); });
248 * Password-protected files fully work.
249 * Moving to next / previous instance of character (bound to ctrl-page-down
250 and ctrl-page-up) works (Closed bug #1131).
251 * Files open MUCH faster.
252 * Selection can be done by pressing shift + any movement key (Closed bug #1182).
253 * Dialog boxes work under Windows 98 (Closed bugs #1196, #1197).
254 * Block selection can be done by dragging the mouse (Closed bugs #1200, #1201).
255 * New `grep' functionality (Closed bug #1116).
256 * New action `sync' (save all modified documents, closed bug #1206).
257 * New action `document_list' (show a box with all open documents, allowing
258 the selection of the active one; closed bug #1211).
259 * Translations ported from mp 3.x (closed bug #1169).
260 * Most syntax highlight definitions ported from mp 3.x (closed bug #1168).
265 * The menu in the Curses interface has been (finally) implemented.
266 * Interfaces have changed internally; a new driver function, mp.drv.form()
267 serves as a dialog box generic generator, resulting in more useful queries
268 for data (for example, all data required for a `replace' operation is
269 queried in only one dialog box). The Curses implementation, though
270 functional, is still just a wrapper to the old interface functions
271 and fields are queried one-by-one (which is annoying). This is an example
272 of a call to mp.drv.form(); the r variable will contain an array of 5
273 elements (one per widget) containing the values, or NULL if user cancelled:
275 local r = mp.drv.form( [
277 /* a 'text' widget */
278 { 'label' => "Replace this:",
280 'history' => 'search',
284 { 'label' => "With:",
286 'history' => 'replace',
289 /* a 'password' widget */
290 { 'label' => 'Password:',
291 'type' => 'password' },
293 /* a 'checkbox' widget */
294 { 'label' => "Case sensitive:",
295 'type' => 'checkbox',
296 'value' => mp.config.case_sensitive_search },
298 /* a 'list' widget */
299 { 'label' => 'All C files:',
301 'list' => glob('*.c'),
305 * Password protecting files works (but they cannot be opened yet, so this
306 is far from useful, unless you use mp 3.x to open them).
307 * Case sensitivity in searches can be controlled with the new
308 config flag mp.config.case_sensitive_search.
309 * Replace (and global replace by use of the new config flag
310 `mp.config.global_replace') works.
315 * Syntax highlight definition have changed (again, hopefully for the last
316 time). Definitions are now an array of attribute name / regexes in which
317 the order is significative.
318 * Template insertion works.
319 * Tag selection (open the file where a symbol is defined) works.
320 * Symbol completion (using tags) works.
321 * Closed bugs #1159, #1158, #1153, #1161.
326 * A big advance in the Curses interface; alerts, confirmations, and open
327 file, save file, search and generic prompts are working. Still lacking
328 the selection lists (as the rest of interfaces) and the menu.
329 * Improved menus; if an invalid action is added to a menu, it's shown
330 followed by a ?; if a key is bound to that action, it's shown between
332 * For systems lacking iconv support (MS Windows), a crappy, ad-hoc utf-8
333 converter has been added. This means that hitting `escape' and typing
334 `encoding('utf-8');' makes reading and writing utf-8 encoded files
335 possible on every system.
336 * New action `join_paragraph', to join current paragraph all in one line.
337 * New action `word_wrap_paragraph', that re-word-wraps current paragraph.
338 Word wrapping must be set ('mp.config.word_wrap = number;') for this to
344 * The GTK and win32 drivers now include a native open/save file dialog.
345 * Interactive help (help for the word under the cursor, triggered by
346 pressing `f1') works.
347 * The menu in GTK and win32 works.
349 * Some bugs that caused random crashes has been fixed.
350 * New action `exec-doc', that executes the active open document as
356 * New configuration option `mp.config.tabs_as_spaces', to store tabs
358 * Each syntax highlight definition can contain an optional function
359 called detect() that receives the document as argument and can be used
360 to tailor special detection rules.
361 * A big part of the internal storage of colors and attributes have
362 been rewritten to make it more dynamic.
363 * Tag target for the word over the cursor is shown in the status line.
364 * Move word left works.
365 * Opening an already open file makes it the active one instead of
367 * The `execute code' action has been remapped from `ctrl-f1' to escape.
368 * Spellchecking via ispell works (though it's SLOW!). Activate it by
369 hitting escape and typing:
373 * By default, files are now unlinked before (re)written. File permissions
374 and ownership are restored if available. This behaviour can be disabled
375 by setting `mp.config.unlink' to zero.
376 * The GTK driver drawing code has been optimized, so it's much more
382 * The `modified' flag of documents is maintained, so now closing files
383 with pending modifications ask for confirmation. Also, the %m status
384 line directive works (marking modified files with an asterisk).
385 * Flex and bison are no longer needed to build.
386 * The `close window' button in GUIs (win32 and GTK) now generate the
387 special keycode `close-window'.
388 * The `exit' action now closes all open documents, asking for saving
389 confirmation on those modified.
390 * Temporary versions of the `open' ans `save' actions (using
391 mp.drv.readline() instead of an ad-hoc open file dialog) have
393 * The GUI interfaces now can have their font preferences configured
394 by using mp.config.font_face and mp.config.font_size.
395 * The actions `zoom-in' and `zoom-out' (font size rescaling, bound to
396 `f11/f12' and `ctrl-kp-minus/ctrl-kp-plus') have been implemented.
397 * New mouse-related actions; `move-to-mouse-position', `move-mouse-wheel-up'
398 and `move-mouse-wheel-down'.
403 This is an EXPERIMENTAL version for evaluation purposes only. There are
404 many things that aren't implemented, others fail miserably and many more
405 do it incorrectly. Basically, what is known to work is:
407 * Basic text editing fully works. I've been using it for six months or so
408 to maintain itself, and there has not been a crash in three months,
410 * Scripting works fine (90% of Minimum Profit 5.x itself is implemented
411 in MPSL, its internal scripting language).
412 * Undo works fine. It's bound to ctrl-z.
413 * Works cleanly in an UTF-8 environment.
415 I do development on the GTK version, so it's where it works best. The
416 curses version lacks many of the interface (alerts, confirmations,
417 asking for text, etc.), so it's barely usable. The win32 version seem
418 to work, but it needs to be manually installed and probably need some
421 What it doesn't work:
423 * The dialogs to open or save a file by its name aren't implemented.
424 There are workarounds for this: files can be opened from the command
425 line and save works correctly if the edited file has a name. Also,
426 files can be opened by hitting `ctrl-f1' (execute script code) and
429 mp.open("file-to-be-opened");
433 * No password protected files.
435 * No external commands (so no support for help, tags, etc.).
436 * Some movement commands as moving a word left, moving to matching
437 brackets, etc. are still not implemented.
438 * Only a few syntax highlight definitions are implemented.
439 * Many other things I cannot remember.
441 Documentation is still scarce: the more interesting bits are inside the
442 mpsl/doc directory. This is where the scripting language is documented,
443 with some basic overviews and implementation notes (there is even an
444 embryo of a PostScript quick reference guide).
446 Customizing can be done by writing MPSL commands in the ~/.mp.mpsl file,
447 which is read on startup.
449 I have not tried to optimize the internal engine, so it's probably some
450 magnitudes slower than the 3.x version.