Redet allows the user to construct regular expressions and test them against input
data by executing any of a variety of search programs, editors, and programming languages
that make use of regular expressions. When a suitable regular expression has been constructed
it may be saved to a file. redet stands for
Regular Expression Development and Execution Tool. For each program, a palette showing the
available regular expression syntax is provided. Selections from the palette may be copied
to the regular expression window with a mouse click. Users may add their own definitions
to the palette via their initialization file. Redet also keeps a list
of the regular expressions executed, from which entries may be copied back into the
regular expression under construction. The history list is saved to a file and restored
on startup, so it persists across sessions. So long as the underlying program
supports Unicode, redet allows UTF-8 Unicode in both test data and regular expressions.
Redet is but one of a number of tools that provide assistance in
using regular expressions with different capabilities and purposes.
Which one should you choose?
Here are some of Redet's distinctive properties:
Redet supports many programs. Most other regexp tools
are aimed at a single language or style of regular expression.
Redet determines the properties of the programs that actually execute the
regular expressions empirically. This guarantees that the version of the
program you are using will actually behave as described. It also makes it
likely that if new features are added to a program's regular expression
repertoire, they will be detected and shown on the palette without any
modification to the program.
Redet is explicitly designed for use in a variety of languages and writing systems.
It provides the ability to change locale without exiting and reports whether Unicode
support is available for each combination of program and locale.
It provides special support for Unicode, such as lists of Unicode ranges and character properties.
Redet itself is fully internationalized. By adding a suitable translation catalogue, buttons,
labels, and messages may all be provided in any language.
Most regular expression tools are useful for constructing and understanding
regular expressions but are not designed for use as search environments.
Redet provides a number of facilities that make it a good search environment,
including a relatively large, re-sizable text window,
the ability to enter both regular expressions and data in various ways and to
save them to files, editable, persistent history, and journalling.
Redet handles both matching and substitution. Most programs deal only with matching.
Redet allows the user to define named character classes and to intersect them.
Even I don't think that Redet is the best tool for all purposes. For one thing, it assumes that
the user knows something about regular expressions or is willing to spend some
time learning. The novice who doesn't want to learn more or doesn't have time to should
try txt2regex which
walks the user through the construction of the
regular expression and generates output for 20 different programs and
languages. It is one of the few tools that isn't
specialized for a particular language or program.
Some programs provide details about the matching process.
regex-coach, for example,
can single-step through the match and show the parse tree, so it is useful
if you want to understand the matching process in detail. It uses PERL-style
regular expressions. Regexpviewer
will show you which portions of the text were matched by which group in the
regular expression. It uses Tcl regular expressions.
Kiki
and Kodos
are similar, rather more elaborate, tools for Python. Programs like Redet that support
many different regular expression matchers cannot provide this kind of detail because
they don't execute the regular expressions themselves.
Some programs provide insight into the relationship between regular
expressions and finite state automata and into the implementation of
regular expression engines. re_graph
draws the finite state automaton corresponding to a given regular
expression and annotates the diagram in such a way as to show
the correspondance between parts of the regular expression
and parts of the automaton. qfsm is a graphical
tool for designing finite state automata directly.
A more extensive list of regular expression and pattern matching software
can be found here.
Due to the wide availability of Tcl/Tk, there is a good chance of getting redet
to work on most platforms. Use of facilities known to be operating system-specific
has been avoided.
It is developed and tested most extensively under GNU/Linux.
Platforms on which Redet is known to run are:
There are two implementations of Tk for Mac OS X: Tk-X11 and Tk-Aqua.
Redet runs properly with Tk-X11 (for which, naturally, you must
have X11 installed). It now also adapts itelf to Tk-Aqua, the native
Mac OS X implementation of Tk. It is usable with Tk-Aqua but some details
still require work.
If you attempt to install redet on another system, I would appreciate learning
whether you were successful and if problems were encountered, what they were and
how you resolved them, if you did.
The GUI requires both the basic Tcl/Tk distribution and the iwidgets library.
If you already have Tcl/Tk and just need to add iwidgets, you can obtain the
package from the Sourceforge project
site.
On the download page you will find source and binary packages
for both [incr Tcl/Tk], which is the basic part of this package, and [incr widgets],
which is the part that contains the widgets. You will need to install both.
(iwidgets is an alternative name for [incr widgets].)
The easiest way to obtain the Tcl/Tk environment you need is to install the
ActiveTcl
distribution from ActiveState.
This distribution provides the Tcl language, the Tk graphics library, and a bunch
of extensions, including [incr tcl] and [incr widgets].
Don't be concerned by the fact that ActiveState is a commercial outfit.
The Tcl/Tk distribution that they provide is free as in both beer and speech.
They make their money selling services and programming tools. The ActiveTcl
distribution is currently available for: GNU/Linux, HP-UX, AIX, Solaris, Mac OS X,
and MS Windows.
Under GNU/Linux Rebol hangs if Redet is run in the background.
If your shell is tcsh, putting Redet back into the foreground will allow Rebol to continue.
If you are using bash, putting Redet back into either the background or the foreground
will allow Rebol to continue. I haven't the faintest idea why this happens. If you're
a Rebol expert and know why, please let me know.
On Unix systems combining diacritics are not rendered properly: the diacritic appears following
the base character rather than combined with it. This is due to inadequacies in the Tk
rendering code and is expected to be fixed eventually. The situation seems to be
improved, though not quite perfect, with Tcl/Tk 8.4.11.
Tcl is now executed in such a way that hyphens in
regular expressions need not be quoted by the user in order to work properly.
The Tcl -nocase and -expanded options are now supported. They can be set via
a popup control panel or in the initialization file.
The processing of command line flags has been changed so that GNU-style
long options (e.g. --version instead of -v) are recognized.
A command line option that causes redet to start up in substitution mode has been
added.
The default program has been changed from egrep to Tcl.
Since Tcl is certain to be available if the program can be run at all, this has the
virtue of ensuring that it is usable at the outset. Furthermore, since Tcl
runs the test suite very quickly, it reduces startup time. Tcl's regular
expression notation is similar to that of egrep but more extensive, so
you may not notice any difference.
If you want to restore egrep as the default program, you can put the line
"Program egrep" into your .redetrc file, call redet using the -p option, i.e.:
"redet.tcl -p egrep" (possibly via a shell script or alias)
or edit the program itself, commenting out or deleting the line:
"set DefaultProgram tcl";
and uncommenting the line
"#set DefaultProgram egrep" (by removing the crosshatch character).
The agrep control panel has been improved.
A bug in which the attempt to obtain version information from nawk triggered
an error has been fixed.
Cosmetic improvements have been made to the program-specific control panels.
Validation of codepoints in the popup for entering characters by codepoint has been improved. The message window is now cleared at the beginning of each attempt to insert a character. The popup now has a title.
A number of screenshots in the manual have been updated and others have been added.
8.1
Fixed a bug that in certain cases printed incorrect match counts.
Only the tail of file names in the current directory is now used in messages.
Added tests and palette entries for \b for backspace and for the (?b), (?e), and (?q)
flags as used in Tcl.
The Programs command on the Help menu now provides descriptions of the programs
in addition to links to their web sites.
A bug in the toggling of labels in the character entry submenu of the Tools menu was fixed..
A bug in the relabelling of the Help menu after a change in locale was fixed.
A bug in the execution of awk was fixed.
Support for old-style initialization and color files has been removed.
It is now possible to toggle feature testing on and off while Redet is running.
Version information about Frink is now supplied since Frink has been modified to
provide it.
7.10
It is now possible to read a feature list from a file rather than executing
empirical tests, either by means of the -F command line option or from the
Feature Testing submenu of the Configure menu. This is generally to be
avoided but may be desirable in the case of programs that take a long time to
complete the test suite.
Support was added for Frink.
(Note that Frink takes a VERY long time to complete the test suite.)
Specification on the command line of a program not supported by Redet is now
caught and handled gracefully.
The default colors of several types of popup were made less garish.
7.9
User-defined palette entries have been cleaned up and improved. User-defined entries are
now graphically separated from Redet-generated entries. User-defined entries now have
explanatory pop-ups just like Redet-generated entries. (Note that initialization file
definitions of palette entries must be updated to add the explanatory text, which is
an obligatory argument.) The reference manual sections on initialization files and the
palette have been updated.
The date and time of the last program modification are now added to the version
number in the About and Bug Reports popups.
The formatting of the Bug Reports popup has been improved and information added about the
daughter program..
The About, Bug Reports, and Description popups are now removed by a second
click on their Help menu button.
A "Macintosh Notes" entry was added to the Help menu. It appears if Redet is
run on a Macintosh and explains possible differences in the interface.
Calls to the trace command have been updated to use the new syntax
in place of the original, now deprecated, syntax.
7.8
Fixed a serious bug in the history system that somehow snuck in. It looks like file
corruption: 1.5 lines disappeared.
Fixed bug by which the cache result popup did not show any results
until a regular expression was executed after it had been popped up.
Here again, a single line had somehow disappeared from the end of PopupCachedEntries.
Added the ability to set the jgrep case insensitive parameter from the init file.
File descriptors used in obtaining version information for certain programs previously
left open are now closed.
The command WritePalettetoFile was added to the Help menu.
Match counts in several places now have commas inserted.
7.7
Adds workaround for critical bug in Tcl 8.4 under MS Windows. (This bug is fixed in Tcl 8.5.)
Fixes bugs arising under Mac OS X.
Cosmetic improvements to "this program" popups and program-specific control panels.
7.6
Support for Glark was added.
Support for Jgrep was added.
Tests and palette entries for POSIX multicharacter collating elements and collating sequence names were added.
A test and palette entry were added for POSIX collation classes. The test has not been
properly tested since I have yet to find a regexp engine that supports collation classes.
The "This Program" popup now reports version information if it is available.
The command "Show Command Line" on the Tools menu was added.
The list of Unicode character properties has been improved.
A bug in the relabelling of the Configure menu after a change in locale has been fixed.
The reference manual HTML has been cleaned up.
7.5
The limit on the number of named character classes that may be intersected
has been removed.
The user class palette now scrolls by a large increment if the right mouse
button is pressed.
Hitherto, the entries on the Character Entry submenu of the Tools menu
for custom character entry charts were lost when the locale was changed.
They now persist across locale changes.
A bug in the command line flag for reading class definitions from a file was fixed.
The default background color for the user class palette is nicer.
The default background color for matches using the search tools was changed to
white since it makes the matched text more clearly visible.
7.4
Fixed bugs in search popups due to their referencing non-existant color specifications.
Added the missing subroutine BindInsertionTarget, without which it is
impossible to use the character entry tools to enter characters into the
font control panel example boxes.
Made activebackground and activeforeground colors of menubar and menus configurable and
set nicer defaults for them.
Added a binding on B3 to the palette scrollbar that scrolls by 25%.
Added help commands that list the built-in tcl commands available to config files.
Added help command that lists valid color names.
Changed the default background color for various popups to a nicer color.
7.3
A bug was fixed that made the widget for inserting characters by their
Unicode codepoint insert them into itself.
A bug was fixed that triggered an error when the widget for
inserting characters by their Unicode codepoint was dismissed.
The missing help popups for LowerCaseLetter and UpperCaseLetter were added.
Custom character insertion widgets can now handle upper- and lower-
case simultaneously. If the character string for a position is
split into two parts separated by a colon, only the first string
is shown on the button. The first string will be inserted on
a left-click; the second string will be inserted on a right-clock.
7.2
Please note that these changes create some incompatibilities with previous versions.
One incompatibility is the change in format of custom character widget specifications.
A second is that some commands now end in P that previously did not. The third is
that the notation used to refer to user-defined named character classes has changed.
A command Save Configuration has been added to the Configure menu.
This command writes out a file which if executed as an init file will set all
configurable properties to their current state.
Errors in the initialization file are now handled more gracefully. In most
cases the error is trapped in such a way that execution of the init file is not
aborted.
All Boolean initialization file commands now end in P.
A number of additional properties can now be set from the initialization file.
In particular, it is now possible to define custom character widgets from the init file,
either by loading a file, as from the menu, or by including the widget definition
directly in the init file. (See the sample init files for examples.) All of the program-specific
parameters may now be set from the init file.
Since the row and column labels of the IPA consonant and vowel charts take up a lot
of space, they may now be removed if desired.
Custom character entry widget specifications now have a different format.
On the first line, the title should now come first, before the number of columns.
Characters are now specified using \u escapes rather than raw hex, e.g. \u00E9
in place of 00E9.
The font selection system has been improved. A nicer font control panel is provided and
the menu font is now separately controllable.
Menu colors are now configurable.
Scrollable windows that may contain many lines now have a binding on mouse button 3 that
scrolls by an extra-large increment.
User-defined character classes now use the delimiters [_ and _] rather than [. and .]
so as to avoid conflict with the notation used in some regular expression engines
for collating elements.
A bug was fixed that caused Tcl incorrectly to fail the test for the ?x flag.
7.1
Errors in init files are now trapped. A stack trace no longer
spews all over the user.
A bug was fixed that triggered an error when the user right-clicked over the
color selection listbox without having selected an entry.
A bug was fixed in which changes in submenu button labels (as when changing locale,
or in cases where the text is toggled) put labels on the wrong buttons
when running under Aqua (as opposed to X11) in Mac OS X.
This was done by adjusting the menu entry numbers used when doing deletions
in LabelMenus depending on whether or not the underlying graphics system
is Aqua. This is necessary because in Aqua there are no tearoffs.
In other systems the tearoff counts as the first menu entry,
so in Aqua we need to lower the numbers by one.
A bug that initialized the value of the "Emit Only Matching Portion"
checkbox in the Grep control panel to the value of the CaseInsensitive flag
instead of the EmitOnlymatchingPortion flag has been fixed.
A bug that had the effect that, when the font control panel was popped up,
the size that was actually used when Save was pressed was not the one shown
in the box but the size of the last font on the font list, has been fixed.
Double logging of execution of the init file has been eliminated..
7.0
The initialization system has been completely revamped.
Many more features can now be configured from the initialization file.
The init file is now read by a slave Tcl interpreter. A new Help menu
entry provides a list of the commands available in the init file.
For backward compatibility, old-style init files and color files (which
are subsumed into the init file in the new system) are still supported.
A command-line flag causes the old system to be used.
The system for font specification has been revamped. It is now possible to
specify different fonts for a variety of different uses. The font control panel
is much nicer.
A bug was fixed that caused problems when multiple command-line options
were specified.
The usage message generated by the -h command-line flag
now indicates that the file containing the input data may be specified on the
command line.
Invocations of a browser by the help system may now work under Mac OS X.
I've made a change that I think may fix this, but I haven't had a chance to
test it yet.
Cosmetic improvements were made to the main window title.
6.14
Redet no longer thinks that the underlying graphics system is Aqua
when running under Microsoft Windows.
If the initial program (the default, specified on the command line or via the init
file) is not available, tcl is now selected. This guarantees that a useful regexp
environment will be available and ensures that various things dependent on there
being a selected program will work properly.
A help menu entry listing the command line options was added.
6.13
Under Mac OS X Redet now detects that the window/graphics system is Tk-Aqua
and adapts itself.
Redet's identification of the operating system has been improved.
6.12
A bug was fixed that prevented the Command Descriptions command on the
Help menu as well as some other manual references in help popups from locating the
necessary file.
6.11
All known bugs involving bash and tcsh have been fixed.
The palettes for these programs are now correct.
6.10
The character entry code has been replaced with a new, cleaner version that fixes
some minor bugs.
Tests and palette entries have been added for sed-style \o155 octal character codes
and \d109 decimal character codes.
Tests and palette entries have been added for literal metacharacter escapes.
Tests and palette entries have been added for quantifiers with various backslash
requirements and existing tests have been improved.
The selfish quantifier tests are now skipped for mawk as well as emacs since it too
hangs on them.
Both match and substitution back references are now tested to see whether
the indices may not exceed 9. If there is such a limit, it is reported in
the help popup for the palette entry.
However, the SubBackRefbsAtLeastTen test hangs Python so it is skipped.
If the user has chosen to create the history file in the current
directory but that directory is not writable, Redet will now attempt
to write into the user's home directory. If Redet is unable to
open a history file in either location, automatic writing of the
history file will be disabled, but the Save command on the
history menu will still work if the user chooses a writable directory
in which to create the file.
If the program is agrep, the "This Program" popup now indicates whether
the program is TRE agrep or Wu-Manber agrep.
The test for groups requiring backslashes on parentheses has been improved.
The event number is now shown on the result cache popup and
is used as part of the proposed filename when cache entries are saved.
Instead of just trying to use the default browser, redet now
works through a list of browsers, trying each in turn until
it finds one that is available.
The feature tests are now rerun automatically on changes in gawk, grep, or sed regexp mode.
The debug flag can now be set from the Configure menu.
The missing text of the explanation popup for range quantifiers (e.g. {2,4}) has
been supplied.
The location of the reference manual on non-MS systems has been changed to /usr/share/Redet.
6.9.1
Fixed two broken links in reference manual table of contents.
6.9
Case-insensitivity is now handled in a much more sophisticated way.
Since the case-insensitive flags have a variety of effects, largely undocumented,
in different languages and programs, Redet now tests for four parameters
on which programs vary and explains the details in the popup associated with the palette entry.
The documentation for individual commands has been moved into
the reference manual. The Command Descriptions entry on the
Help menu now invokes the browser on this section of the
reference manual.
A new command was added, located on the Tools menu, which writes
to a file the the current regular expression and substitution expression,
the command line that would be executed, and the daughter program
that would be executed. This is useful for debugging
and for users who want to use a language or program directly themselves
and would like to see how Redet does it.
It is now possible to abort feature tests.
The Dismiss button on the patience placard is now an abort button.
This is handy if you mistakenly trigger a test that is
going to take a long time or if it hangs.
It is now possible to abort a search/substitution. This can be useful
if the daughter hangs or is taking too long or if you have
made a mistake. The abort command is on the Tools menu and is
also bound to F12.
The commands Save Regexp as Plain Text and Save Subexp as Plain Text
were added and the existing Save Regular Expression command was
renamed Save Expressions In History Format, which describes it more
accurately. The new commands save in a form more suitable for use outside of
the history system.
An option was added for automatically clearing the regular expression and
substitution expressions whenever they are executed.
An entry was added to the Help menu. "This Program" pops up information about
the current program that is not directly reflected in the palette,
such as the extent to which it supports Unicode.
The File menu has been reorganized. It is now shorter, with an additional
level of hierarchy.
The Configure menu has been reorganized. It is now shorter, with an additional
level of hierarchy, and uses checkbuttons for a number of features.
The command to clear the regular expression is now bound to Control-F
to make it easier to use.
The result cache popup is now updated if it is popped up when
a regular expression is executed.
Entries may now be deleted from the result cache.
The idiosyncratic Lua quantifiers are now distinguished from their
relatives, with distinct tests, palette entries, and help popups.
A test and palette entry were added for multiple ranges within a single character
set ( [a-cx-z]).
A test and palette entry were added for in-line unsetting of the case-insensitive flag.
Tests and palette entries were added for \` beginning of string and \' end of string.
Tests and palette entries for were added \y word boundary with and without quoting backslash.
The ability to set program-specific features has been expanded.
The programs now included are:
agrep, egrep, emacs, fgrep, gawk, grep, java, perl, python, sed and tr.
A bug was fixed that caused the complement of punctuation class
incorrectly to fail the feature test in Lua.
A bug was fixed that caused some programs incorrectly to fail the
Unicode test.
A bug was fixed that removed newlines from Python substitution output.
A bug was fixed that interfered with Perl's handling of non-ASCII characters in regular
expressions.
The order in which features appear in the palette has been rationalized.
6.8
Tests and palette entries were added for:
Complemented POSIX-style named character classes, both "inner" and "outer" styles.
The Perl substitution expressions for "entire match", "prefix to match",
"suffix to match", and "last captured subgroup".
TRE agrep inline cost setting
TRE agrep exact match notation. This is really just a special case of the more
general cost-setting mechanism, but this provides compatibility with Wu-Manber agrep.
Word boundary and non-word boundary anchors
The palette now shows the constant and variable portions of the notation in
different colors.
Right clicking on the gloss of a palette entry now pops up further information about it.
Double clicking on the notation side of the palette now deletes from the regular
expression or substitution expression window the last entry copied into the window
from the palette. There is no limit on the number of entries that may be deleted in
this way.
Mode and layout are now linked by default. Side-by-side layout is
automatically used in substitution mode,
vertical layout in match mode. A toggle on the configuration menu allows the user
change this.
The internal locale can now be set via a command-line flag.
The placard that pops up when feature tests are running and informs you of their
progress now reports the estimated total time. The times have been
rearranged, and split times into minutes and seconds.
The CYGWIN environment variable is now set to the null string
to prevent problems that result when the TTY flag is set.
The feature test log is now time-stamped.
The feature test log now gives the regular expression and substitution expression
for each test when a test fails.
A bug was fixed that caused emacs to hang near the end of the feature tests.
(For some reason emacs goes berserk on the tests for possessive quantifiers.)
A bug was fixed that under certain circumstances resulted in an
incorrect count of the number of changes produced by substitution.
A bug was fixed that caused the tests for \s "whitespace" and \S "non-whitespace"
to fail inappropriately.
A bug was fixed that caused end-of-string tests to fail in Python.
A bug was fixed in the search routine.
Udi Manber's name is now spelled correctly.
A section on built-in character classes was added to the manual.
6.7.1
A bug in the determination of which version of agrep is in use was fixed.
6.7
It is now possible to set the agrep command-line flags that control
approximate matching. Both Wu-Manber and TRE agrep are now supported.
The combination of the addition of support for TRE agrep and the ability
to set the approximate matching flags means that approximate matching
with full regular expressions is now available.
A test and palette entry were added for Wu-Manber exact match notation.
6.6
The Configure menu has been reorganized.
The Python programs have been rewritten to reduce memory
usage when processing large amounts of input.
Detection of GNU diff has been improved.
A bug in the toggling of the ordering of Unicode ranges in the Unicode
Ranges popup has been fixed.
A bug in the toggling of Perl Unicode dependence on locale has been fixed.
6.5
A bug that resulted in errors on locale change was fixed.
The locale selection popup was improved.
6.4
Tests and palette entries are now provided for Java-style possessive quantifiers.
Coordination of scrolling in the two sides of the palette has been improved.
Guile substitution is now supported.
Guile regular expression syntax errors are now trapped.
6.3
The existing character entry widgets were improved.
Two character entry widgets were added: one for entering
Unicode characters by codepoint, the other for creating custom
character entry widgets by reading definitions from files.
The existing search widgets were improved.
Widgets for moving to particular lines and characters were added.
A UNIX man page was added.
6.2
Widgets for entering diacritics and accented letters were added.
The consonant and vowel entry widgets have been improved with the
addition of a number of alternative characters, better balloon help,
and the addition of deletion buttons.
A distinction between bilateral embedding, left embedding, and right embedding is now
made when program features are tested and reflected in the marking of the program name in the Execute-X menu button.
The behaviour of several popup windows was improved. Now, a second invocation does not
create a new copy of the window but just raises it.
Icon is now correctly flagged as not providing for substitution.
A bug introduced in version 6.1 has been fixed. In an excess of irony,
it prevented the bug report popup from being displayed.
6.1
The history list, palette, and user-defined named character class palette now have
scrollbars by default. The presence of the scrollbars is controlled by the same toggle
as the one that controls the scrollbars on the data windows.
Popups are now provided for searching the test data and results.
Widgets for entering International Phonetic Alphabet characters were added.
The last five results are now stored. A popup allows selected results to be saved to
files or compared with each other.
The color configuration file .redetcolors is now written to the user's home
directory. So that users may create local color configurations if they wish to,
Redet looks for a color file to read first in the current directory, then
in the home directory.
The journal file .redetlog is now written to the user's home directory.
Each session's entry now specifies the directory from which Redet was started.
Redet now looks for the history file first in the current directory, then in the
user's home directory. The default is to write history to a file in the
current directory, as before. However, the user may now choose to keep a single
history file in his or her home directory by including the line
%historycentral
in his or her .redetrc file.
Support was added for two scripting languages built on top of Java.
Regular expression matching and substitution are supported for both Judoscript
and Sleep. Sleep wildcard matching is also supported. (Note that Sleep wildcard matching
does not work exactly as described in the documentation. This is a bug in Sleep, not Redet.)
These are supported for the convenience of people writing in them, but users should
note that they are quite slow in comparison to the other programs supported. Individual
matches are not outrageously slow, but it takes several minutes to run the feature
test suite. Since their regular expression facilities are identical to those of Java,
under most circumstances it is advisable simply to use Java.
Execution of regular expressions is now disabled during feature testing.
When saving user-defined named character classes, Redet now checks to see whether
any classes are defined and if not aborts rather than creating an empty file..
A bug was fixed that caused incorrect labelling of the history list display
toggle on the history menu if the user destroyed the window.
A bug was fixed that made toggling display of the program name in the
history list effective only if the history list was popped up.
A bug was fixed that caused Euphoria to be erroneously treated as capable of
substitutions.
6.0
Support for substitution has been added for those programs that support
substitution.
A variety of feature tests and palette entries have been added, including
those for substitution backreferences, reluctant quantifiers and the
unusual agrep metacharacters.
A number of options have been added for window arrangements.
First, the data windows may be arranged one above the other, as before,
or side-by-side. Second, the regular expression window and the substitution
expression window may also be arranged one above the other or side-by-side.
Third, the data windows may be provided with scrollbars or not. They
are not necessary if only small amounts of data are in use or if the user
has a wheel mouse, in which case removing them reduces clutter.
Controls for these have been added to the Configure menu.
Although it does not, strictly speaking, use regular expressions, due to user request
the tr program is now supported.
Support for user-defined named character classes was added for programs
requiring additional escaping of the pipe symbol or parentheses (such as emacs).
It is now possible to select the program by means of a command-line option.
It is now possible to enter literal tabs into the regular expression and
substitution expression windows. (Previously this was impossible because
the windowing system sets things up so that tabs move the input focus
to the next window in a sequence.)
For windows that have scrollbars, the color of the scrollbar is now set to the
background color of the window both by default and when the window's colors are
changed.
It is now possible to browse the reference manual using browsers
that require a URL as command line argument and do not accept a plain filename.
The default browser remains dillo, but you may specify another browser
in your .redetrc file by including a line of the form:
%browser mozilla
The reference manual has been broken up so that each section is in a separate file.
This eliminates the need to load all of the images at once.
The palette widget has been replaced with a new design. Among its virtues is that
changes in font do not destroy the alignment.
The well-formedness of input lines is now checked when
color specifications are read from a file.
Color configuration now works properly for the history list.
The color of the title area of the patience placard is now configurable.
If a program provides both character sets and alternation, we now use
character sets to implement user-defined named character sets since
they are usually more efficient.
Help balloons are now positioned more intelligently when the window with which
they are associated gets close to the edges of the monitor.
A command for toggling display of the comparison data window was added to the
File menu.
The Help menu now includes a Programs entry, which provides information about
the supported programs.
Bugs that in some cases led to incorrect relabelling of menu buttons
have been fixed.
A bug was fixed whereby a literal tab in a regular expression or
substitution expression triggered an incorrect parse of history list
entries when read back into Redet. A value guaranteed not to be a valid
Unicode codepoint is now used as the field separator. This allows all
valid Unicode characters to be used in regular expressions and
substitution expressions without interference with the history system.
A bug that allowed the user's .redetcolor file to be corrupted
if the user cancelled a color change incorrectly has been fixed.
The code for reading the initialization file and such on startup has been
cleaned up.
5.3.1
A bug in which balloon help was sometimes invoked on windows that no longer
exist was fixed.
5.3
Actions that are triggered by a right button press on other systems
are triggered by the simultaneous combination of Control and a mouse button press
on the Macintosh.
The popup window brought up by the "Key Bindings" command on the Help
menu now lists the key bindings in alphabetical order of the glosses of the commands
rather than in the less useful order of the key bindings.
Tests were added for capturing and disjunction groups that need various numbers of
backslashes for quoting.
A warning is now issued whenever the program enters a state in which
the user has defined named character classes but the currently selected
program does not support them.
If the user gives the command line option that reads named character class definitions
from a file, the name of the file is recorded but the definitions are not actually
read until near the end of the initialization process, after the program has been
selected and its features are known.
If no color file is found in the current directory, Redet now attempts to
read it from the user's home directory. This is now done immediately after
reading the init file, a bit earlier in the startup process, so that
the user will see his or her chosen colors right away.
5.2.3
Makes the names of the various initialization and log files appropriate for
Microsoft Windows if running under MS Windows.
5.2.2
A bug that prevented the "Save Regexp to File" command from working was fixed.
5.2.1
Bugs that prevented saving of output were fixed.
5.2
Intersections of user-defined named character classes are now supported.
Instantiation of user-defined named character classes can now be enabled
or disabled from the Class menu.
When colors are changed, the new color configuration is written
to the file ".redetcolors". This file is now read on startup,
preserving the user's color choices.
Child browsers are now killed when Redet exits. (This may not work
under Microsoft Windows.)
Redet now behaves more gracefully if it is unable to read
the file whose name is specified as the argument to the -c
command line option.
The command ToggleUserPalette, previously accessible only via a keyboard shortcut,
was added to the Class menu.
A more efficient Pike program is now used. It is almost 3 times faster
than the earlier program. However, the time taken to execute the test
suite is unchanged. It is evidently dominated by compilation time.
A bug in the saving of user-defined character classes to a file was fixed.
A bug that caused problems with relabelling of menus after locale
changes has been fixed. (This bug was introduced by the creation of the command description
component of the help sytsem and so has not existed very long.)
Regular expressions are now written to the journal file.
The color setting code has been cleaned up.
5.1.1
A bug that resulted in failure to locate the reference manual
when a browser is invoked from the Help menu has been fixed.
5.1
The notation used for user-defined named character classes has been changed
from [:name:] to [.name.] so as to avoid conflict with the built-in character
classes used by some programs.
5.0
It is now possible for users to define their own named character classes.
All messages are now copied to a journal file called ".redetlog" in the
current working directory.
Descriptions of all available commands are now available via the Help menu.
A command was added to the Help menu that brings up the reference manual
in a browser. (Thanks to Jan Wells for this suggestion.) Dillo
was chosen as the browser because it is very lightweight, starts
quickly, is free (in both senses), and runs on all major platforms.
The Save Results command was moved from the menubar to the File
menu since it isn't used constantly and the menubar was getting crowded.
The commands on the History menu were reordered so that one is not likely
to inadvertently clear the history list when attempting to pop it up.
A test and palette entry were added for the conditional match construction.
Emacs regular expression matching is now case-sensitive.
The placard popped up when running feature tests has been placed under
window manager control so that the user can get it out of the way
during long tests.
The directory used for temporary files is now chosen according to the
settings of the environment variables TMP and TEMP.
Redet now exits with appropriate exit statuses.
Eliminated COMSPEC bit from tk_exec. This causes problems on the more
recent versions of MS Windows - it is only needed on versions prior to
MS Windows 2000, which there is little point in trying to support.
The locale selection code was cleaned up a bit.
TclGlob is now run entirely internally. This eliminates the need to restrict
the number of test input lines and speeds up execution considerably.
A bug that prevented Tcl and TclGlob from working properly was fixed..
The remaining portion of the bug in which clicking on some history
list entries triggered an error has been fixed.
4.18.2
The various windows now export selections, allowing the selection to be
copied from them.
Fixed a bug in which errors arose when certain history entries were clicked on.
Fixed a bug in which an error message arose on palette construction if the
test ncgroupdb had been passed.
Fixed a bug in which ConstructPalette produced an error when feature-checking
was disabled.
Fixed a bug in which SelectProgram produced an error when feature-checking
was disabled.
Programs that consider any line containing a match to match are marked as
before by surrounding the name with stars in the label of the Execute button,
e.g. Execute-*grep*.
Programs that require an exact match are now marked as well, with a preceding
circumflex and following dollar sign, e.g. Execute-^Java$.
4.18.1
Never mind.
4.18
A number of commands previously accessible only via menus can
now be executed from the keyboard. For a list, select
Key Bindings on the Help menu or type Ctrl-k.
Execution of a regular expression is now triggered either by a menu button
as before, by a carriage return in the regular expression window, or by
Ctrl-e. This avoids the need to pick up the mouse if the user is typing
in the regular expression window.
The commands Load Comparison Data from Clipboard and
Load Test Data from Clipboard have been added to the File menu.
The commands that load data into the test input and comparison windows
now insert the new material at the insertion point; they no longer overwrite
the previous contents of the window.
This makes their behaviour consistent with the commands that insert material
into the regular expression window, facilitates inserting
test material from multiple sources, and reduces the
risk of inadvertently overwriting test material that
the user has edited or created manually. If the user does wish to
replace the current contents of the test or comparison windows,
he or she can just clear it before inserting new material.
A number of help items have been added:
a list of keybindings;
information about submitting bug reports;
a list of Unicode ranges;
a list of Unicode general character properties;
Feature tests were added for assertions, forward and backward, positive and negative.
The execution of Java is now significantly (approximately 6 times) faster, due mostly
to a reduction in compilation overhead. This reduces the time for execution of the
feature test suite to a tolerable point.
The results of feature tests are now stored, so that once the features of
a particular combination of program and locale have been obtained,
they are not tested again within the same session. This makes switching back
and forth between different programs and/or different locales virtually
instantaneous once each combination has been used.
A new command on the Configure menu, Test Features, allows the
user to force a feature test. This may be necessary if, for example,
a program has changed during the course of the session, or if the user
wishes to see feature debugging output.
Another new command on the Configure menu, Write Features to File,
writes the results of feature testing for the current program and locale
to a file.
Gawk is now run with the --re-interval flag in order to enable
expressions of the type {m,n}.
There is an additional command line flag, -n, which disables feature testing.
This is useful primarily for debugging, but may also be useful to users
who do not need a palette and want to start up quickly.
The focus is now initially set to the regular expression window.
When windows that start off locked (input, result, comparison) are made editable,
the focus is now moved to that window in the expectation that the user
intends to edit it.
A bug that prevented SaveRegexp from working has been fixed.
A bug that caused the items in the Program menu to be mislabled after
a change in locale has been fixed.
A bug that caused the program name to appear farther to the right
in history entries read from a file than in history entries made
in the current session has been fixed.
4.17.1
A bug was fixed in which, if the user dismissed the patience placard, the
attempt to update the progress info of the now non-existant placard
caused an error and terminated the feature testing run. Redet
now checks whether the placard window exists before attempting to update it.
4.17
Java is now supported. Do not be discouraged by the slowness of feature
testing when Java is selected. Feature testing takes a long time because of
the relatively large overhead of each regular expression execution
and the large number of tests (currently over 140), but individual searches
are fast enough as not to be burdensome.
Redet now runs properly under SunOs.
Redet now checks whether GNU diff is available and adjusts
the options with which it calls diff accordingly. This eliminates
a problem that arose under SunOs where all calls to diff failed
because the Sun version does not accept some GNU options.
Palette feature testing now compares the results and intended outcome
internally rather than running diff. This speeds up feature testing
considerably and prevents variation among platforms in the availability
and options for diff from having any impact on feature testing.
Child programs are now run in a way that allows updates of
the display while they are running.
The notice that requests patience when feature tests are being run
is positioned less centrally and can now be dismissed.
It now contains a progress bar showing the percentage of feature
tests executed thus far, the time elapsed, and the estimated time
remaining.
The command Load Test Data from Clipboard has been added to the File menu.
The situation in which the clipboard is empty when we attempt to read from
it is now handled.
The commands EditOutput and LockOutput were added to the File menu.
EditOutput unlocks the output window, allowing the user to edit it.
This is useful when the user wishes to save the results of a search
but wants to remove some parts or annotate them before saving.
LockOutput relocks the output window, preventing inadvertent modifications.
Whether or not redet was successful in opening the temporary
files used for executing many of the programs is now checked
and an error message printed in case of failure.
The formatting and informativeness of feature test debugging output
have been improved.
Feature debugging output now goes to a file "RedetFeatureTest.log" rather
than to stdout.
4.16.1
This version fixes a bug that generated a superfluous
hyphen at the beginning of saved history entries and
entries in .redethist.
4.16
A number of improvements have been made to the history system.
The name of the program in use when a regular expression was executed
is now recorded along with the regular expression. The program is
lgcoptionally displayed in the history list. By default it is not displayed.
The program is now written out along with the regular expression when the
history list is saved to a file or when the current regular expression
is saved to a file. Two other commands have been added. Save History List writes the
history list out to a file. Prune History List clears the history list of all entries
other than those that the user has marked.
The history menu button now brings up a submenu containing all five commands
related to the history system.
The procedure for counting matches has been made much faster, eliminating
most of the time spent when the regular expression matched many (thousands of) input items.
The excessive length of the Program menu has been reduced by making it
two columns.
The regular expression region is now scrollable, making it possible to enter and view
very long regular expressions.
Previously, if the history list was cleared while displayed, the display was left up.
It is now taken down.
The message popped up when running feature tests has been changed to name the
program being tested and the locale.
4.15
Added the ability to mark selected entries in the history list
so that, for example, a successful regular expression
can be distinguished from its neighbors and recalled later.
Left-clicking on a history list entry toggles the mark.
A command "Clear History" was added to the Configure menu.
Added commands "Save Test Data To File" and "Save Comparison
Data to File" to File menu. These are useful when one
or the other has been created or modified by the user
in the course of the session.
Added a toggle on the Configure menu allowing Python users
to treat the regexp as either a raw or cooked string.
Python now uses raw strings for regular expressions by
default.
Added a toggle on the Configure menu allowing Perl users
to choose whether Unicode should be locale-dependent.
The default is that all Perl i/o is expected to be UTF-8.
Added a toggle on the Configure menu allowing the user to enable
and disable feature test debugging.
Added a toggle on the Configure menu allowing the user to make
focus follow the mouse. (For the time being this cannot be undone.)
The palette window now has a maximum size. If the number of entries is greater,
it becomes scrollable.
On the command line, the various options may now be optionally followed by a filename.
If present, the contents of this file will be loaded as test data.
A bug was fixed in which, when the palette was popped up and the user
switched to a program that has no palette features at all (e.g. fgrep),
the palette was emptied but remained popped up. In this case,
the palette is now taken down.
A bug was fixed that caused a subset of multiple command line options to be ignored.
Added separators to File menu so as to group commands nicely.
Added test for back reference with double backslash.
Added test for (?# ...) comment construction.
Added test for (?i) case insensitive flag.
Added test for (?x) verbose flag.
Added test for tagged groups.
Added test for named Unicode characters, e.g. \N{HEBREW LETTER LAMED}.
4.14.1
Fixed bug that produced a non-fatal error when generating the message
confirming the saving of a regexp to a file.
4.14
Added support for Javascript.
Added (partial) support for Rebol.
A test for the \cX notation for control characters was added.
Code was added to detect that Redet is running under Microsoft Windows
and to set up its temp directory appropriately. This code is untested since I do not
use Microsoft Windows.
4.13
It is now possible to change the locale via a command in the configuration menu.
The locale is now shown in the title bar.
When a program is selected, redet now reports whether it suppports Unicode.
Tests for group and no-capture-group, octal and hexadecimal character codes,
and tab, bell, escape, and carriage return escapes have been added.
The history window is now of fixed size but scrollable.
When a new program is selected, a notice is now popped up explaining
that the palette is being constructed and requesting patience.
The discussion of Unicode capability in the manual has been improved.
Changing colors in the history list now works properly whether or not it is visible.
Redet now detects null regular expressions and refuses to execute them.
4.12
Version 4.12 fixes a bug that causes an error if reading of the
init file .redetrc is enabled (the default) but no init file is found.
4.11
Added support for Icon.
Added the command line flags -d,-H,-h,-i,-t,-v and usage information
on unrecognized option. These provide information, control over the reading of files on
startup, and control over debugging information.
The comments at the beginning of the file have been modified so that on Unix
systems command line arguments will work properly when the program is executed directly,
as a script.
The regular expression history is now appended to a file called .redethist.
If this file exists, it is now read by default on startup and its contents
placed in the history list. Reading of this file may be prevented via the
command line option -H. The entries read from this file are given non-positive
numbers to distinguish them from entries made in the current session.
The history file is read prior to the Regexp file. If entries are read from both,
the contents of the Regexp file will be numbered 0 and the entries from the
history file will be given negative numbers.
Fixed bug in which pressing the History button when the history list was empty
triggered an error.
Fixed bug in reading of palette entries from init file.
4.10
Added support for guile.
Fixed a bug that kept the palette from being generated when the program
was redundantly specified in the init file as the same as the default.
Most of the relevant programs match any line that contains a match to the regular
expression. This is a source of confusion to novices, so if the selected
program is of this type the name of the program in the Execute-X button
is now shown surrounded by asterisks, e.g. Execute-*Egrep*.
4.9
Added support for Pike.
Added support for Euphoria.
The history menu button is now a toggle. This is more convenient and makes its behavior
consistent with that of the palette button.
If a new program is selected while the palette is displayed, the old palette is taken
down and the new one automatically put up. Previously, the old palette was taken
down but the user had to click the palette button to get the new palette up.
The number of matches is now reported in the message region.
Added tests for some Perl character set notation that had been left out.
Added ability to suppress balloon help from init file.
Improved efficiency of feature tests, especially on start-up.