CMDebug 25.0:

 

The Scintilla edit control has been updated to version 4.2.0.

 

Redrawing in the edit windows is smoother and faster.

 

Improved the load and save times for large files.

 

When loading a file, CMDebug will first check for the file type (UTF-16, UTF-8 with BOM, or ANSI). If the file doesn't have a UTF-16 or UTF-8 BOM, it is read as an ANSI file with the current console code page, and converted to UTF-8 before editing. It will be converted back to an ANSI file with the current code page when it is saved. This allows CMDebug to properly display high-bit ASCII characters in the editor.

 

The batch debugger has a new "Command Expansion" window that will pop up above the tab window when you start debugging. The Command Expansion window will show the original command line, the command line after alias expansion, and the command line after variable expansion. The Command Expansion window is a docking window, so it can be moved & attached at other locations. If you don't want to see the Command Expansion window, you can turn it off from the CMDebug "View / Command Expansion" menu option.

 

You can now single-step into command groups and FOR loops. Click on the "Step Into" button on the CMDebug toolbar. You will see the current command line being executed in the "Command Expansion" window (see above).

 

The "Modified" tab has a new column "Previous" that shows the previous value of the variable that was just changed.

 

When debugging, the CMDebug window will now keep the current line centered on the screen (unless it's on the last page). This allows you to see both the last few lines and the next ones to be executed.

 

You can change the CMDebug window transparency with Ctrl-Shift-Mousewheel.

 

The Watch, Modified, and Breakpoint windows will now save the column widths if you change them, and use the new widths when you restart CMDebug.

 

The edit window will now keep the current line highlighted even when not in focus.

 

The edit window will default to maintaining the same indentation as the previous line. The default can be changed with the MaintainIndent option in TCMD.INI.

 

Regular Expression searching (Find dialog) now uses the C++11 regular expression library instead of the previous limited regular expression support.

 

The profiler timer now uses the Windows performance counters. The resolution is now in milliseconds (.001 seconds) instead of hundredths (.01 seconds).

 

If you're using TCC syntax (not CMD), and the first command on the line is an internal TCC command, CMDebug will display the quick usage help on the status bar.

 

Added a new submenu to the File menu:

 

EncodingFiles are always treated as UTF-8 inside the editor. This option allows you to specify how the file will be written when it is saved to disk.        

 

Default CodepageWhen the file is saved it will be written using the current codepage
UTF16 Little EndianWhen the file is saved it will be written as UTF-16
UTF8When the file is saved it will be written as UTF-8
UTF8 with BOMWhen the file is saved it will be written as UTF-8 with a leading BOM

 

Added a new entry to the Edit menu:

 

Copy+AppendAppend the current selection to the existing clipboard contents.

 

Added a new submenu to the Edit menu:

 

End of Line Characters

 

CR + LFLines end in a Carriage Return + Linefeed  (Windows default)
CRLines end in a Carriage Return  (OSX default)
LFLines end in a Linefeed  (Linux default)

 

Added a new entry to the Edit / Advanced menu:

 

Toggle current fold - toggles folding the current line on & off

 

Added two new folding entries to the View menu. (These will be a bit confusing if you don't turn on the folding margin in the Options menu!)

 

Toggle current fold - toggles folding the current line on & off

Toggle all folds - toggles every fold in the file

 

Added a new entry to the Debug menu:

 

Evaluate Command - runs the specified command in the context of the currently executing batch file. The output is displayed in a scrollable read-only edit control. Note that the command you run may change the result of the batch file being debugged.

 

The tab windows right click context menu has a new option: "Copy+Append" will append the current selection to the existing clipboard contents.

 

A Ctrl-Shift-C key will append the current selection to the existing clipboard contents.

 

The Regular Expression Analyzer (Tools / Regular Expressions...) now has a microsecond timer (to the right of the "Test" edit control) that measures the time it took to evaluate the expression.

 

The Regular Expression Analyzer has a "cheat sheet" of RE syntax and common expressions.

 

The Watch, Modified, and Breakpoints windows will now show a tooltip on a mouse hover that contains a column's full text, if it is too wide to be shown entirely in the column.

 

If you "step out" (run to breakpoint or end) and you are in a CALL'd batch file, and if there are no more breakpoints in the current file, you will be returning to the parent batch file at the line following the CALL, and "step out" will be turned off.

 

CMDebug will not save a *.watch file if the only variables being watched are the default ? and _?.

 

 

TCC-RT:

 

TCC-RT is compatible with the new Windows 10 Terminal (currently in preview).

 

Changed some of the less-commonly used dll's to load on demand, which will reduce the startup time and RAM footprint slightly.

 

All of the IPWorks internet / network / zip libraries have been updated.

 

The Onigmo regular expression library has been updated.

 

Added support for Python 3.8.

 

The [ ] wildcard now accepts either ! or ^ as the NOT symbol.

 

The history and directory history popup windows now support multiple selection (with the shift or ctrl keys + left mouse), and they have a popup context menu (right mouse button) to Copy, Copy+Append, Cut, or Delete. You can also select multiple entries and execute them by pressing Enter - TCC-RT will create a command line that looks like this:

 

(line1) & (line2) & (line3)

 

There are new options for output redirection. These options will override the UnicodeOutput and UTF8Output directives in TCMD.INI. The piped output options also work with DOS pipes (i.e., |!:u). Note: these options only work for redirecting output from TCC internal commands.

 

>:aRedirected output (STDOUT and/or STDERR) is ANSI (8 bit characters)
>:uRedirected output is UTF16 Unicode
>:8 or >:u8Redirected output is UTF8

 

>>:aAppended redirected output (STDOUT and/or STDERR) is ANSI (8 bit characters)
>>:uAppended redirected output is UTF16 Unicode
>>:8 or >>:u8Appended redirected output is UTF8

 

|:aPiped output is ANSI
|:uPiped output is UTF16 Unicode
|:8 or I:u8Piped output is UTF8

 

Redirection to CLIP: now defaults to UTF16.

 

Date and time ranges can now compare UTC times by adding a 'U' after the D or T (and the optional A, C, or W) in the range specification. For example:

 

/[twu00:00,11:59]

 

Size ranges now can test for compressed size (on NTFS drives with compression enabled for the file or directory) by appending a C to the S argument. For example, to specify files with a compressed size between 100 and 1000 bytes:

 

/[sc100,1000]

 

TCC-RT will detect if it is running as a service or detached before prompting for SSL or SSH authentication, and will provide an automatic 'Y' (yes) input.

 

 

Help:

 

The help is built with a new version of Help & Manual 7.

 

 

New TCC-RT Internal Variables:

 

There are a number of new internal variables for GPS position and status. They require a GPS (internal or external) that supports the Windows Sensor Location APIs. Note that your GPS may not support all the variables; if a value is not supported Windows will return "Ëlement not found". Unless otherwise specified, the values returned are decimal numbers (for example, 38.735122).

 

%_gpsalt - Altitude (from sea level) in meters.

 

%_gpsazimuth - Azimuth of each satellite in view. Returns a space-delimited list.

 

%_gpselevation - Elevation of each satellite in view. Returns a space-delimited list.

 

%_gpserrorradius - Accuracy of latitude and longitude values, in meters.

 

%_gpsfixquality - Quality of the fix (integer).

 

%_gpsfixtype - Type of the fix (integer).

 

%_gpshdop - Horizontal dilution of precision.

 

%_gpsheading - True heading.

 

%_gpsids - IDs of the satellites in view. Returned a space-delimited list of integers.

 

%_gpslat - Latitude

 

%_gpslon - Longitude

 

%_gpsmagheading - Magnetic heading.

 

%_gpsnmea - Returns the NMEA sentence as a string.

 

%_gpsopmode - GPS operation mode (integer).

 

%_gpspdop - Position dilution of precision.

 

%_gpsprns - PRN numbers of satellites in view. Returns a space-delimited list of integers.

 

%_gpssatsinview - Number of satellites in view (integer)

 

%_gpssatsused - Number of satellite used in solution (integer).

 

%_gpsselmode - GPS selection mode (integer).

 

%_gpssnr - Signal to noise ratio of each satellite in view. Returns a space-delimited list.

 

%_gpsspeed - Speed in knots.

 

%_gpsstatus - GPS status (integer).

 

%_gpsvdop - Vertical dilution of precision.

 

 

New TCC-RT Variable Functions:

 

@VARTYPE - Returns the type (if any) for the specified variable name. The possible values are:

 

0No type
1Integer (0-9)
2Decimal (0-9, the decimal character, and the thousands separator)
3Hex (0-9, A-F)
4Boolean (0 or 1)
5Alphabetic (A-Z and a-z)
6Alphanumeric (A-Z, a-z, and 0-9)
7Regular expression

 

@WINPATH - Convert from WSL pathname format to Windows format. For example:

 

echo %@winpath[//mnt/c/windows/system32/notepad.exe]

c:\windows\system32\notepad.exe

 

@WSLPATH - Convert from Windows pathname format to WSL format. For example:

 

echo %@wslpath[c:\windows\system32\notepad.exe]

//mnt/c/windows/system32/notepad.exe

 

 

Updated TCC-RT Variable Functions:

 

@EVAL - added log2() function.

 

@PID - added an optional second argument that specifies whether to return all PID's that match the first argument. For example:

 

@pid[firefox,+]

 

@TIMER - Now uses the Windows performance counters for higher resolution. The default @TIMER resolution is in milliseconds (.001 seconds) instead of hundredths (0.01 seconds). @TIMER has three new values for the optional second argument to return the split time as an arithmetic value:

 

ms - split time in milliseconds

us - split time in microseconds

ns - split time in nanoseconds

 

@VERSION - added a new optional 5th parameter that specifies whether to append the version number to the filename (0), or prefix it to the extension (1).

 

 

 

Updated Commands:

 

ACTIVATE

 

/POS - accepts a * value for any of the arguments. If the value is *, ACTIVATE will use the existing position / width / height value. For example, to resize a window without moving it:

 

ACTIVATE "title" /POS=*,*,1200,800

 

To move a window without resizing it:

 

ACTIVATE "title" /POS=200,400,*,*

 

ASSOCIATE

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

/V:verb- ASSOCIATE defaults to reading and writing to SHELL\OPEN\COMMAND. You can use a different verb by specifying the /V option. For example, to tell create a PRINT verb for .TXT files:

 

ASSOCIATE /V:PRINT .txt=%%SystemRoot%%\system32\NOTEPAD.EXE /p %%1

 

ATTRIB

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

CHCP

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

COLOR

 

COLOR now supports changing the console color palette with either an .INI file (for example, as used by the ColorTool utility), or an .ITERMCOLORS file. The syntax is:

 

COLOR /F filename

 

If you are running in a Take Command tab window, COLOR will pass the new colors to TCMD to update the tab window. You can have a different color palette in each tab window.

 

DIR

 

Directory colorization (using either the COLORDIR environment variable or OPTION / Colors / Directory colors) now supports all types of ranges (size, date, time, description, owner, and exclusion). The syntax is the same as for ranges in an internal command. For example, to display files that are between 100 and 1000 bytes in bright green:

 

set colordir=/[s100,1000]:bri green;

 

Directory colorization now supports colors for file subsystem types. The supported subsystems are:

 

EXETYPE_WIN32GUIWindows x86 GUI app
EXETYPE_WIN32CUIWindows x86 console app
EXETYPE_WIN64GUIWindows x64 GUI app
EXETYPE_WIN64GUIWindows x64 console app
EXETYPE_DOSDOS (16-bit) app (obsolete)
EXETYPE_POSIXPOSIX app (obsolete)
EXETYPE_EFIEFI app

 

For example, to display 32-bit console apps in bright green and 64-bit console apps in bright red:

 

set colordir=EXETYPE_WIN32CUI:bri green;EXETYPE_WIN64CUI:bri red

 

/-C - Removes the thousands separators when displaying file sizes (for compatibility with CMD.EXE).

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

ENUMSERVERS

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

ENUMSHARES

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

FOR

 

The ~a (display attributes) format has been updated to match the current CMD behavior with extended attributes (including CMD's behavior of not displaying all the extended attributes).

 

GOSUB

 

GOSUB now supports calling subroutines in another file when that file is compressed.

 

HEAD

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

IF

 

ISVISIBLE "title" - executes the command if the specified window is visible. (This means that Windows has set the visibility flag; it does not mean that the window is necessarily visible on your desktop.

 

IFF

 

ISVISIBLE "title" - executes the command if the specified window is visible.

 

INSTALLED

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

LIBRARY

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

PAUSE

 

/C - After you press a key, erases the prompt and does not print a CR/LF.

 

PDIR

 

Directory colorization now supports ranges (see DIR for details).

 

Directory colorization now supports subsystem types (see DIR for details).

 

/D - switched the meaning from "colorize" to "don't colorize" (to match DIR and SELECT).

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

PLUGIN

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

PRINT

 

/S printer - set the default printer.

 

PRIORITY

 

If you only provide a PID or window title, PRIORITY will display the current priority.

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

REGDIR

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

/X - display the REG_DWORD, REG_DWORD_BIG_ENDIAN, and REG_QWORD values in hex. Only valid when used with /V and /D.

 

SELECT

 

Directory colorization now supports ranges (see DIR for details).

 

Directory colorization now supports subsystem types (see DIR for details).

 

SERVICES

 

/I - Display the PID's for services. Note that stopped services will return 0 for the PID, as will Windows services.

 

SYNC

 

/WAIT=n - Pause for n milliseconds between each block copied from the source to the target file. This is useful for slow networks and very large file copies; it prevents SYNC from monopolizing all of the network I/O.

 

TAIL

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

TASKLIST

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

TIMER

 

TIMER now uses the Windows performance counters for greater accuracy. The default TIMER resolution is now in milliseconds (.001 seconds) instead of hundredths (0.01 seconds).

 

/L - When used with /S (split time) or TIMER OFF, display the result in the number of milliseconds.

 

/M - When used with /S (split time) or TIMER OFF, display the result in the number of microseconds.

 

/N - When used with /S (split time) or TIMER OFF, display the result in the number of nanoseconds.

 

TOUCH

 

/CD - create the specified directory if it doesn't exist.

 

TREE

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

TYPE

 

/Pn - the /P(ause) option has an optional argument n that specifies the number of seconds to wait for a keystroke before continuing.

 

UNQLITE

 

Updated to UnQLite 1.1.9.

 

WINDOW

 

/POS - accepts a * value for any of the arguments. If the value is *, WINDOW will use the existing position / width / height value. For example, to resize a window without moving it:

 

WINDOW /POS=*,*,1200,800

 

To move a window without resizing it:

 

WINDOW /POS=200,400,*,*