Merge post-RC1 changes to mainline
[nedit.git] / ReleaseNotes
blobf400158f4a5d2b9848838e23b84cbc350c902464
1           Release Notes for NEdit Version 5.2, October 2001
3 $Id: ReleaseNotes,v 1.10 2001/10/21 15:13:07 tringali Exp $
5 This file contains last minute notes to users about the release, which are not
6 included in the documentation or README files included with the distribution
7 kits.  It also contains change information, for users who are interested in
8 what bugs have been fixed, and what features have been added in the current 
9 version.
11 If you are upgrading NEdit from a version prior to 5.0, please see the notes in
12 the README file which came with the (source or executable) distribution kit,
13 about updating macros and font settings in your .nedit file.
16 New Features in 5.2
18  - Added built-in patterns for CSS, XML, and regular expressions (Regex).
19    Many other pattern updates.
21  - Support for high- and true-color systems.  NEdit now will automatically
22    select the best visual from your X server.  This reduces the chance of
23    running out of colors.
25  - New features in the Find and Replace dialogs:
27    o Replacement across multiple windows in a session.
28    o Case sensitivity may be set independently of regular expressions.
29    o Add "Replace and Find" command, which saves keystrokes when doing
30      a large-scale find & replace.
32  - ClearCase version-extended pathnames.
34  - Many new macro subroutines and variables.
36  - Array support in macros.
38  - Range highlighting of matching delimiters.
40  - Undo and Redo highlights the text that has changed, when visible.
42  - Support for wheel mouse scrolling on servers that support it (XFree86). 
44  - Improved accelerator key handling.
46  - Insert Control Code dialog accepts value in any valid C notation
48  - Optional beeping when search operations wrap.
50  - Additional default search styles.
52  - Optional displaying of path names in the window list menu.
55 Bug Fixes in 5.2
57  - Fix a crash when entering an invalid line number in "Goto Line".
59  - Ignore the Caps-Lock key when invoking accelerators.
61  - Fix problems when running NEdit on 64-bit platforms like Alpha
63  - NEdit failed to open files if some directories above were not "readable"
65  - Fix potential crashes if some system calls fail
67  - When no colors are left, attempt to reuse the closest matching color.  This
68    allows NEdit's syntax highlighting to better coexist with Netscape, which
69    unfortuntely takes all available colors.
71  - "Overtype" mode is now bound to the Insert key, to be consistent with
72    Motif text fields.
74  - Accelerators now available in confirmation dialogs, and may be invoked
75    without the Alt key.
77  - Don't even try to open a directory for editing
79  - Fix a couple of memory corruption problems
81   
82 New Features in 5.1
84  - Significant extensions to the regular expression syntax.  See details
85    below.
87  - Incremental search, and optional search bar.
89  - New ctags code with full support for Exuberant Ctags, better
90    handling of tag collisions, multiple tag file support, on-demand
91    loading of tag files, and automatic reload of modified tag files.
93  - Optional display of line numbers along the left side of the text.
95  - NEdit can now read and write MS DOS format files.
97  - New built-in syntax highlighting patterns for Lex, PostScript, SQL,
98    Many syntax highlighting pattern improvements.
100  - Improved international character set input
102  - New macro subroutines: list_dialog, getenv, set_language_mode.
104  - Optional warnings about external modifications to files
106  - Clearcase awareness
108  - Session manager restart capability
110  - Default language mode "*" for user-defined menu items, allows
111    per-language variations on a common base
113  - Allow additional modifiers like Sun diamond key in user defined
114    accelerators
116  - Option to sort open previous menu.
118  - -geometry and -iconic command line arguments act per-window, and
119    can be specified via nc
121  - -geometry now specified in characters, rather than pixels
123  - -lm (language mode) command line option
125  - Save As dialog defaults to same file name
127  - Better default fonts for Linux systems
129  - .nedit file version mechanism to make future upgrades easier
132 Bug Fixes in 5.1
134  - Crash on large amounts of data fed to shell command which does not
135    take input
137  - Delayed secondary windows when executable statements specified in
138    users .neditmacro file
140  - Many corrections to online help
142  - Many highlight patterns corrections
144  - Using window close box in file open/save dialogs leaves nedit server
145    unresponsive
147  - escape in macro dialogs can cause macro hang
149  - Lesstif-specific fixes: attachment warnings in font selector,
150    Work around replace dialog focus bug.
152  - NEdit no longer maintains original protection settings on files.  It
153    allows them to be changed externally.
156 Details of Regular Expression Changes in 5.1
158   Bug Fixes
160     o Fixed bug that caused character classes with a character range not to
161       work properly if one of the range characters was an escaped character.
163   Improvements In Existing Features
165     o Increased maximum number of capturing parentheses from 40 to 50.
167     o Removed optimization that uses `must match' strings (it didn't work and
168       caused more problems than it solved.)
170     o Improved error messages.
172     o Improved Start-Of-Line and End-Of-Line detection by the `^', `$', and the
173       new `\B' (see below) anchors.  The Start-Of-Word and End-Of-Word anchors
174       `<' and `>' where not enhanced due to syntax color highlighting pattern
175       compatibility issues.
177     o Changed code to use "unsigned char" in most cases instead of "signed
178       char". Also, use of ANSI character functions (e.g. isdigit(), isspace())
179       were added wherever possible.  These changes should improve support for
180       locales other than "C", for example character sets with accented
181       characters.
183     o Added character escapes for:
184       -  \e   ASCII escape character (for environments that use the EBCDIC
185               character set, set the EBCDIC_CHARSET compiler symbol to get the
186               EBCDIC equivalent escape character.)
188       -  \-   minus sign
189       -  \{   left brace
190       -  \}   right brace
192     o Removed the `\"' escape since `"' is not a meta character.
194     o In order to support numeric escapes, use of `\0' as a synonym for `&'
195       in replacement strings was removed.  `\0' now signals the start of a
196       numeric (octal) escape sequence (see below.)
198     o Minor tweaks for improved performance.
200   Enhancements
202     o Octal and Hexadecimal Escapes
204       Octal and hexadecimal escapes begin with \0 and \x (or \X) respectively.
205       For example, \052 and \X2A both specify the `*' character.  Escapes for
206       null (\00 or \x0) are not valid and will generate an error message.
208     o Shortcut Escapes for Common Character Classes
210       \d  digits            0-9
211       \l  letters           a-z and A-Z
212       \s  whitespace        \t, \r, \v, \f, and space
213       \w  word characters   a-z, A-Z, 0-9, and underscore, `_'
215       `\D', `\L', `\S', and `\W' are the same as the lowercase versions except
216       that the resulting character class is negated.
218     o Anchors
220       The `\B' non-word boundary anchor has been added as the logical opposite
221       of `<' and `>' collectively.  This anchor ensures that the left and
222       right characters are either both delimiter characters or both
223       non-delimiter characters.
225     o Word Delimiter Escape Sequences
227       \y   Word delimiter character
228       \Y   Not a word delimiter character
230       The `\y' token matches any single character that is one of the characters
231       that NEdit recognizes as a word delimiter character, while the `\Y' token
232       matches any character that is NOT a word delimiter character.  Note:
233       these are not anchors and DO consume one character of input.
236     o Quantifiers
238       +  Minimal (lazy) Matching Quantifiers
240          *?   Match zero or more
241          +?   Match one at least one
242          ??   Match zero or one
244          These quantifiers match only what is absolutely necessary to achieve
245          a match.
247       +  Counting (or Brace) Quantifier
249          {min,max}  Match from `min' to `max' times the previous regular
250                     expression atom.
252          If `min' is omitted, it is assumed to be zero.  If `max' is omitted,
253          it is assumed to be infinity.  Whether specified or assumed, `min'
254          must be less than or equal to `max'.  If both are omitted, then the
255          construct is the same as `*'.   Note that `{,}' and `{}' are both
256          valid brace constructs.  A single number appearing without a comma,
257          e.g. `{3}' is short for the `{min,min}' construct, or to match
258          exactly `min' number of times.
260     o Non-Capturing Parentheses
262       Non-Capturing Parentheses are of the form `(?:<regex>)' and facilitate
263       grouping only and do not incur the overhead of normal capturing
264       parentheses.
266     o Positive Look-Ahead
268       Positive look-ahead constructs are of the form `(?=<regex>)' and
269       implement a zero width assertion of the enclosed regular expression. In
270       other words, a match of the regular expression contained in the positive
271       look-ahead construct is attempted.  If it succeeds, control is passed to
272       the next regular expression atom, but the text that was consumed by the
273       positive look-ahead is first unmatched (backtracked) to the place in the
274       text where the positive look-ahead was first encountered.
276     o Negative Look-Ahead
278       Negative look-ahead takes the form `(?!<regex>)' and is exactly the same
279       as positive look-ahead except that the enclosed regular expression must
280       NOT match.
282     o Case Sensitivity
284       (?i<regex>)   Case insensitive; `AbcD' and `aBCd' are equivalent.
285       (?I<regex>)   Case sensitive;   `AbcD' and `aBCd' are different.
287       Regular expressions are case sensitive by default, i.e `(?I<regex>)' is
288       assumed.  All regular expression meta characters respond appropriately to
289       case insensitivity including character classes and back-references.
291     o Matching Newlines
293       (?n<regex>)   `.', `[^...]', `\s', `\S' will match newlines
294       (?N<regex>)   `.', `[^...]', `\s', `\S' do not match newlines
296       `(?N<regex>)' is the default behavior.
298     o Comments
300       Comments are of the form `(?#<comment text>)' and can be inserted
301       anywhere and have no effect on the execution of the regular expression.
303     o Notes on New Parenthetical Constructs
305       Except for plain parentheses, none of the parenthetical constructs
306       capture text.  If that is desired, the construct must be wrapped with
307       capturing parentheses, e.g. `((?i<regex))'.
309       All parenthetical constructs can be nested as deeply as desired, except
310       for capturing parentheses which have a limit of 50 sets of parentheses,
311       regardless of nesting level.
314 New Features in 5.0.2:
316  - Word-selection (double click) can be used to select ranges of delimiters
318  - New built-in macro variables: $line, $column, and $modified
320  - Smart-indent mode available for Python language
321    
322  - Minor improvements in default pattern sets for NEdit Macros, X Resources,
323    and Sh/Ksh/Bash
326 Bug Fixes in 5.0.2:
328  - -import did not work as advertised in 5.0.1.  When used, it re-set a
329    number of preferences back to default values.  Could also potentially
330    cause a crash.
332  - Macro -> Repeat crashes on some systems.
334  - Mouse state can get "stuck" on Alpha-based systems.
336  - Combination of auto-wrap, auto-indent, and unbreakable lines extending the
337    width of the window, caused nedit to unnecessarily insert blank lines.
339  - Incorrect case-insensitive comparison in character sets > 128 bits.
341  - in by-word drag-selection (double click then drag) when begun in the middle
342    of a whitespace selection, anchor would revert to original cursor position
343    rather than maintaining the entire whitespace block.
344    
345  - Language mode names containing spaces could not be used in language
346    sensitive user-defined menu items.
347    
348  - New windows did not always see existing learn/replay sequence, recorded
349    before the window was created.
350    
351  - Possible crash in search_string and search_window macros, when used with
352    long search strings.
354  - Possible crash in get_selection("any") macro.
356  - Under Solaris, crashes on window opening, file dialog, and language mode
357    selection, when user-defined sub-menus were used.
358    
359  - Filenames containing spaces could cause the .neditdb file to become
360    unreadable.
361    
362  - Escape key could not be used to cancel file-selection dialogs when the
363    file list had keyboard focus (which it almost always does).
364    
365        
366 New Features in 5.0.1:
367    
368  - Repeat-over-range, and repeat-to-end capability for repeating last
369    command and learn/replay sequence.
370    
371  - Import capability for loading macro/shell menu commands, highlight
372    patterns, and style sets created by other users.
374  - New macro language routines: string_to_clipboard, clipboard_to_string,
375    toupper, tolower, variables: $em_tab_dist.
376    
377  - Additional default highlight patterns for sh and X resources.
379  - Sorted Open Previous menu.
380    
381  - Numerous improvements to default highlighting patterns and smart indent
382    macros.
385 Bug Fixes in 5.0.1:
387  - Various crashes on Motif 2.0 (Linux and FreeBSD) systems, usually
388    associated with opening files and changing language modes.  Usually,
389    but not necessarily, following changes to user-defined menu items.
391  - Background menu activation during drag operation could leave drag
392    unfinished, cause undo to malfunction, and eventually lead to a crash (which
393    was easy to trigger accidentally when the middle button is emulated with
394    mouse-chords on a two button mouse).
396  - X11R6 clients talking to X11R5 servers could crash on font dialog.
398  - Rapid repetition of long macros (such as binding to key and using keyboard
399    repeat) could cause crash.
400    
401  - Several commands which put up dialogs were vulnerable to timing windows
402    where repeating the command could cause a crash.
404  - Calling macro close() routine could cause crash if used to close the window
405    in which the macro was executing.
406    
407  - Using load_macro_file() as an "include" statement in macro files could
408    cause hang.
410  - Artifacts when using non-matching highlight fonts, and making certain types
411    of changes which change the fonts used to display other (not the line being
412    modified) lines in the file.
414  - Auto-newline wrap in overtype mode could duplicate part of wrapped text.
416  - Lower panes in split window mode allowed modification to read-only windows.
418  - Several minor dialog and window focus related problems for explicit (click
419    to focus) users.
421  - Paste Column ignored existing selection.
423  - After copying and re-naming language mode information, highlight patterns
424    and smart indent macros remained attached to the re-named pattern instead of
425    the original.
427  - Trailing newlines should not have been prohibited in Open Selected.
429  - Help for creating smart indent macros was missing.
432 New Features in 5.0
434  - Completed macro extension language (Simple C/awk-like syntax, safe,
435    fully interruptable)
437  - Syntax highlighting.  Built-in patterns for C, C++, Java, Fortran, Pascal,
438    Ada, Perl, Python, Tcl, Awk, Csh, HTML, LaTeX, VHDL, Verilog, and more.
440  - Programmable Smart indent.  (Experimentally, at least.  There are only
441    macros for C and C++, and they may not fit everyone's programming style.)
443  - Language-sensitive preferences
445  - Continuous wrap mode (long line wrapping), in addition to existing
446    automatic-newline wrapping
448  - User-defined menus can be hierarchical and language-sensitive.
450  - Configurable right-button pop up menu
452  - Pan-scrolling
454  - Searchable on-line help
456  - Word boundary matching (<>) in regular expressions
458  - Repeat command
460  - More dialogs have up-arrow recall
462  - White-space selection via double-click
465 Bug Fixes and Enhancements to Existing Features in 5.0
467  - No more limits on editing files containing ascii nul characters
469  - Fill Paragraph command handles leading indents
471  - Select to mark
473  - Better directory defaulting in Open Selected and shell commands
475  - Open Selected processes tilde (~) and wildcards
477  - Goto Mark centers scroll position better
479  - Multiple shell commands can be run simultaneously
481  - Shell command execution doesn't block server command processing
483  - Emulated-tab deletion treats auto-indent as emulated tabs
485  - Auto-wrapping of pasted text is optional (off by default)
487  - Notice that default preferences have changed and ask about saving
488    on exit
490  - Selections remain selected after shell command and filter execution
492  - Wrap margin and emulated tab distance preferences are properly
493    transferred to new panes in split window mode