Auto-Complete: a fast, powerful, highly customizable system
for completing words and phrases as you type.
- Complete partially typed words by selecting from an optional pop-up list of suggestions, or by
pressing a user-defined trigger key (Ctrl+Space, by default)
- Suggested completion phrases are drawn from four sources:
- User-defined phrases
- Existing text in the current document
- The reserved word list for the current file type
- An external, user-editable dictionary of 37,000 English words
- User-defined phrases can be set to trigger automatically, when a delimiter is typed, or only when the trigger key is pressed
- Expansion codes can be placed in user-defined phrases that will expand to various date/time
strings, or to file/directory strings, at the time of insertion
- Auto-Complete works intelligently on both ordinary text and program code, due in part to user-editable delimiter lists
that control how words/phrases are harvested from the surrounding text
- Auto-learn mode can add new phrases to the user-defined list automatically
- Extensive options provide control over how words are harvested from the current document,
how many should appear in the pop-up list, where/when/whether the list should appear, and
much, much more
Function and Variable Indexing: Boxer can display information for
the function or variable at the mouse cursor in a popup tool tip. Function and
variable information can also be displayed in a dialog box that can be left open
for reference, or for easier navigation in your source files: just double-click
on an indexed entry to jump to that function's declaration.
Ruby, Lisp, Eiffel, Assembler, Fortran, Cobol and several other languages. To
perform indexing, Boxer interfaces to the popular Exuberant Ctags
utility program. Exuberant Ctags is a fast, multi-language implementation of
the original ctags and etags programs that are available on Unix.
Power Columns: an innovative editing mode that applies all edits
made to each line within the selection.
Create a zero-width selection in columnar mode and start typing. The
characters you type will be inserted into each line within the selected range.
Hit backspace to correct a mistake: all lines are affected. The Delete key will
delete characters to the right. Use the left and right arrow keys to move the
insertion point to a different column. You can even Paste a short text string
from the clipboard into each line.
Bookmark Manager: manage and navigate among bookmarked lines more
Boxer's new Bookmark Manager dialog displays a list of the currently
bookmarked lines, along with their filenames and line numbers. Double click or
press Enter on an entry to jump immediately to that file and line number. Sort
the display by bookmark number, filename, line number, or line text. Show
bookmarks for all open files, or only for the current file. Clear any bookmark
by pressing Delete. The Bookmark Manager can be left open while working in
Boxer, so that it's available for reference or quick navigation.
Undo Cursor Motion: The Undo command has a new option
that allows it to undo passive cursor motion commands. The option is located on
the Configure|Preferences|Editing dialog tab, in the Undo section, and its
default setting is ON.
Web-based User Tools:
Enhancements have been made to the User Tools command to make it easier to
define web-based resources as User Tools.
- User Tools Macros can be placed in the Program field, making it possible to
embed the word at the cursor--or a short text selection--into a URL. For
example: http://www.google.com/search?q=$Word would search Google for
the word at the text cursor.
- The new 'Test Tool' option will simulate the running of a User Tool — expanding
any macros that were used, and performing other translations — without actually running
the defined program.
- If the selected text macro, $Sel, is used within a URL, embedded spaces
are automatically converted to plus signs, as required for a web-friendly URL.
- A new directive, $SelWord, will expand to either the current text selection,
if present, or the word at the text cursor
- A Description field has been added for each User Tool, which will appear as a
menu hint when cursoring over User Tools in the main menu.
- the $BoxerDir macro returns the path of Boxer's installation directory.
More User Tools: The number of User Tools has been doubled, from 12 to 24
Current File Tab in Bold: The filename on the active
file tab will be displayed in boldface text. A small change (but oddly not a simple one!)
that has a surprisingly large impact on the editing experience. Also: the
filename displayed on the file tab can be shortened to a user-defined width.
This new option appears on the Configure | Preferences | Display options
The Duplicate and Increment command works like the Duplicate Line
command, but it will increment any numeric values it finds in the line as it copies.
For example, it will change a line like this:
width1 = MainForm->WidthArray;
width2 = MainForm->WidthArray;
Duplicate and Increment also recognizes and increments hexadecimal values in various formats (0xFF,
FFh or $FF) as well as character constants ('A').
The new Repeat Last Command command can be used to
execute the last non-cursor-motion command again. This command is handy when
you need to issue a command several times, and the command does not have a
shortcut key assigned to it. The default key assignment for Repeat Last Command
Open Program at Cursor: File|Open|Program at Cursor can be
used to open the program, file or folder at the text cursor, in its associated
application. For example, if a filepath to a PDF file appears at the text cursor,
issue this command to open the file in Acrobat Reader.
Persistent Macro Variables: Macro variables can now
persist from run to run, and even from edit session to edit session. A macro
can also use the value of a variable computed and stored by another macro. Two
new macro functions make this possible: WriteValue() and ReadValue() can be
used to store and recall macro variables. EraseValue() can be used to delete a
macro variable from storage.
Find Dialog Enhancement: When the Find dialog is
used with its Incremental Search and Select Matched Text options on, the
Find Next and Find Previous keyboard commands (F3 and Shift+F3
respectively), can now be issued while the Find dialog is still
open to display and move among the matches to the partially typed
Auto-Number Enhancements: Several enhancements have been
made to the Auto-Number command:
- Optional prefix string to be placed before the number
- Optional suffix string to be placed after the number
- Optional user-defined field width to control the width of number
- Option to skip the numbering of blank lines
- Preview the numbering format in real-time, in a sample display window
A new "Active Project" scope option has been added to the following dialogs, so
that their operation can be limited to open files within the active project:
Find, Find and Count, Find Text in Disk Files, Replace, Replace Line Enders, and
Non-Modal Calculator: Boxer's Calculator can now be run
alongside Boxer, and focus can be switched between the two windows as
HTML Help: Boxer now uses HTML Help format help, which provides a modern,
browser-like interface, full-text search capability and bookmarking of favorite topics.
Professional Icons: new, richly colored icons give Boxer 12 a fresher look,
while retaining the meaning of all the earlier icons. (We've had very positive feedback from
our testers on this change.)
Sort IP Addresses: The Sort dialog has a new option
to sort IP Addresses, with proper consideration to the value appearing in each
node of the address.
The Help File parameter in syntax highlighting has
been extended: in the past, keyword lookup of the word at the cursor had
been available only when a WinHelp (.HLP) help file had been designated as
the associated reference document. Now, compiled HTML Help (.CHM) files are
also eligible for keyword lookup of the word at the cursor.
Many new macro functions have been added to Boxer's macro language, further
extending its capability:
AppendToClipboard(string str, int n)
set the modify state of the current file to true
returns the window number associated with file 'fn'
returns 0 if selection mode is Stream, 1 if Columnar
returns 0 if edit mode is Insert, 1 if Typeover
get the current working directory
set the current working directory
execute User Tool 'n' and wait before macro execution resumes
append string 'str' to Clipboard 'n'
These macro functions have been added to assist with disk file operations:
CopyFile(string old, new)
RenameFile(string old, new)
copy the file 'old' to 'new'
rename file 'old' to 'new'
delete file 'fn'
update the timestamp of file 'fn'
create the directory 'dir'
Several new macro functions provide control over the Perl Regular Expressions
and Match Case options on the Find and Replace dialogs:
These functions will force Perl Regular Expressions to ON before the operation
is performed. The (existing) companion macro functions without the "RE" designator have
been changed to force Perl Regular Expressions to OFF before operation. The trailing
"i" indicates that a case insensitive search will be performed.
New: RunProgram() allows programs, documents and folders to be opened from
within a macro. A 'wait' parameter provides the ability to suspend macro
execution until the program has closed. RunProgram exposes the ShellExecuteEx
Windows API call to Boxer macro users.
New: PressChar() prompts the user with a supplied string on the
status bar, and places the next character pressed into a supplied variable. A
popup dialog does not appear, as it does for GetChar().
Enhanced: The SubString() function has been extended to permit negative
'index' and 'len' parameters, in the flavor of Perl's substr() function: If
'index' is negative, and 'len' is positive, 'str1' will be filled with 'len'
characters starting 'index' characters in from the end of 'str2'. If 'len' is
negative, the value of 'index' is ignored, and 'str1' is filled with the
rightmost 'len' characters from 'str2'.
An "Insert Tab" button has been added to various Find and Replace dialogs
to make it easier to insert a tab character into the search string.
When a selection is present, the Find Mate command will extend the selection
to the mate of the first character in the selected text.
Perl Regular Expressions Enhancement: references to named subpatterns [example:
'(?P=name)'] will now be processed when they are found in the replace string. In
the past, only numbered subpatterns [example: '$1'] were recognized in the
replace string. Named subpatterns can be used in the Replace and Replace Line
Enders dialogs, and with the ChangeStringRE() macro function.
Three new commands have been added to help delete lines of a given class:
Edit|Delete|Lines that do not Begin with …
Edit|Delete|Lines that do not End with …
Edit|Delete|Lines that do not Contain …
Command Multiply Enhancements: The operating scope of
the Command Multiply feature has been expanded beyond the most common cursor
movement and text entry commands. Now, the execution of a wide variety of
Boxer's other commands can also be multiplied: Reformat, Quote and Reformat,
Unformat, Align Left/Right/Center/Smooth, Delete Previous Word, Duplicate Line,
Find Previous/Next, Indent with Space/Tab, Unindent, Undo, Redo, Insert
Filename, Cut, Append, Cut-Append, Paste Clipboard 'n', Insert Line Above/Below
and Insert Short/Long Date/Time.
Active Line/Page Reporting: when dragging the vertical scroll bar up and down to scroll through a file, the
line number of the top line of the view, and the page count, will be
continuously updated on the Status Bar.
An option has been added to the Sort dialog to perform a true ASCII
alphabetic sort. (The existing alphabetic sort option performs a sort using
locale tables provided by the operating system. These tables enforce regional
conventions for sorting according to case, and for how accented characters are
to be sorted.)
The Window menu and the File Tab context menu each have a "Skip" command that
will cause the selected file to be skipped over by the Previous and Next Window
commands. Use this option to control which files become active when using
Previous/Next to cycle among open files. The skip status of each file is stored
when an edit session is closed, so it will persist if the session is later
resumed. The File Tab context menu also includes options to set or clear the
skip status for all open files. Optionally, a skipped file can have its skip
status released by clicking on its File Tab tab directly.
An option has been added to the View|File Tab submenu to sort file tabs by
order of use: whenever a file tab is clicked it is promoted to the first
The ANSI Chart and OEM Charts have been enhanced to use a multi-column Listview
control with grid lines. The ANSI Chart will use the same font and code page as
the screen font; in the past the Western/Latin code page was always used.
An option has been added to set the default line ender (PC/Mac/Unix) for
A file can be closed by clicking on its file tab with the middle mouse button.
Verilog constants of the following forms will be highlighted as numeric values
by Boxer's syntax highlighting feature:
Added an option to automatically release the text selection after performing
Cut, Copy, Append or Delete. The option appears on the
Configure|Preferences|Editing dialog page.
The Word Count and Total and Average report dialogs now each include a Copy
button to copy the results in the dialog to the current clipboard.
An option has been added to allow the Tab key to be non-destructive when in
Shift+Home, Shift+Home, Shift+Home can now be used to extend a selection to
start of line, start of page and start of file, when pressed in succession. The
same treatment applies to Shift+End.
If a selection exists when the Previous Bookmark or Next Bookmark command
is issued, the selection will be extended to the bookmark location.
The Edit|Insert Character command can now accept a series of character values as
input for insertion into the current file. Various formats are now recognized,
for example: 255, xff, 0xFF, $ff, FFh, \377 and o377. Also new: the value(s)
entered will be remembered and recalled when the command is next used.
Find Text in Disk Files: a range of lines can now be selected in the results
window. Selected lines can be copied to the clipboard using the new Copy
Selected button, or deleted from the results listing with the Delete key.
Add an option to the Spell Checker dialog to check all open files, or all
files in the active project. The new "Next File" button on the spell checker
correction dialog can be used to skip to the next file prematurely.
The HTML Color Hint feature will now recognize color designators of the form
"rgb(255,255,255)", and present a pop-up color swatch when the mouse hovers over
Added a speedbutton to the "Find Text in Disk Files" and "Find Disk Files"
dialogs that quickly sets the search directory to that of the currently edited
The Undo command is now better at restoring the prior view when a previous
change is undone. This means that if a previous change was performed while
editing near mid-screen, Undo will restore the view to mid-screen when the
change is undone.
New command: Sort File Tabs by Extension, available from View|File Tabs, and
from the right-click context menu accessible from the file tabs
An option has been added to reset the active clipboard to the Windows
clipboard on startup. Its default setting is ON.
Window and dialog sizes and positions are now stored as a percentage of
the current screen size, so that if the screen resolution ever changes, or
Boxer's settings are transferred to a new PC, its windows will be scaled to the
new video settings automatically.
An option has been added to the Configure|Preferences|Cursor Travel dialog page to
allow the Window Previous/Next commands to move according to the File Tab
order (as per v11), or according to the window 'z-order' (pre-v11)
An option has been added to control whether or not the Find and Replace
commands will suggest the word under the cursor as the initial search string
When right-clicking on an inactive file tab, the identity of the tab will
be recognized so that the Close and Skip commands in the context menu apply to
the file tab clicked, and not the active file tab.
Boxer will read its home directory from the registry, and not from the
file path of the copy of B.EXE that was run. This allows a copy of
b.exe to be run from a directory other than its home directory, without
triggering warning messages about missing keyboard files, etc.
Allow the incremental search feature of the Find dialog to respect the
Wrap Around option, if active
Ensure that the Previous Bookmark and Next Bookmark commands will jump to a
bookmark that resides on the current line, if its column location is
appropriate to the request.
When using File|Save All, and two or more FTP files are among the files
to be saved, the FTP connection will be kept open while the files are saved,
rather than closing and opening the session for each file.
The Goto Column command will now accept values that place the cursor past
the end of line, so long as the Configure|Preferences|Cursor-Travel option
"Move from end of line to start of next line" is not checked.
Remove restrictions on the maximum and minimum point sizes for screen and
When looking backward for an open tag ("<") in HTML files, Boxer will no
longer be confused by open tags that appear within a double-quoted string.
Ensure that replacements that are made after selecting "All" during Replace can
be undone with a single Undo command.
An argument has been added to the macro function Deselect(). The new 'mode'
argument can be used to control where the text cursor is placed after the
selection is released.
After running a macro, check to see if any edited files have been changed by
other processes, or by the macro itself.
Take steps to ensure that the display of filenames that use characters from
non-Western code pages are displayed properly throughout the program.
Due to a problem reported by users in countries that do not use the
Western/Latin code page, the date in the lower right corner of the status bar
will now be displayed in English, and not in the language dictated by the
operating system's regional settings. The Insert Short/Long Time/Date commands
will continue to honor the system's regional settings.
In the custom File Open dialog, when a wildcard pattern is being used in the
Filename box, preserve the wildcard pattern as new drives and directories are
When restoring a previous edit session, make sure the files being re-opened
haven't been changed to read-only status since the last session.
Currently, when the Paste command is issued and no files are open, a new
file is opened automatically and the Paste command is applied to the new file.
Now, a new file will also be opened when Paste is issued if the current window
If the Block|Unindent happens to be assigned to Backspace, let the Unindent
command perform a backspace when text is not selected.
For better compatibility with the C programming language, and with Boxer's Perl
regular expression support, the macro language now recognizes octal character
constants. To designate character 255 as a character constant, this syntax will
now be used: '\377'. (In the past, \nnn was taken to be a three-digit *decimal*
sequence, which is non-standard. You should review any macros which might have
used the old syntax and make the necessary adjustments. Until now, \nnn was
only recognized in string constants, and not in character constants.)
In the FTP Open dialog, ensure that a file does not need to be selected in
the upper listbox in order for a user-edited filename to be used from the
filename edit box below.
Syntax Highlighting will highlight numeric constants of the form $FFFF, in which
the first digit after the dollar sign is a hex letter.
The Edit|Delete|Current Line command will preserve the cursor column as lines
are deleted, moving it only when required for tabbed, or under-length lines.
When searching with Find Next or Find Previous in wrap around mode, a message
will appear on the status bar when the search has wrapped back to the location
of the first match. To enable a pop-up message box for this event, use the
checkbox on the Configure|Preferences|Messages dialog page.
When a Find Fast search is performed, the word at the cursor will be added
to the search history of the Find dialog.
Ensure that the -r command line option flag, which causes the next named file to
be opened in read-only mode, will cause all files matching a wildcard
specification to be opened in read-only mode. For example: "B -r m*.cpp" will
cause all files matching m*.cpp to be opened in read-only mode.
Allow the playback of a keystroke recording to be undone by a single undo.
Replace dialog: don't require that the "Find text" string differ from the
"Replace with" string in this specific case: when Regular Expressions are OFF
and Case Match is OFF. (This ensures a user can use search=Boxer and
replace=Boxer in order that Boxer, BOXER, boxer and BoXeR are all changed to
Return focus to editor window after Tools|Value at Cursor is issued, so
that editing can continue uninterrupted.
Adopt a new method for detecting filename in FTP display, in hopes of being
able to parse the directory listing of even more server types.
Give a warning when Project|Add or Add All is used to add an untitled file
to a project.
Ensure that the Window List retains focus when the Delete option is used to
close the currently active file
Yes/No dialog could use 100% of CPU when waiting for a reply to a changed
Files sizes in the custom File Open dialog box are displayed with commas,
and are right justified. Other fields have also been right justified.
Remove "/" as a string delimiter in Perl. It was leading to troubles
with Syntax Highlighting, and I've been told there are other ways to
do the same thing.
Relax the requirements for displaying a color popup when atop a hex color
code to also permit the following:
When deciding whether an existing selection should become the search string,
or become the scope of the search itself, Boxer will now use a value of 50.
That is, when a selection of 50 or fewer characters exists on a single line,
and a Find or Replace dialog is summoned, the selection will be suggested as
the search string. When a longer selection exists, the scope in the dialog
will be changed to "Selected text".
When creating a keystroke recording that contains a Run Macro command, ensure
that only the Run Macro command is recorded, and not the commands contained
within the macro itself.
Ensure that a project file is added to the Windows Start|Documents list when the
Project|Edit Other and Project|Edit Active commands are used.
When pressing Enter in the middle of a line with spaces to the left of the
cursor, ensure that the spaces are not stripped from the line being split.
Allow the last line of the file to be scrolled as high as mid-screen, displaying
empty space below EOF. This option can be disabled on the
Configure|Preferences|Cursor Travel dialog page.
The numbered Recent Project icons have been made blue to distinguish them
from Recent File icons when they reside on the toolbar
Give more meaningful toolbar button hints for the following classes of
toolbar buttons: open recent file #, open recent project #, switch to
window #, user list #, user tool # and run macro #
Allow the Escape key to close the Value at Cursor dialog
Fixed Bugs and Quirks
Boxer could not be closed by right-clicking its toolbar icon when two
or more files were open.
On Windows XP (but not Windows 2000), when the vertical scroll bar was on
(but NOT when the horizontal scroll bar was also on), various text operations
(File|Reload, for example) would cause the vertical scroll bar to disappear.
If Boxer was left open during shutdown, it would fail to respond to
the close message from Windows and shutdown would be disrupted.
After double-clicking on an email address or URL, double-click could not
be used to select the current word until other editing actions had occurred.
If multiple Boxer-associated files were selected in Explorer, and Boxer was
not currently running, and Enter was pressed to load the files, only the first
file would be loaded into Boxer.
The Go to Column command did not take tab characters into account when
positioning the text cursor.
When using Find Next to search for a string that occurred to the left
of the cursor, and wrap around mode was active, and the instance to the left
was the only occurrence in the file, the string was reported as not found.
Under certain conditions, a Search and Replace operation performed
within a selection would loop forever after selecting 'All."
The ByteCount() macro function did not agree with the file size reported
for a file after it was written; a 2-byte discrepancy existed.
If a macro was edited from the "List" tab of the Macro dialog, and a
new macro was then selected from the list without first saving the changes,
the changes would be lost.
Changing the tab key mode in Edit|Preferences|Tabs didn't take effect
until a second visit to the configuration dialog.
Some of the higher entries in the Tools|Error Chart were misformatted or
A macro which changed the current file to another file during its operation
would cause the Undo command to behave as Undo All in the file from which the
macro was originally run.
When a non-Western screen font was in use, the characters selected for
visible spaces/tabs/newlines were being selected based on the OEM values,
and not the ANSI values, from Configure|Preferences|Display.
When a non-Western screen font was in use, the ANSI visible
space/tab/newline characters displayed in Configure|Preferences|Display did not
reflect the screen font in use.
The horizontal scroll bars that appear in the Search|Find a Disk
File dialog, and in the Configure|Text Highlighting dialog, were
sometimes not properly scaled to display the full extent of long entries.
The macro function PutLine(), when used to replace the text on the
last line of the file, would add an extra line to the file.
When the Tab key was configured to be self inserting in various Find
and Replace dialogs, Shift+Tab would also insert a tab, rather than moving
to the previous control in the dialog.
Very long replace strings could cause a crash when they exceeded the
buffer used to report the string as not found.
The macro functions LineContainsRE() and LineContainsREi() would cause
infinite looping when processing empty lines.
If the Delete key was used to delete a columnar selection in the macro
editor, the text would be deleted as though a stream selection had been made.
When returning to the Macro dialog after opening, changing, and then saving
a macro file in Boxer proper, the macro editor window would not display the
latest content of the macro file until it was re-selected in the list.
A keystroke recording that used the Tab key to indent a range of lines
would see the Tab press appear twice in the resulting keystroke recording.
Search|Replace Again was not enabled in the menu after a Replace All
operation for which confirmations were not given.
"Edit|Delete|Lines that End with" would not delete lines if the
designated string also occurred earlier on the line.
Find Next, from very last position in file, with wrap around mode in force,
would not wrap to the start of the file
The Random option in Sort Lines was not providing a true random
Find Previous, from the very first position in the file, with wrap around
mode in force, and when a match existed at that position, would not wrap to the
end of the file
1. paste text block into a new window so that vertical scrollbar appears (ok)
2. undo, and scrollbar disappears (ok)
3. redo, and scroll did not reappear (bug)
The menu icons in the File and Project menus would disappear after either
of their respective recent files submenus were cleared.
Fixed a word wrap bug that could occur when long strings without spaces were
pasted into a paragraph.
After reloading a file changed by another process, and if that file was
not the current file, the application title bar would display the wrong
The Find dialog could get into a situation where the "Selected Text"
radiobutton was selected but disabled.
If a non-existent ftp file was named in a project file, subsequent ftp
files named in that project file would not be opened properly.
Files greater than 2 GB in size would have their file size displayed
improperly in the custom File Open dialog.
Ensure that the Find Text in Disk Files dialog doesn't try to set
focus to the FindComboBox when that control is disabled (as occurs when
the scope is set to "All Open Files")
Prevent error when an existing project file refers to a distant filepath that
no longer exists
The Value at Cursor command would give an exception error if left on from a
previous session, and the new session had no open files.
The Save Key Recording and Load Key Recording commands shared a command
number internally, making it impossible to assign unique keystrokes to these
The View|Hex Mode command did not reflect the actual line ender style
in use according to File|Properties.
View|Tab Display Size|Intelli-Tabs was not considering the last line
of the data file in its computations.
When the Project|Add One or Add All commands were issued, the read-only
state of the added file(s) was not noted when the file was added to the project
Find Text in Disk Files did not search and report results properly for
files with Macintosh (CR only) line enders.
A keystroke recording containing a key sequence that runs a macro
would not playback properly.
A template that contained the ^^ sequence could be processed improperly
when inserted more than once.
When a template used vertical rule (|) to indicate cursor placement,
and that character appeared after other instances of double vertical rules
(||) in the same template, the cursor would be misplaced and the || sequence
A file that was opened for shared write access was not properly sensed as
being changed by another process when focus returned to Boxer
The Recent Project 9-16 entries in the recent projects submenu were
When running a macro from the command line that included the Exit command,
an exception error could occur if the mouse was moved while the editor was in
the process of exiting.
An error could occur when using Replace Line Enders if the cursor location
before the operation came to be non-existent after the operation, as a result of
removing newline characters
The sort mode and sort direction of the Window List were not being
The IndentWithString() macro function would prompt for a string, even when
a string had been supplied as a parameter
When a very long search pattern was used, and the string was not found, a
crash would result immediately after the dialog that reported the string to be