On-the-fly Keystroke Recording: automate simple editing
tasks by recording a series of keystrokes as you edit. Playback a key recording
with a single keypress, or multiply the playback to further automate the task.
All editor commands and insertable text entered within the editor can be
recorded, as you edit. Pause a key recording to perform other work, resume
recording when convenient. Key recordings can be saved and reloaded from
Boxer now uses Perl-Compatible Regular Expressions
(PCRE), which provide an extremely robust implementation of this popular pattern
matching grammar. Very powerful search and replace patterns can be devised.
PCRE are supported in the Find, Replace, Find Text in Disk Files, and Replace
Line Enders dialogs.
- choose which commands appear on the toolbar, and in what order
- use the "new row" element to create a multi-row toolbar
- option to display a user-configurable text label below each button
- option to display the toolbar bar as a floating window
- insert half space, full space, and visible dividers
- option to display button icons in double-size mode
- option to auto-format buttons when floating toolbar is resized
- option to choose the font used for button label text
- tear-off toolbar to engage floating mode
Replace Line Enders: Boxer now supports search and
replace operations that span multiple lines, making it possible to perform
operations that create or delete lines.
Option to highlight the background of the current line,
making it easier to locate the active line. The color used can be set using the
Configure|Colors command. This option can be enabled and disabled on the
Configure|Preferences|Display dialog page.
Dynamic replace strings: designate that a replace
string is to be constructed using a portion of the text that matched the
search pattern. Extremely powerful!
Variable width tab stops: use the View|Tab Display Size
dialog to configure tab settings for the current file, or
Configure|Preferences|Tabs to set the default tab settings for all files. The
new Intelli-Tabs feature can be suggest the optimum tab stops for tab-delimited
data by analyzing content of the current file.
Shaded Tab Zones: ideal for displaying tab-delimited
data files, this new command causes Boxer to use a different background color
for alternating tab zones, so that neighboring data fields can be more easily
distinguished from one another.
Auto Tag Close for HTML and XML: when you type an
opening tag such as <center>, Boxer automatically inserts the closing tag
</center> and places the cursor between the tags. Enable this command,
and designate which file types it should be used for, on the
Configure|Preferences|Editing dialog tab.
Dual Monitor Friendly: Boxer has been made more large
screen and dual-monitor friendly. Dialog boxes which had been placed at the
center of the screen are now placed at the center of the application window.
Dialogs which remember their placement have not been changed. Standard Windows
dialogs will also be displayed at the center of the application window.
The new View|Hex Mode command allows a file to be toggled on-the-fly
between its text mode view, and read-only hex mode view.
Drag and drop an image file, Boxer writes the code: When
an image file (BMP/GIF/JPG) is dragged and dropped onto Boxer, an HTML "IMG
SRC=" directive will be inserted into the text of the current file, using the
image file's name, height and width. A dialog first appears to confirm the text
to be inserted, and to allow the IMG Tag Template to be edited, if desired.
Syntax Highlight As: this command can be used to
designate a syntax highlighting language for the current file. This command is
useful when the current file has no file extension, or when its extension does
not properly identify its content (think .TMP, .BKP, etc.).
A new command line option flag has been added to allow tab settings to be
designated on the command line, or from within a project file. Example:
-T<tab settings> <filename>
Specifies tab settings for the next file, and all other files named on the
command line. If a single value 'n' is present, fixed width tabs of size 'n'
will be used. If a comma-delimited list of values is present, variable width tab
stops will be assigned at the designated columns. Command line tab settings take
precedence over default tab settings, and over tab settings specified in
Extension-specific tab settings can be configured for
files which have syntax highlighting applied to them. Use the Configure|Syntax
Highlighting dialog to change the "Tabs" setting for such files. "tabs=4" would
designate fixed width tabs of size 4. "tabs=10,14,24,38,46" would designate
variable width tabs with stops at the specified columns.
View|Tab Display Size allows an additional character to be designated as
a tab character, for display purposes only. This can be used to enhance the
display of data files that use character-separated fields, such as
comma-separated data files.
Added Regular Expression Hints docking help panels to
all dialogs that allow regular expressions. Peruse regexp tokens and examples;
double click or press Enter to insert into search pattern.
Added the Indent With String command, that allows a
selected range of lines to be indented with a user-specified string.
A file without a file extension can be configured for syntax highlighting
by designating its file extension in the Configure|Syntax Highlighting dialog as
The File Tabs can be sorted using the main menu command
"View|File Tabs|Sort File Tabs," or by using the like-named command on the File
Tabs context menu.
The Next Window and Previous Window commands will use the order of the
File Tabs to determine which window to move to next.
Scroll Left and Scroll Right commands have been added. These commands
provide a means to pan left/right within a file by keyboard, without the need to
use the horizontal scroll bar and a mouse. By default, these commands will be
assigned to Alt+Left and Alt+Right. The amount by which the screen jumps can be
set from the Configure|Preferences|Display panel. The default jump value is 5
The Window List has been enhanced to utilize a multi-column listview that
allows for sorting on any column, in ascending or descending order. Size, File
Type, and Changed fields have been added. The function of the Name field has
been overloaded to allow successive clicks to sort on filepath, filename, and
file extension. The context menu now includes a Copy List function that copies
the filepaths of all open windows to the current clipboard.
Added the Block|Convert Case|Title command which converts the selected
(English language) text to title case (aka "proper case").
The Find Text in Disk Files command has a new option to allow all
currently open files to be searched.
Added the string function strrev() to the macro language. strrev()
reverses the characters in the string variable that is passed to it.
Added the string function strrchr() to the macro language. strrchr()
returns the index of the last occurrence of a given character within a
Added the function xtoi() to the macro language. xtoi converts a string
that describes a hexadecimal value to its equivalent integer value.
Added the function GetGMTDateTime() to the macro language.
The WordLeft() macro command has been extended: it can now take an
optional parameter to control how many times to issue the Word Left command. If
issued at start of file, a -1 will be returned.
The WordRight() macro command has been extended: it can now take an
optional parameter to control how many times to issue the Word Right command.
If issued at end of file, a -1 will be returned.
The FindMate() macro command will return TRUE when a mate is found, FALSE
when a mate is not found.
The following macro functions have been added to assist with processing
New macro commands: LineContainsRE, LineContainsREi, ChangeStringRE, and
ChangeStringREi extend the capability of LineContains and ChangeString to allow
the use of regular expressions.
New macro language function: GetReadOnly() returns the read-only state of
the current file.
A 'goto' statement has been added to the macro language. The 'goto'
statement can be used to branch unconditionally to a label statement anywhere
else within the macro.
A 'continue' statement has been added to the macro language. When issued
within a for, while, or do-while loop, a continue statement has the effect of
jumping to a null (empty) statement at the bottom of the loop.
Three new "Print All" commands for normal, color and monochrome syntax
printing enable all open files to be printed by issuing a single command.
Configure Keyboard dialog enhancements: a 'Force' button was added to
make it easier to remove a conflicting assignment and assign it to another
command in one step. Also: context sensitive hints are used on the
Add/Change/Force/Clear buttons to describe exactly what function will be
The main title bar will hold current filename first, and then the
application name. This allows the filename to be displayed in the task bar and
to update as the active child window is changed.
The Tools|Value-at-Cursor command has been enhanced to allow the dialog
to remain open indefinitely, reporting on character values as the cursor is
moved through the current file. The OEM character representation is now also
The font used for the custom File Open dialog can be set using a new
option on the Configure|Preferences|File I/O dialog tab.
The Duplicate Line and Paste commands will report on the status bar the
number of times they have been issued successively.
The -P<project filename> command line option flag permits a project
file to be opened from the command line without the need to specify the full
path to the Projects directory.
The Null Character Handling dialog (which appears when null characters
are encountered in a file being opened for editing) now has an option to open
the file in hex mode, as well as an option to cancel the file open operation
The Null Character Handling dialog has an option not to ask again during
the current edit session.
Allow the text in the filename edit box in the FTP Open dialog to be
edited, and to override the name of the file selected in the listbox above it.
This may prove more convenient for some users, and also allows files to be named
which do not appear in the listing due to access/permission issues, or due to a
file listing that uses an unsupported format.
New command: Delete Lines That Begin With, on the Edit|Delete
New command: Delete Lines That End With, on the Edit|Delete sub-menu.
Delete Lines that Contain: this new command can be used to delete all
lines that contain a user-defined text string. The command is located on the
Add the "Bring User Lists to Top" command to the Tools|User Lists
sub-menu. This command is useful for bringing all open User Lists to the
foreground when the stay-on-top option is not already in use.
The Find Text in Disk Files dialog has an option to enable or disable the
display of line numbers on matched lines.
Add an option to the Page Setup dialog to allow files to be printed with
visible spaces, tabs and newlines on the printed page.
Increase the number of files in the Recent Files List from 16 to 24, and
move the recent files list to a submenu off the File menu. (Use the option on
the Configure|Preferences|File I/O dialog page to configure your personal
setting.) Also: add a command to clear the Recent Files List.
Increase the number of files in the recent projects list from 8 to 16,
and move the list to a submenu off the Projects menu. Also: add a command to
clear the Recent Project Files List.
The HTML Color Hint feature has been enhanced to recognize over 140 "X11"
color names. Now, when you hover the mouse over a textual color name in an HTML
document, a small color swatch will appear that shows the corresponding
Added the Edit|Flip Case command. The Flip Case command toggles
the case of the character at the text cursor, and moves the cursor to
the next character in the line. Use this command to quickly convert a
short string of lowercase characters to uppercase, or uppercase
characters to lowercase.
Added three new options to the Page Setup dialog: Skip page number on
first page, Skip header on first page, Skip footer on first page.
Added three new commands to act on the current window: Minimize, Maximize
and Restore. These commands can be assigned to shortcut keys (via
Configure|Keyboard), but they do not occupy a position in the main menu
Add an option to the Find Text in Disk Files command to automatically
stop searching after a user-defined number of matches has been found.
Add an option to the Find Text in Disk Files command to display only the
files that do NOT contain the supplied search string.
Add an option to the Configure|Text Highlighting dialog to allow case
sensitivity to be controlled.
Added intelligence to the Reformat command so that it can break lines
properly at hyphens, dashes (-) and em dashes (--), and for ellipses. This
behavior is optional, and must be activated on the Configure|Preferences|Editing
A new command was added to the Block menu: "Strip Leading Spaces" removes
leading spaces and tabs from a range of selected lines.
A new command was added to the Window menu: "Close All But Active" closes
all open windows except the active window.
The status line's line count display now shows the overall line
Configure|Keyboard now recognizes the numeric keypad keys as unique
keys in their various shift states.
Cut, Copy and Paste commands have been added to the popup menu that
appears when right-clicking on a misspelled word.
A button has been added to the File Open dialog to provide instant
navigation to the directory of the file in the current window.
The Search and Replace confirmation dialog now shows the number of
replacements made as the operation proceeds, and the final report of
replacements made is only shown when needed (eg, if the Yes-To-All button was
An option has been added to the Replace dialog to dictate that only the
first match on a line should be considered for replacement.
Within a project file, filepaths can be designated with "exec:" to
dictate that they be opened using their default application. This allows other
files that are associated with a project to be opened when the project opens in
Boxer. For example, a project file's entries might be:
The Tab key will insert a tab character in the edit boxes of various
Find, Replace and Find & Count dialogs, rather than moving to the next
control in the dialog. This behavior can be controlled with an option
in Configure|Preferences|Tabs. (This relieves the difficulty of entering
a tab character into a replace string, and provides an alternative to
using "\t" to represent a tab in regular expression mode.)
The Backspace key is no longer hard-wired to unindent a selection. Now,
it will delete the selection, as is the Windows convention. The
Block|Unindent command can still be used to reduce the indent on a
selected range of lines.
Configure|Screen Colors: Provide a more detailed error message when
rejecting a color selection because it would result in invisible text.
The name of the conflicting screen element will now be reported.
The syntax used to insert the tilde character (~) into a template was
changed from "~~" to "\~" so that the "~~" sequence can be used to
represent a pair of backspace commands.
In the FTP dialog, if the Save Password option is not checked, a prompt
will appear for the password every time it is needed. In the past, the
password would persist for the duration of the current editing session
even if the Save Password option was not checked.
The read-only status of a file that was opened in hex viewing mode
should not have been permitted to be changed.
The Window|Previous and Window|Next commands will ignore minimized
windows when switching focus to a new window. The Windows-level Next Window
command (Ctrl+F6) can still be used to shift focus to minimized windows.
The shift/ctrl/alt accelerators that were once recognized for some
toolbar buttons are no longer active.
The Block|Sort command will consult the current locale so that accented
characters are sorted according to the local collating sequence.
Ensure that the Swap Words command will work as expected if the user
happens to have selected the two words to be swapped (selecting the
words is not required).
The default setting has been changed (for new installs) to ensure that
the backup file extension (BAK, eg) will be added to a filename, rather
than replacing the existing extension.
The Save As, Save a Copy As, and Save Selection As dialogs will no
longer display a choice of file types in their drop down File Type
boxes. This choice had created the expectation that Boxer would
automatically add a file extension to the filename entered by the user,
and this has never been the case. Many file types correspond to a file
filter which uses multiple file extensions (*.htm, *.html, etc), so
adding a file extension automatically is not something that can be done
safely or unambiguously.
When either of the Stay on Top or Add Line Ender checkboxes on a User
List dialog is toggled, all open User Lists will be updated to reflect
the new checkbox state(s).
Various tabbed controls throughout the program will highlight as the
mouse hovers over the tabbed title.
Performing a search using the Find Fast command will initiate the
"Highlight All Matches" Find option, if it is selected and eligible for
Allow Reformat and Word Wrap to break lines between HTML/XML tags.
The FindDifferingLines() macro command will now return a value, based on
whether differences are found or not.
Boxer will no longer recognize filenames beginning with an at-sign (@)
to be legacy Project files. Now, the .bp file extension must be used.
Macro breakpoints will be active only when the tabbed interface is on
the "Debug" page; they will be inactive for the "List" and "Edit" pages.
Boxer will protect against using a stored window position which would be
off-screen due to a change in video size (or number of monitors) since
Boxer was last run.
Two additional places have been added to the line number display to
accommodate the line count that can occur in very large files.
Various optimizations made to syntax highlighting screen update,
including one which enhances speed when very large reserved word lists
are in use.
Several additional HTML character code sequences are recognized by the Strip
HTML Tags command: ‘, “ ’, ”, –, — and
The maximum size of a macro has been doubled from the previous limit.
Improve syntax highlighting for numeric values that use scientific notation.
Ensure that Find Text in Disk Files can search in text files that
contain the ASCII 26 (EOF) character in the middle of the file.
The Open Filename at Cursor command will check to see if a filename is
embedded in double quotes, so that filenames containing embedded spaces
can be opened more easily.
Additional entries relating to bookmarks have been placed on the popup bookmark
context menu: previous bookmark, next bookmark, clear all bookmarks.
The maximum number of FTP accounts has been raised from 40 to 100.
When Delete Project is used to remove a project file from disk, it will
also be removed from the Recent Projects menu.
Enhanced syntax highlighting for multi-line HTML/XML tags.
The maximum length of a template name (within a template set) has been increased
from 20 characters to 100 characters.
Increase the maximum search string length from 80 to 512 characters.
Email and URL addresses that appear within either block comments or end-of-
line comments will be colorized as emails or URLs, and not shown in comment
Make the Column Ruler more readable, less congested.
Fixed Bugs and Quirks
Under certain circumstances, the dialog that reported that a file had
been changed by another program or process was invisible and could not
Fix a syntax highlighting mispaint involving block comments.
Rapid execution of a macro, as might occur due to keyboard repeat, could
result in an error message.
Boxer would not sense if a file it was editing was replaced by an
older copy of that file by some other program or process.
When the Insert Tab command was not assigned to the Tab key (or if the
assignment became disrupted) the Tab key would insert two tabs.
When cursoring onto a short line whose last character is a tab, with the
cursor in a column greater than the length of the short line, the cursor
would be misplaced by a few columns.
The character constants '\r' and '\n' (ASCII 13 and 10) within Boxer's
macro language were accidentally inverted in value. The statement "int c
= '\r';" would mistakenly assign the value 10 to "c". Any macros which
were written using either of these character constants should be
reviewed and adjusted.
When displayed on systems configured for "Large Fonts", the custom File
Open dialog's directory control could not be scrolled down enough to
display the very last directory in the list.
When displayed on systems configured for "Large Fonts", the FTP Open
dialog was mispainted.
When the second-to-last line was copied to the clipboard in full-line
mode, an extra newline was added to the clipboard.
In Configure|Text Highlighting, the Edit-As-List button should have been
disabled when the list was empty.
Takes steps to prevent a condition in which the Tab key was inserting
two tabs for each time it was pressed, after opening a file by
double-clicking from the results dialog box of the Find Text in Disk
Find Text in Disk Files could crash when searching files without
newlines, when matches were found in those files.
If the Tab Display Size was set to 1, the Block|Spaces to Tabs command
did not convert all spaces to tabs as it should have.
An "invisible colors will result" error message would result when the
background color was changed to match the foreground of the Text
Highlighting element. Because the Text Highlighting element has its own
background color, this error is spurious.
Find Highlighting and Text Highlighting would fail to colorize a space
character within a highlighted string when the following conditions were
met: when Visible Spaces were in use on a syntax-highlighted file for
which Active Spell checking had also been requested.
Using the option which disallows writes by other programs while
using the FTP Save command could cause an access violation.
Don't perform Find Highlighting or Text Highlighting within the macro
A macro name of the form "test5a.bm" was improperly sensed as having a
numeric suffix of 5.
Ensure that the macro function DeleteLine() will give an error message
if supplied with a line number that is out of range.
Ensure that the macro functions Up() and Down() will return an error
code when issued on the first and last lines of a file, respectively.
Macro Editor: do not show pop-up hints when the mouse hovers over a
function name if text is being selected. Doing so had interfered with
the ability to select text by mouse.
An email address that started with a digit (such as
email@example.com) would not be properly highlighted if it
appeared with a space to its left.
Avoid a spurious repeated-word report by the spell checker when text of the
following form was encountered: <word> <digits> <end of line>
Ensure that only full filepaths are added to the recent projects list in
the Project menu.
When the option to close all open files prior to opening a project file
was used, and the files being closed were the same ones being reopened
via the project file, the first named file would not be reopened.
The macro language's trig functions--and some scientific function--were
not being called properly and were returning 0 in all cases.
When using the Configure|Preferences option "File I/O dialogs preserve
current directory; ignore prior travel", and the option on the File Open
dialog to open the files matching a wildcard file spec, the wildcard
would not be handled properly if the directory selected was not the same
as the current directory.
After changing the printer via Print Setup, the default printer would
remain selected in subsequent edit sessions.
When opening an FTP file from within a project, the file load could fail
if the file did not have an extension and one of the directories within
the filepath contained a ".".
Holding down Ctrl+F4 to close several files in rapid succession could
result in an access violation.
If a dictionary language was selected which was not yet installed,
multiple message boxes would announce the error and a screen mispaint
Under certain circumstances, the custom File Open dialog's Preview
function would mistakenly report that a file did not exist.
An error could occur when performing a Syntax Check on a macro which
contained an unclosed quoted string.
When the display size of a tab was changed, the size and scale of the
horizontal scroll bar was not being recomputed.
Ensure that the trailing "/" in a URL such as
"http://www.boxersoftware.com/" is highlighted in the same color as the
An exception error could occur when inserting a tab into a very long
line when the option "Tab key inserts spaces, with tab stops determined
from line above" was in force.
Change the .BAT information in the released syntax.ini file so that "REM
" will be used if a range of lines is selected for use with the
In some dialogs, black-on-black text would result in edit and/or
comboboxes if a Windows color scheme was selected whose window color was
A regular expression of the form "^ *$" was not matching empty lines as
it should have.
In the macro dialog's Edit control, which allows macros to be composed
by typing key assignments, the Find, Replace, and Insert Formfeed
commands did not auto-insert when their key assignments were typed.
File paths within a project file which contained certain accented
characters were not properly handled unless enclosed in double quotes.
Configure|Colors: if the option to maintain a single background color
was turned off, and a different background color was selected for an
element such as Strings, a return visit to the dialog would show that
color selection to have been lost, even though its effect was initially
When using the Spell Checker to check the current word, if the Change
All button was used to request a global change, subsequent occurrences
were not changed.
Capitalized contractions (such as WASN'T) were being flagged as
A request to check the spelling of a capitalized contraction (such as
WASN'T) did not provide access to the Spell Check dialog.
Allow proper handling of a block comment sequence when the opening
character(s) of that sequence match the sequence used for end-of-line
If the proper argument type was not supplied to either the ReplaceAll()
or ReplaceAlli() macro functions, the user's error was not trapped
When supplied with a file specification of the form "path\*." Boxer
would open files matching "*.*" instead. [This was traced to an
apparent bug in the Windows API, but a workaround was devised.]
Prevent the chance of the wrong filename appearing in the header of the
printed page under certain conditions.
In the results dialog for the Find Text in Disk Files command, under
certain circumstances short pathnames would mistakenly be used when
opening a file by double clicking on a matched line.
When the mouse was hovered over an HTML color code in the lower (or
right) pane of a split window, the color hint was mistakenly displayed
in the upper (or left) window instead.
In the macro dialog, when using "New" more than once in the same edit
session, typing characters into the edit box did not initiate a
PutString() statement as it should have.
Trap an overflow condition in the macro language that could occur when a
string that represents an out-of-range floating point value was
converted to a float.
Paste As could truncate long file lists when processing clipboard
data in CF_HDROP format.
When printing a block of selected text, one character too many was
Boxer was not reacting properly to the clipboard message from Windows
regarding other applications in the Clipboard Viewer chain.
A URL in text could not be opened if it appeared with an equal sign immediately to its
Filenames such as ".profile", whose filename and extension are
essentially one-and-the-same, were not able to be syntax-highlighted due
to mishandling of the file extension.
Reset home-home-home logic if a mouse click occurs amidst key presses.
Prevent comparisons between string types and non-string types in macro
When Boxer copied HTML text to the clipboard, it mistakenly used two
clipboard open/close operations to place the two formats, when one
should have been used. The effect of this was that other programs which
watch the clipboard received two clipboard change events.
Unindent could fail when unindenting empty lines in very a specific scenario.
The Print dialog's upper page printing limit was sometimes inaccurate
(too small) for certain files.
Under certain circumstances, a duplicate dialog box could appear to
confirm the reloading of the same file.
The GotoLine, GotoColumn and GotByteOffset macro functions had been
documented to return -1 for error, but were instead giving an error
message and halting execution in such case.
Selecting a zero-width columnar selection and then pressing an
insertable character would result in the removal of all selected lines.
Take steps to cure a reported bug that has not been verified or
duplicated: the vertical scroll bar was reported to become invisible
after using either the Reload or Sort commands.
An otherwise empty file with just a single formfeed in it would result
in two output pages when shown in Print Preview, or when printed.
When printing or previewing a file in Mono Syntax mode, and the last
line of a page was a comment, and the Mono Syntax comment color had been
redefined to something other than black, then the footer would be
mistakenly displayed in comment color.
The Autosave feature could become erratic during long edit sessions
which crossed into a new day.
Open block comment, close block comment and end-of-line comment
sequences were not handled properly when they contained spaces.
Reserved words that contained embedded spaces were not highlighted
properly when visible spaces mode was on.
When the Find dialog's "select matched text" option was used, and Find
Next was used after a Find was performed within a selection, subsequent
matches would not be found.
The results window for Find Text in Disk Files did not highlight a
string that was matched when using the 'Match at end of line' option.
Languages which used the special EOL Comment "-1" flag--which designates
that a symbol is to be recognized as an end of line comment only when it
appears as the first non-whitespace character in the line--did not
highlight that symbol properly when visible spaces and tabs were in use.
When pasting a columnar text block from the clipboard, the cursor always
stayed at the insertion point, regardless of the Configure|Preferences
setting for this behavior.
Find Text in Disk Files would not use the selected text to seed the search
string box, as had been intended.
The user (auxiliary) spell checker dictionary could become corrupt after
adding words that ended with <apostrophe><s>.
When loading a file containing null characters, the user's choice for
how to convert nulls was disregarded on the very first null character
encountered, and that null character was always stripped.
Under rare circumstances, a column block delete of one column in width
could give unpredictable results.
Crash on exit could occur if a macro used the Exit() function to end the
macro and the editor upon its completion.