by Andrew Johnston -- firstname.lastname@example.org
President, Johnston/Johnston Consulting, Macintosh Developer
Jersey Scientific's CMaster is an extension for Symantec's THINK C that is 90 percent enhancements to THINK C's rather austere editor, and 10 percent enhancements to THINK C's project environment. THINK C's editor has always been ripe for improvement, and CMaster provides a useful set of tools that either adds new functionality or improves access to existing features through an iconic palette.
CMaster is compatible with THINK C 4.0.x or newer and System 6.0.5 and newer, although some features require THINK C 5.0.x. I used CMaster version 1.0.9 on both a Mac IIcx with a 25 MHz Radius Rocket 040 accelerator and on a PowerBook 170, both under System 7.1.
CMaster patches itself into THINK C and intercepts several THINK C routines including GetNextEvent, which lets CMaster intercept many events before THINK C sees them. CMaster does this well, and this arrangement caused no crashes. CMaster loads when you open a THINK C project and uses around 77K of THINK C's application heap. You can disable CMaster by holding down the option key when opening a project file.
What it does -- On the left side of each editor window, CMaster icons provide navigation aids, searching, block commenting, multiple clipboards, general placemarkers, a function prototype generator, a function navigator, a pop-up function name menu, and a header file pop-up menu. In addition, CMaster has a slew of keyboard-only commands that join lines, split lines, etc. You can tie almost every CMaster action to a user-defined keyboard command, and you can modify CMaster's palette.
Several tools duplicate built-in THINK C features (e.g. markers and the headers files pop-up menus), but they seem to simplify access. However, CMaster uses its own parsing routines to determine the placement of the function markers that allow CMaster to update the function marker list when you type in a new function definition. No more running your source code through a "marker" application or explicitly marking functions within THINK C. CMaster also allows the use of the "#pragma mark xxx" syntax to insert custom non-function header markers into source code.
The more-interesting editor tools include multiple clipboards and multiple placemarkers. Up to four clipboards can be active at a time - each with both a global and local clipboard attached. You can optionally set up clipboards to use a push down stack that will hold multiple clipboard contents in a First-In-First-Out (FIF0) stack. CMaster also has up to four temporary placemarkers that temporarily mark a place holder in the current source file without being recorded in the resource fork for later use. Placemarkers show the line marked plus a few surrounding lines in a mini-window if you click in the lower half of the place marker icon. This is useful when you need to reference another function (or code segment) in the same file because it eliminates jumping back and forth and reduces the need for split windows in the THINK C editor.
Although the bulk of CMaster's functions are editor-related, I most appreciated the other functions. THINK C 5.0.x can take advantage of source code control information from Apple's MPW Projector tool. This was a great step forward for those of us who use both THINK C and MPW. I don't know how many times I was using MPW Projector for source code control and inadvertently changed the source using THINK C. CMaster has two window preferences settings that help out - "Make files outside project read-only" and "Make locked files read-only." Both options make the files appear to be Projector read-only files, which helps prevent stupid mistakes like accidentally changing a source file in the wrong environment. I find this especially helpful when working with the THINK Class Library (TCL), an ungodly amount of source code that I'm constantly looking at via the editor. These files are unprotected from inadvertent changes, the slightest of which can be next to impossible to locate and will render your application worthless. Also, the "Make locked files read-only" option protects you from trying to change a source file only to find out on saving that the file was locked. Don't laugh - it happens!
The "Open Project Resource File Warning" can also save you time. It warns you when you try to build or run a THINK project with the resource file still open in a resource editor. Normally THINK C would build or run the application without loading any resources, most likely resulting in a bus error when the application runs.
Problems -- The only flaky behavior I discovered was in the "Show Preceding Comments" option. This feature displays at the top of the window any comments directly before a function definition (and therefore its marker) when you select the marker for the function and scroll the window to show the function. This works well if there actually are comments before the function; however, if the comments sit between the function definition and the opening curly bracket, CMaster places the function definition line just out of view. Jersey Scientific indicated that they would fix the problem in the next update. Most people will find this feature useful since comment headers describing functions are commonly placed immediately preceding the function, and in fact, Symantec commented the TCL this way.
Improvements -- I asked if Jersey Scientific might add the capability to search MPW 411 style help files, which are generic text-only kind of open format help files so users can create their own help files. This kind of 411-lookup feature would provide some way to access custom help from within the THINK environment. Jersey Scientific mentioned that they were hard at work on a major upgrade of CMaster, but they don't think it will be ready to ship until later this year. (They noted that this is NOT an announcement, but rather that they were working on a new set of features that they hope will be CMaster 2.0.) This new version may have a feature that would let users write their own extensions to CMaster that would support MPW 411 files. Interesting thought - an extension to an extension of THINK C!
CMaster could take better advantage of color. Jersey Scientific is aware of this deficiency and discussions with them indicate that the next release will better support color. I would particularly like to see CMaster use color styles for functions, keywords, and comments. This can greatly increase the readability of source code, and although it would add significantly to CMaster's parsing responsibilities, high-end development tools like ACIUS ObjectMaster already have such capabilities.
Overall -- This is not a complete discussion of CMaster's every feature. I only mentioned the main ones and those that I found particularly interesting. Almost all the features have some kind of option key variant that makes them more useful than it seems at first glance.
Jersey Scientific responded quickly to email queries and even answered their tech support line. They post CMaster updates in the THINK C file section on CompuServe, and from there to sumex-aim.stanford.edu for anonymous FTP. Jersey Scientific prefers that you use the CompuServe address if possible, especially from the Internet.
Is CMaster worth $69.95, or about a third of THINK C's street price? It significantly enhances the THINK C environment in ways that will probably save you time and aggravation. If you use THINK C on a weekly basis, CMaster is necessary. If you use THINK C daily you will save yourself $69.95 worth of your time in the first week.
The real question is how much, if any, of this functionality will be included in THINK C 6.0, which is rumored for release this spring (MacWEEK 15-Feb-93). Jersey Scientific cannot, for non-disclosure reasons, say anything about even the existence of THINK C 6.0, much less its features. Jersey Scientific did say that they will do their best to release a compatible version as soon as possible after Symantec ships a major upgrade to THINK C. This will most likely be version 1.2, and will resemble 1.0.9 in terms of features, although it will drop support for THINK C 4.x (THINK C 5.x and 6.x will be supported). New users can expect the price of CMaster to increase with version 1.2, but upgrades will be provided at nominal cost.
CMaster -- $69.95
Jersey Scientific, Inc.
545 Eighth Avenue
New York, NY 10018