Fix for SF bug #987102: segmentation fault on replace. Regex recursion is
[nedit.git] / README
bloba72c8154d5ad136f6f7d9304f15c24ecfe3a1871
1                     NEdit Version 5.5RC1, July 2004
3 $Id: README,v 1.37 2004/07/08 06:29:42 n8gray Exp $
4              
6 NEdit is a multi-purpose text editor for the X Window System, which combines a
7 standard, easy to use, graphical user interface with the thorough functionality
8 and stability required by users who edit text eight hours a day.  It provides
9 intensive support for development in a wide variety of languages, text
10 processors, and other tools, but at the same time can be used productively by
11 just about anyone who needs to edit text.
13 This program is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15 PARTICULAR PURPOSE.
16 As of version 5.1, NEdit may be freely distributed under the terms of the GNU
17 General Public License (see the file COPYRIGHT which is also part of this
18 distribution).
20 NEdit sources, executables, additional documentation, and contributed software
21 are available from the NEdit web site at http://nedit.org.
24 AUTHORS
26 NEdit was written by Mark Edel, Joy Kyriakopulos, Christopher Conrad,
27 Jim Clark, Arnulfo Zepeda-Navratil, Suresh Ravoor, Tony Balinski, Max
28 Vohlken, Yunliang Yu, Donna Reid, Arne Førlie, Eddy De Greef, Steve
29 LoBasso, Alexander Mai, Scott Tringali, Thorsten Haude, Steve Haehn,
30 Andrew Hood, Nathaniel Gray, and TK Soh.
32 The regular expression matching routines used in NEdit are adapted (with
33 permission) from original code written by Henry Spencer at the University of
34 Toronto.
36 Syntax highlighting patterns and smart indent macros were contributed
37 by: Simon T. MacDonald,  Maurice Leysens, Matt Majka, Alfred Smeenk,
38 Alain Fargues, Christopher Conrad, Scott Markinson, Konrad Bernloehr,
39 Ivan Herman, Patrice Venant, Christian Denat, Philippe Couton, Max Vohlken, 
40 Markus Schwarzenberg, Himanshu Gohel, Steven C. Kapp, Michael Turomsha, 
41 John Fieber, Chris Ross, Nathaniel Gray, Joachim Lous, Mike Duigou, 
42 Seak Teng-Fong, Joor Loohuis, Mark Jones, and Niek van den Berg.
45 VERSION 5.4
47 Version 5.4 offers several new features:
49   - Calltips
50   - Rangesets
51   - Backlighting
52   - Highlighting information macros
53   - Full mouse wheel support (on XFree86 servers)
54   - Look-behind matching for regular expressions
55   - Regular expression and syntax highlighting speed-ups
56   - Flexible resource file location
57   - Color dialog
58   - Option to auto-hide mouse pointer while typing
59   - Option to keep cursor away from top and bottom of the screen
60   - Check for real changes of externally modified files
61   - Synchronized interaction between nc and nedit
62   - Several smaller improvements on usability and speed
63   - Several smaller improvements to the macro language
65 For a more detailed description of these new features and a list of 
66 important bug fixes, see the ReleaseNotes file for more details.
68 BUILDING NEDIT
70 Pre-built executables will be available for many operating systems, including
71 most major Unix and VMS systems. Check out the NEdit web page at
73   http://nedit.org
76 The requirements to build NEdit from the sources are: 
78  - ANSI C89 system (compiler, headers, libraries)
79  - make utility (eg, GNU make)
80  - X11R5 development stuff (headers, libraries), or newer
81  - Motif 1.2 or above (Motif 1.1 might work, but is no longer supported)
82    This GUI library is a standard part on most systems which have an
83    X11 installation. Most commercial Unix systems feature this, others may
84    require a separate installation. 
85    A "free" (LGPL'ed) alternative to Motif, called LessTif, is available.
86    See the LessTif section under PLATFORM SPECIFIC ISSUES for details.
88 Optionally one may use:
90  - yacc (or GNU bison)
93 The two directories called 'source' and 'util' contain the sources for NEdit.
94 'util' should be built first, followed by 'source'. The makefile in NEdit's
95 root directory can be used to build both in sequence if your system is one of
96 the supported machines and no modifications are necessary to the makefiles. To
97 build NEdit from the root directory, issue the command: 'make <machine-type>';
98 where <machine-type> is one of suffixes of a makefile in the directory
99 'makefiles'. For example, to build the Silicon Graphics version, type:
101         make sgi
103 If everything works properly, this will produce two executables called
104 'nedit' and 'nc' in the directory called 'source'.
107 The Source Directories
109 Since executables are already available for the supported systems, you are
110 probably not just rebuilding an existing configuration, and need to know more
111 about how the directories are organized.
113 The util directory builds a library file called libNUtil.a, which is later
114 linked with the code in the source directory to create the nedit executable.
116 The makefiles in both source directories consist of two parts, a machine
117 dependent part and a machine independent part. The machine dependent makefiles
118 can be found in the directory called 'makefiles', and contain machine specific
119 header information. They invoke a common machine independent part called
120 Makefile.common (which in turn includes also Makefile.dependencies).
121 To compile the files in either of these directories, copy or link one of the
122 system-specific makefiles from the directory 'makefiles' into the directory,
123 and issue the command:
125     make -f Makefile.<machine-type>
126     
127 (where <machine-type> is the makefile suffix).  Alternatively, you can
128 name the file 'Makefile' and simply type "make".
130 If no makefile exists for your system, you should start from Makefile.generic,
131 which is extensively commented. Contact the developer at develop@nedit.org for
132 help.
135 Building NEdit on VMS Systems
137 Command files are provided for compiling and linking files in the source
138 and util directories.  comutil.com compiles the files in the util directory
139 and produces two library files, vmsutils.olb and libutil.olb.  comnedit.com
140 compiles and links the files in the source directory to produce the nedit.exe
141 executable.
144 Additional Settings
146 Some C preprocessor macros may be used to en/disable certain parts
147 of the code. Usually this correponds to some non-important features
148 being selected or certain workarounds for platform-specifc problems.
149 Those which might be useful on more than one platform are documented
150 in makefiles/Makefile.generic.
152 Note that a special compilation flag, namely REPLACE_SCOPE, is currently
153 available. Its purpose is to allow the evaluation of two alternative
154 (but functionally equivalent) Replace/Find dialog box layouts. 
155 By default, NEdit is built with a Replace/Find dialog containing 2 rows
156 of push buttons. Compiling with the REPLACE_SCOPE flag enables an 
157 alternative layout with a row of radio buttons for selecting the scope of 
158 the replace operations. Eventually, one of these alternatives will
159 probably disappear, but up to now, the NEdit developers have not been able
160 to decide which one to drop. Please give them both a try and let us know 
161 which one you prefer (via the discuss mailing list, for instance).
163 Another compilation flag, HAVE__XMVERSIONSTRING, adds additional
164 information about the Motif version in the menu item "Help->Version" or
165 the command line option "-version". Whether this is available on your
166 system depends on the Motif implementation. It is known to work with
167 OpenMotif 2.1.30, and Motif on Solaris 2.6 and AIX 4.3.3.
169 INSTALLATION
171 NEdit consists of a single, stand-alone executable file which does not require
172 any special installation.  To install NEdit on Unix systems, simply put the
173 nedit executable in your path.  
174 On VMS systems, nedit must be defined as a foreign command so that it can
175 process command line arguments. For example, if nedit.exe were in the
176 directory mydir on the disk called mydev, adding the following line to your
177 login.com file would define the nedit command:
179         $ ned*it :== $mydev:[mydir]nedit.exe
181 To use NEdit in client/server mode, you also need the nedit client program, nc,
182 which, again, needs no special installation, except in the VMS case, as above.
183 On some systems, the name nc may conflict with an existing program.  In that
184 case, choose a different name for the executable and simply rename it.  The
185 recommend alternative is 'ncl'.
186 Don't forget to put the man-pages for nedit and nc into a place where your
187 man command is able to find them (e.g. /usr/man/man1/nedit.1)
190 RUNNING NEDIT
192 To run NEdit, simply type 'nedit', optionally followed by the name of a file
193 or files to edit. On-line help is available from the pulldown menu on the far
194 right of the menu bar. For more information on the syntax of the nedit command
195 line, look under the heading of "NEdit Command Line".
197 The recommended way to use NEdit, though, is in client/server mode, invoked by
198 the nc executable. It allows you to edit multiple files within the same
199 instance of NEdit (but still in multiple windows). This saves memory (only one
200 process keeps running), and enables additional functionality (such as find &
201 replace accross multiple windows). See "Server Mode and nc" in the help menu
202 for more information.
204 If you are accessing a host Unix system from a remote workstation or X
205 terminal, you need to set the Unix environment variable for your display:
206 csh:
207         % setenv DISPLAY devicename:0
208 sh, ksh, bash, zsh:
209         % export DISPLAY=devicename:0
211 where devicename is the network node name (hostname) of the workstation or X
212 terminal where you are typing.
213 On VMS systems, the equivalent command is:
215         $ set display/create/node=devicename
219 PLATFORM SPECIFIC ISSUES
221 Systems with LessTif, rather than Motif libraries
223 As of Lesstif 0.93.18, NEdit is very stable with Lesstif. 
224 You can get the latest LessTif version from http://www.lesstif.org.
225 If you are having trouble building or running NEdit with LessTif,
226 remember there are pre-compiled statically linked executables available
227 from our website.
228 Known bugs which might show off in NEdit linked with LessTif include:
230   1) Some dialogs which are intended to be modal (prevent other activity
231      while up) are not, and doing other actions while these dialogs are
232      up can cause trouble (.89.9+)
233      
234   2) Switching to continuous wrap mode, sometimes the horizontal scroll
235      remains partially drawn after the change, rather than disappearing
236      completely as it should. (.89.9+)
237   
238   3) Secondary selection operations are not yet supported in text fields.
240   4) Status bar is blank after usage of Incremental Search field
241      (0.93.18+-)
244 Linux Systems
246 Red Hat Linux, as of version 8.0, no longer automatically reads X resources out
247 of the ~/.Xdefaults file.  Instead, it reads a file named ~/.Xresources.  Any
248 customizations stored in ~/.Xdefaults will not be honored, for all X
249 applications.  To fix this, copy the resources into ~/.Xdefaults, or link the
250 files together.
252 The default key bindings for arrow keys in fvwm interfere with some of the
253 arrow key bindings in NEdit, particularly, Ctrl+Arrow and Alt+Arrow.  You
254 may want to re-bind them either in NEdit (see Customizing -> Key Binding
255 in the Help menu) or in fvwm in your .fvwmrc file.
257 Some older Linux distributions are missing the /usr/X11R6/lib/X11/XKeysymDB
258 file, which is necessary for running Motif programs.  When XKeysymDB is
259 missing, NEdit will spew screenfulls of messages about translation table syntax
260 errors, and many keys won't work.  You can obtain a copy of the XKeysymDB file
261 from the contrib sub-directory of the NEdit distribution directory.  
264 Mac OS X Systems
266 You will probably need to edit makefiles/Makefile.macosx to point NEdit at
267 the correct version of Motif.  There are comments in the makefile to help you
268 do this correctly.  Note that the developers use the OpenMotif 2.1.30 package
269 available (at the time of writing) at:  http://msg.ucsf.edu:8100/~eric/
272 SGI Systems
274 Beginning with IRIX 6.3, SGI is distributing a customized version of NEdit
275 along with their operating system releases.  Their installation uses an
276 app-defaults file (/usr/lib/X11/app-defaults/NEdit) which overrides the
277 default settings in any new nedit version that you install, and may result in
278 missing accelerator keys or cosmetic appearance glitches.  If you are
279 re-installing NEdit for the entire system, just remove the existing app-
280 defaults file.  If you want to run a newer copy individually, get a copy of
281 the app-defaults file for this version the contrib sub-directory of the
282 distribution directory for this version on ftp.nedit.org (/pub/<version>/
283 contrib/nedit.app-defaults), and install it in your home directory or set
284 the environment variables XAPPLRESDIR or XUSERFILESEARCHPATH to point
285 to a directory and install it there.  In all cases, the file should be
286 named simply 'NEdit'.
288 No additional installation or resource settings are necessary on IRIX systems
289 before 6.3
292 HP-UX Systems
294 If you are using HPVUE and have trouble setting colors, for example part
295 of the menu bar stubornly remains at whatever HPVUE's default is, try setting:
297    nedit*useColorObj: False
299    
300 IBM AIX Systems
302 Due to an optimizer bug in IBM's C compiler, the file, textDisp.c, must be
303 compiled without optimization on some AIX systems.
306 Solaris (SunOS 5.3 and beyond) Systems
308 The nedit_solaris executable may require the environment variable OPENWINHOME
309 to be set to the directory where Open Windows is installed.  If this is not set
310 properly, NEdit will spew screenfulls of messages about translation table
311 syntax errors.
313 Solaris 2.4 -- Add -DDONT_HAVE_GLOB to the CFLAGS line in Makefile.solaris.
315 Solaris 2.5 -- Solaris 2.5 systems were shipped with a bad shared Motif
316 library, in which the file selection dialog (Open, Save, Save As, Include,
317 etc.) shows long path names in the file list, but no horizontal scroll bar,
318 and no way to read the actual file names.  Depending on your system, the
319 patch is one of ID# 103461-07, # 102226-19, or # 103186-21.  It affects all
320 Motif based programs which use the library.  If you can't patch your system,
321 you might want to just try the nedit_sunos executable (from ftp.nedit.org
322 /pub/<version>), which is statically linked with a good Motif.  You can also
323 set the X resource: nedit.stdOpenDialog to True, which at least gives you a
324 text field where you can enter file names by hand.
326 Solaris 2.6 -- If you're experiencing performance problems (windows come up
327 slowly), the patch for Sun's shared Motif library is ID# 105284-04.  Installing
328 the patch alone will improve nedit's performance dramatically.  The patch also
329 enables a resource, *XmMenuReduceGrabs. Setting this to True will eliminate the
330 delay completely.
332 SunOS 4.x Systems
334 On some SunOS systems, NEdit will also complain about translation table syntax
335 errors.  This happens when Motif can't access the keysym database, usually
336 located in the file /usr/lib/X11/XKeysymDB.  If this file exists on your
337 system, but NEdit fails to locate it properly, you can set the environment
338 variable XKEYSYMDB to point to the file.  If you can't find the file, or if
339 some of the errors persist despite setting XKEYSYMDB, there is a XKeysymDB
340 which you can use to update or replace your /usr/lib/X11/XKeysymDB file
341 available in the contrib sub-directory of the NEdit distribution directory.
342 If you don't want to change your existing XKeysymDB file, make a local copy
343 and set XKEYSYMDB to point to it.
345 If you find that some of the labeled keys on your keyboard are not properly
346 bound to the corresponding action in NEdit, try the following:
348   1) Get a copy of motifbind.sun (for Sun standard keyboards), or
349      motifbind.sun_at (for Sun PC style keyboards) from the NEdit contrib
350      directory on ftp.nedit.org:/pub/<version>/contrib.
351   2) Copy it to a file called .motifbind in your home directory.
352   3) Shutdown and restart your X server.
355 COMPATIBILITY WITH PREVIOUS VERSIONS
357 Existing .nedit Files
359 As of version 5.1, NEdit employs a built-in upgrade mechanism which will
360 automatically detects .nedit files of older versions. In general, NEdit
361 will try to convert and insert entries to match the latest version.
362 However, in certain cases where the user has customized the default entries,
363 NEdit will leave them untouched (except for possible syntactic conversions).
364 As a result, the latest syntax highlighting patterns for certain languages may
365 not get activated, for instance, if the user has customized the entries. The
366 latest default patterns can always be activated through the
367 Preferences->Syntax Highlighting->Recognition Patterns menu, though.
369 Next, some version specific upgrading issues are listed. Note that 
370 non-incremental upgrading (eg., from 5.0 to 5.2) is supported too.
372 * Upgrading from 5.3 to 5.4
374   - Resource syntax
375   
376     Basic colors, like the text foreground and background, are now true
377     preferences.  A new dialog (Preferences > Default Settings > Colors) is
378     provided to change them, previously only changeable from X resources. 
379     Upon starting, NEdit will migrate any custom colors you have set from
380     the old X resources.  Most users will not need to do anything.
381     
382     However, if you used X resources to dynamically change the colors on
383     different invocations, you will need to use the new application-level
384     resources instead.  See the .nedit file for details.
385       
386     In 5.3, color resources needed to be qualified by "nedit*" in order to
387     prevent problems when the deepest color visual was not the default. 
388     This is no longer necessary, and the qualification may be removed.
389     
390   - New location of configuration files
391   
392     The default location and name of NEdit's resource files has been changed.
393     The most important change is the fact that they can now be stored in a
394     custom directory, defined by the NEDIT_HOME environment variable. If the
395     variable is not set, the directory defaults to ~/.nedit.
396     The files have been renamed as follows:
397     
398        ~/.nedit        -> $NEDIT_HOME/nedit.rc
399        ~/.neditmacro   -> $NEDIT_HOME/autoload.nm
400        ~/.neditdb      -> $NEDIT_HOME/nedit.history
401        
402     For backward compatibility reasons, NEdit continues to use the old 
403     convention when these files are already present. No attempt is made
404     to force the user to adopt the new convention. 
406     Users that would like to migrate to the new setup can do so manually 
407     by moving and renaming the files.
408     
409   - Changed regular expression word boundary semantics and its effect
410     on the syntax highlighting patterns.
411   
412     During the 5.4 development cycle, it was noted that the implementation 
413     of NEdit's regular expression word boundary matching was rather
414     unconventional. More in particular, the '<', '>', and '\B' patterns
415     interpreted the boundary between any two characters of which at least
416     one was not a word character as a word boundary. A striking effect of this
417     was that the boundary between two spaces was considered to be a word
418     boundary, which is obviously rather unintuitive. This has been corrected 
419     in 5.4: the boundary between two characters is a word boundary, only if
420     exactly one of them is a word character.
422     Several of the built-in syntax highlighting patterns (implicitly) relied 
423     on the old word boundary interpretation and they have been corrected too.
424     
425     However, if the user has customized some of these buggy built-in
426     highlighting patterns, the automatic upgrading routines will NOT upgrade
427     them in order not to loose any customizations. It is left up to the user
428     to correct his/her customized patterns manually (using the corrected 
429     built-in patterns as a guideline). 
431     The following is a list of all language modes and patterns that have been
432     corrected:
433     
434       Ada:         Based Numeric Literals
435       Awk:         Numeric constant
436       C++:         numeric constant
437       C:           numeric constant
438       CSS:         property, selector pseudo class
439       Java:        decimal const, case numeric const
440       JavaScript:  Numeric
441       Lex:         numeric constant, markers
442       Matlab:      Numeric const
443       NEdit Macro: Built-in Vars, Numeric Const
444       Pascal:      TP Numeric Values:
445       Perl:        dq string, sq string, bq string, subroutine call, 
446                    numerics, re match
447       PostScript:  Number, Operator1
448       Python:      Number
449       SQL:         data types, keywords2
450       Sh Ksh Bash: keywords, built ins 
451       Tcl:         Keywords
452       VHDL:        Numeric Literals
453       Verilog:     Reserved WordsA, Numeric Literals, Delay Word, 
454                    Pins Declaration
455       XML:         element declaration keyword
456       Yacc:        numeric constant, percent keyword, markers
458     So, if the user has customized the highlighting definitions for any of 
459     these language modes (not restricted to the listed patterns), (s)he is 
460     strongly advised to restore the default patterns in the syntax 
461     highlighting dialog and to re-apply his/her customizations.
462     
463     Moreover, it is advised to check any custom language modes for potential
464     boundary matching problems as described above.
466 * Upgrading from 5.2 to 5.3
468   There are no major changes in the format of the .nedit file for version
469   5.2. Users that have customized the X Resources syntax highlighting 
470   pattern may consider restoring the default patterns, as they resolve
471   a performance issue when editing the .nedit file itself, for instance.
472   
473 * Upgrading from 5.1 to 5.2
475   There are no major changes in the format of the .nedit file for version
476   5.2. NEdit will try to insert additional entries for the newly supported
477   language modes and syntax highlighting patterns (CSS, Regex, and XML) and
478   highlight styles (Pointer, Regex, Warning).
480   Moreover, the formerly boolean 'showMatching' option will silently be
481   converted to a tri-state value.
483   Users that have customized some of the syntax highlighting patterns may
484   consider restoring the default patterns, as many of them have been improved
485   considerably.
486   
487 * Upgrading from 5.0 to 5.1
488   
489   NEdit 5.1 makes significant changes to the syntax of regular expressions.
490   Mostly, these are upward compatible, but two changes; introducing the brace
491   operator, and changing the meaning of \0; are not. Brace characters must now
492   be escaped with backslash, and & must be used in place of \0 in
493   substitutions.
495   NEdit 5.1 employs a built-in upgrade mechanism which will automatically
496   detect pre-5.1 .nedit files and fix regular expressions which appear in
497   user-defined highlight patterns. The automatic upgrade mechanism, however,
498   can not fix regular expression problems within user-defined macros. If you
499   have a macro which is failing under NEdit 5.1, you will have to fix it by
500   hand.
501   
502 * Upgrading from pre-5.0
504   If you are upgrading from a pre-5.0 version of NEdit, there are significant
505   changes to the macro language, and you are best off simply editing out the
506   nedit.macroCommands section of your .nedit file, generating a new .nedit
507   file, and then re-introducing your user-written commands into the new file.
508   Most macros written for previous versions will function properly under the
509   new macro language. The most common problems with old macros is lack of a
510   terminating newline on the last line of the macro, and the addition of "<",
511   ">", and now "{" to the regular expression syntax. These characters must now
512   be escaped with \ (backslash). Also, if you have been using a font other
513   than the default for the text portion of your NEdit windows, be sure to
514   check the Preferences -> Default Settings -> Text Font dialog, and select
515   highlighting fonts which match your primary font in size. Matching in height
516   is desirable, but not essential, and sometimes impossible to achive on some
517   systems. When fonts don't match in height, turning on syntax highlighting
518   will cause the window size to change slightly. NEdit can handle unmatched
519   font sizes (width), but leaving them unmatched means sometimes columns and
520   indentation don't line up (as with proportional fonts).
522 FURTHER INFORMATION
524 More information is available in the file nedit.doc in this kit, from NEdit's
525 on-line help system, the man-pages and from the enclosed FAQ file. 
526 There is also a web page for NEdit at: http://nedit.org.  For discussion with
527 other NEdit users, or to receive notification of new releases you can
528 subscribe to one or more of the NEdit mailing lists, announce@nedit.org,
529 discuss@nedit.org or develop@nedit.org.  The NEdit on-line help has information
530 on subscribing under Help -> Mailing Lists.
533 REPORTING BUGS
536 The preferred way to report bugs is to submit an entry on our web-based
537 bug tracker at:
539   http://sourceforge.net/projects/nedit/
541 The NEdit developers subscribe to both discuss@nedit.org and develop@nedit.org,
542 either of which may be used for reporting bugs.  If you're not sure, or you
543 think the report might be of interest to the general NEdit user community,
544 send the report to discuss@nedit.org.  If it's something obvious and boring,
545 like we misspelled "anemometer" in the on-line help, send it to develop.  If
546 you don't want to subscribe to these lists, please add a note to your mail
547 about cc'ing you on responses.