ByArgs plugin for Take Command / TCC / TCC/LE

beta version 0.92.0.5     2023-12-04

Charles Dye

Purpose:

This plugin provides keystrokes to move the cursor left or right by arguments, and to delete arguments to the left or right of the cursor. By default it replaces the normal functions of the Ctrl-Left, Ctrl-Right, Ctrl-L, Ctrl-R, and Ctrl-Backspace keys (which TCC uses to move or delete by “words”). You can set different key bindings with the BYARGS command.

Installation:

To use this plugin, copy ByArgs.dll to some known location on your hard drive. (If you are still using the 32-bit version of Take Command, use ByArgs-x86.dll instead of ByArgs.dll.) Load the plugin with a PLUGIN /L command, for example:

plugin /l c:\bin\tcmd\test\byargs.dll

If you copy this file to a subdirectory named PlugIns within your Take Command program directory, the plugin will be loaded automatically when TCC starts.

Using ByArgs:

While composing a command line, press any of the hotkeys to move the cursor or delete text by arguments, rather than by words:

Function:Default binding:
Move the cursor left by one argumentCtrl-Left
Move the cursor right by one argumentCtrl-Right
Delete the argument to the left of the cursorCtrl-L
Delete the argument to the right of the cursorCtrl-R and Ctrl-Backspace

When looking for arguments, the plugin considers double quotes and the brackets around function arguments (functions have their own argument lists with separate quoting.) If you remove one delimiter without removing its mate, for example by pressing Ctrl-L or Ctrl-R while the cursor is in the middle of a quoted argument, then the way the plugin parses the modified command line may seem strange….

ByArgs command:

This new command allows you to display or change settings for the ByArgs plugin. The syntax is:

BYARGS /ML:key /MR:key /DL:key /DR:key /L /R /S

/ML:keySet the hotkey(s) to move the cursor left one argument.
/MR:keySet the hotkey(s) to move the cursor right one argument.
/DL:keySet the hotkey(s) to delete the argument to the left of the cursor.
/DR:keySet the hotkey(s) to delete the argument to the right of the cursor.
/LDumps a list of all supported hotkeys to standard output.
/RRestores the previously saved settings from the registry.
/SSaves the current settings to the registry as the new default.

Some examples of valid hotkeys are Alt-L, Ctrl-Alt-Left, and Alt-[. To disable any function, specify NONE as the hotkey. You can specify two hotkeys for a function; separate them with a comma, for example /DR:CTRL-ALT-R,CTRL-ALT-BKSP.

If no hotkeys are specified, the current settings will be displayed.

•  Note: Many of the hotkeys which you can set are already used by Take Command, TCC, or Windows itself. If you select a new hotkey and pressing it causes strange things to happen, try reverting to the default value. If that works as expected, then the hotkey you tested is already used for some other function — try a different one.

/S saves ByArgs’s current settings to the registry; they will be used by default the next time you load the plugin. /R attempts to restore any saved settings from the registry; if nothing has been saved, /R will have no effect. All settings are saved under the key HKCU\Software\JPPlugins\ByArgs.

Limits and Limitations:

The maximum depth of nested functions is 511. Exceeding this limit may cause Bad Things to happen.

Startup Message:

This plugin displays an informational line when it initializes. The message will be suppressed in transient or pipe shells. You can disable it for all shells by defining an environment variable named NOLOADMSG, for example:

set /e /u noloadmsg=1

Acknowledgments:

Avi Shmidman provided the original idea for this plugin.

Status and Licensing:

Consider this beta software. It may well have issues. Try it at your own risk. If you find a problem, you can report it in the JP Software support forum.

ByArgs is currently licensed only for testing purposes. I may make binaries and source code available under some free license once I consider it ready for use.

Download:

You can download the current version of this plugin from http://charlesdye.net/dl/byargs.zip.