MULTI: Editing Files and Configuring the IDE



Similar documents
FOR WINDOWS FILE SERVERS

TIBCO Hawk SNMP Adapter Installation

Avaya Network Configuration Manager User Guide

Infor ERP BaanIV / Baan 5.0 / LN 6.1. User's Guide for Worktop 2.4

Before you can use the Duke Ambient environment to start working on your projects or

Attix5 Pro Server Edition

Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.

Wakanda Studio Features

Microsoft Access 2010 Part 1: Introduction to Access

Hypercosm. Studio.

Horizon Debt Collect. User s and Administrator s Guide

For Introduction to Java Programming, 5E By Y. Daniel Liang

Attix5 Pro Server Edition

Word 2007: Basics Learning Guide

MICROSOFT OFFICE ACCESS NEW FEATURES

Quest ChangeAuditor 5.1 FOR ACTIVE DIRECTORY. User Guide

TIBCO Fulfillment Provisioning Session Layer for FTP Installation

USER MANUAL APPLICATION MONITOR. Version March 2015

Personal Call Manager User Guide. BCM Business Communications Manager

ChangeAuditor 6.0. Web Client User Guide

EMC NetWorker Module for Microsoft Exchange Server Release 5.1

IAR Embedded Workbench


Attix5 Pro. Your guide to protecting data with Attix5 Pro Desktop & Laptop Edition. V6.0 User Manual for Mac OS X

IAR Embedded Workbench

TIBCO ActiveMatrix BPM Integration with Content Management Systems Software Release September 2013

Application Servers - BEA WebLogic. Installing the Application Server

ActiveRoles 6.8. Web Interface User Guide

WebLOAD IDE User's Guide Version 8.0

MAS 500 Intelligence Tips and Tricks Booklet Vol. 1

For Active Directory Installation Guide

Desktop, Web and Mobile Testing Tutorials

Ohio University Computer Services Center August, 2002 Crystal Reports Introduction Quick Reference Guide

EMC Documentum Content Services for SAP iviews for Related Content

Studio 5.0 User s Guide

Module One: Getting Started Opening Outlook Setting Up Outlook for the First Time Understanding the Interface...

-lead Grabber Business 2010 User Guide

DS-5 ARM. Using the Debugger. Version 5.7. Copyright 2010, 2011 ARM. All rights reserved. ARM DUI 0446G (ID092311)

SHARP Digital Signage Software Pro PN-SS05 OPERATION MANUAL

Context-sensitive Help Guide

User Guide QAD Customer Relationship Management. Introduction Sales Management Marketing Management Customer Service

VERITAS NetBackup Microsoft Windows User s Guide

NetBackup Backup, Archive, and Restore Getting Started Guide

Using Example Projects, Code and Scripts to Jump-Start Customers With Code Composer Studio 2.0

HP Quality Center. Software Version: Version Control Add-in Guide

Server Manual. For Administrators of Cameleon Version 4

EMC SourceOne for Microsoft SharePoint Storage Management Version 7.1

InfoPrint 4247 Serial Matrix Printers. Remote Printer Management Utility For InfoPrint Serial Matrix Printers

NETWORK PRINT MONITOR User Guide

Moxa Device Manager 2.3 User s Manual

Python for Series 60 Platform

EMC Documentum Webtop

The Interact Xpress User Guide

FaxFinder Fax Servers

BBI Quick Guide HP GbE2c L2/L3 Ethernet Blade Switch Version 5.1

NDA ISSUE 1 STOCK # CallCenterWorX-Enterprise IMX MAT Quick Reference Guide MAY, NEC America, Inc.

VERITAS Backup Exec TM 10.0 for Windows Servers

Getting Started Guide. Chapter 14 Customizing LibreOffice

StrikeRisk v6.0 IEC/EN Risk Management Software Getting Started

Option Network Management Software for UPS UNMS II

Parallels Desktop for Mac

Avalanche Remote Control User Guide. Version 4.1.3

VERITAS NetBackup 6.0

Appendix A How to create a data-sharing lab

Tips and Tricks SAGE ACCPAC INTELLIGENCE

HP Intelligent Management Center v7.1 Virtualization Monitor Administrator Guide


Web Application User Guide

Managing Code Development Using CCS Project Manager

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition

vrealize Business User Guide

BIGPOND ONLINE STORAGE USER GUIDE Issue August 2005

Cisco Jabber for Windows 10.5 Advanced Features Guide

Intel System Event Log (SEL) Viewer Utility

14.1. bs^ir^qfkd=obcib`qflk= Ñçê=emI=rkfuI=~åÇ=léÉåsjp=eçëíë

Interworks. Interworks Cloud Platform Installation Guide

Call Center - Agent Application User Manual

DiskPulse DISK CHANGE MONITOR

Citrix EdgeSight for Load Testing User s Guide. Citrx EdgeSight for Load Testing 2.7

User's Guide. Using RFDBManager. For 433 MHz / 2.4 GHz RF. Version

UNDELETE 7.0 USER GUIDE

MICROSOFT OFFICE OUTLOOK LEVEL 1

Python Documentation & Startup

OFFICE KEYBOARD (MT1210 & MT1405) OFFICE FEATURES

HyperFS PC Client Tools

Introduction to MS WINDOWS XP

13 Managing Devices. Your computer is an assembly of many components from different manufacturers. LESSON OBJECTIVES

Yosemite Server Backup Installation Guide

Avalanche Enabler 5.3 User Guide

Teamstudio USER GUIDE

Rational Rational ClearQuest

BLUECIELO MERIDIAN ASSET MANAGEMENT MODULE 2014

How To Install Caarcserve Backup Patch Manager (Carcserver) On A Pc Or Mac Or Mac (Or Mac)

Microsoft Visual Studio Integration Guide

Copyright 2012 Trend Micro Incorporated. All rights reserved.

Evaluator s Guide. PC-Duo Enterprise HelpDesk v5.0. Copyright 2006 Vector Networks Ltd and MetaQuest Software Inc. All rights reserved.

EMC SourceOne SEARCH USER GUIDE. Version 6.8 P/N A01. EMC Corporation Corporate Headquarters: Hopkinton, MA

Module 1: Getting Started With Altium Designer

How to Obtain an OPC License--5. Creating a System Code 5 Entering an Authorization Code 6. Getting Started with SNMP Editor--7

Excel 2003 Tutorial I

Transcription:

MULTI: Editing Files and Configuring the IDE Green Hills Software, Inc. 30 West Sola Street Santa Barbara, California 93101 USA Tel: 805-965-6044 Fax: 805-965-6343 www.ghs.com

DISCLAIMER GREEN HILLS SOFTWARE, INC., MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. Further, Green Hills Software, Inc., reserves the right to revise this publication and to make changes from time to time in the content hereof without obligation of Green Hills Software, Inc., to notify any person of such revision or changes. Copyright 1983-2005 by Green Hills Software, Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without prior written permission from Green Hills Software, Inc. Green Hills, the Green Hills logo, CodeBalance, GMART, GSTART, INTEGRITY, and MULTI are registered trademarks of Green Hills Software, Inc. AdaMULTI, EventAnalyzer, G-Cover, GHnet, GHnetLite, Green Hills Probe, Integrate, ISIM, PathAnalyzer, Quick Start, ResourceAnalyzer, Safety Critical Products, Slingshot, SuperTrace Probe, TimeMachine, and TotalDeveloper are trademarks of Green Hills Software, Inc. All other company, product, or service names mentioned in this book may be trademarks or service marks of their respective owners. PubID: 10386 November 15, 2005

Contents 1 Introduction 1 The MULTI Integrated Development Environment 2 The MULTI Launcher 4 MULTI Workspaces 5 The MULTI 4.0 Document Set 6 About This Manual 7 Online Help 8 ViewingHelponWindowsSystems 8 ViewingHelponUNIXSystems 9 Conventions Used in This Book 10 Part I MULTI Editing Tools 2 The MULTI Editor 15 The Editor GUI 17 Editor Toolbar 17 File and and Procedure Fields 18 Shortcut Menu 18 Status Bar 19 Getting Started with the Editor 20 Starting the Editor 20 Overview of Editor Features 21 Navigating in Files 22 Using References and Prototypes 22 Searching in the Editor 25 Incremental Searching 26 Interactive Searching Using the Search Dialog Box 27 Searching in Files 31 Using the GoTo Dialog Box 33 Working with Code 35 Indenting Code 35 Working with Comments 37 Highlighting the Boundaries of the Current Block of Code 38 Green Hills Software, Inc. i

Part II Contents Working with Columns 38 Working with Multiple Files 40 Merging Files 40 Comparing Files 44 Configuring the Editor 45 Customizing the Editor GUI 45 Configuring the Editor for a Programming Language 45 The index.gsc Configuration File 46 The language.gsc Syntax Definition Files 48 Configuring Auto-Complete 51 3 Editor GUI Reference 55 The File Menu 56 The Edit Menu 59 The View Menu 61 The Per File Settings Dialog Box 63 The Block Menu 65 The Tools Menu 67 The Version Menu 70 The Config Menu 72 The Windows Menu 73 The Help Menu 73 UNIX Dialog Boxes 74 File Chooser Dialog Box (UNIX) 74 The Print Setup Dialog Box 76 4 The MULTI Hex Editor 79 Using the Hex Editor 80 Hex Editor Menus and Keyboard Shortcuts 81 Search and Goto in the Hex Editor 82 Managing Files 5 Using MULTI Workspaces and Shortcuts 85 Creating a Workspace 87 Copying and Moving Workspaces 88 ii MULTI: Editing Files and Configuring the IDE

Contents Running Actions and Action Sequences 88 Creating or Modifying an Action Sequence 89 Creating or Modifying an Action 90 Creating MULTI Shortcuts 92 Managing Processes 92 The Launcher GUI 92 Opening Workspaces 93 The Launcher Toolbar 94 The Detail Pane 97 Miscellaneous Dialogs and the Progress Window 98 The Launcher Menus 100 6 Using Version Control with MULTI 107 Configuring Version Control in MULTI 108 Using Version Control with the MULTI Editor and Builder 111 Version Control Options from the Editor 111 Version Control Options from the Builder 112 Automatic Checkout 113 Show Last Edit 113 Revert to a Previous Version of a File 114 Integrating with MULTI Version Control (MVC) 115 Using MVC 116 Entering MVC Commands 116 Version Numbers and Branching 118 MVC Date Format 119 Integrating with Third-Party Version Control Systems 120 Integrating with ClearCase 120 Integrating with CVS 121 Integrating with PVCS 121 Integrating with RCS 123 Integrating with SourceSafe 123 Integrating with a Custom Version Control System 126 7 Version Control Tools 129 The Checkout Browser 130 Starting the Checkout Browser 131 Using the Checkout Browser 131 Green Hills Software, Inc. iii

Contents Features and Issues Specific to CVS 138 Using the Checkout Editor 139 The History Browser 141 Using the History Browser 141 History Browser File Menu 142 History Browser Shortcut Menu 143 The Diff Viewer 144 Opening the Diff Viewer from the Command Line 145 Using the Diff Viewer 146 Part III Configuring the MULTI IDE 8 Configuring and Customizing MULTI 153 Setting Configuration Options 154 Using the Options Dialog Box 155 Using the configure Command 155 Using Configuration Files 156 Saving Configuration Settings 157 Loading Configuration Files 158 Clearing Configuration Settings 159 Creating Custom Functionality Using Scripts and Macros 159 Using Startup Files 159 Customizing the Graphical User Interface (GUI) 162 Configuring and Customizing Toolbar Buttons 164 Creating and Working with Icons 165 Configuring and Customizing Menus 166 Opening and Accessing Menus 168 Customizing Keys and Mouse Clicks 169 Key and Mouse Locations 171 Key and Mouse Command Special Sequences 172 Inserting a Character Blocked By a Custom Key Binding 174 Configuring Window Docking 174 UNIX Docking Limitations 175 Configuring File Extensions 177 Extension Mapping Files 177 File Format 177 iv MULTI: Editing Files and Configuring the IDE

Contents Using a Custom Web Browser with UNIX 180 9 Configuration Options 181 General Configuration Options 183 General Options Tab 183 Other General Configuration Options 197 Builder Configuration Options 201 Debugger Configuration Options 203 Debugger Options Tab 203 Other Debugger Configuration Options 213 MULTI Editor Configuration Options 222 MULTI Editor Options Tab 222 Other MULTI Editor Options 229 Session Configuration Options 231 Colors Configuration Options 235 More Color Options Dialog Box 239 Color Chooser 239 Deprecated Configuration Options 240 Part IV License Administration 10 Licensing Overview 245 License Types 246 About Named User Licensing and Administration 247 Green Hills License Manager Device 248 Licensing Procedures 249 Important Considerations for License Servers 250 License Server Compatibility 252 Server Codes 252 Using a Dongle 254 Dongle Installation 254 Troubleshooting Dongle Problems 255 11 License Administration with the MULTI License Administrator 257 Opening the MULTI License Administrator 258 The MULTI Licensing Wizard 258 Install or Configure License Server 260 Green Hills Software, Inc. v

Contents Server Settings Dialog Box 261 Requesting Licenses 262 The MULTI License Administrator Window 263 File Menu 265 License Menu 265 Legacy Tools Menu 266 Shortcut Menus 266 Configure Dialog Box 268 Configuration Tools Menu 269 Logging Menu 269 Environment Variables 270 GHSlm Environment Variables 272 ElanLM Environment Variables 272 12 Green Hills License Manager Device 275 Connecting the License Manager Device to the Network 276 Accessing MULTI License Administrator 277 License Manager Device Web Interface 277 Status Page 278 Configuration Page 281 License Page 286 Help Page 291 Client Configuration 292 Client TCP Port 292 Specifying a License Manager Device 292 Specifying the License Manager Type 294 Redundant License Manager Devices 294 Redundant Server Theory of Operation 294 13 GHSlm: Green Hills License Manager 297 GHSlm License Server Installation for Windows 299 Installing GHSlm License Server Software 299 GHSlm License Server Startup and Shutdown for Windows 300 GHSlm License Server Installation for UNIX 301 Installing GHSlm License Manager Software on UNIX 301 vi MULTI: Editing Files and Configuring the IDE

Contents GHSlm License Server Startup for UNIX and Linux 301 Configuring the GHSlm License Manager Software 302 GHSlm License Administration Utilities 303 Managing User Lists with glicusers 304 Controlling the License Server with wrap_svc 306 Listing Licenses with find_ghs_licenses 307 Log Summary with lic_log_summary 308 Installing Licenses with update 310 14 ElanLM: Legacy License Manager 313 Important Notes on Using ElanLM 314 ElanLM License Server Installation for Windows 315 Installing ElanLM License Server Software 315 ElanLM License Server Startup for Windows 315 Startup Settings 316 ElanLM License Administration with Windows Utilities 318 Find Available Licenses 319 License Manager Reports with WlmRpt 321 ElanLM License Server Installation for UNIX 323 Installing ElanLM License Manager Software 323 ElanLM License Server Startup for UNIX 323 UNIX Options for ghs_elmd 324 License Administration with Command Line Utilities 328 Administrative Control with elmadmin 329 License Manager Alerts with elmalert 332 License Manager Reports with elmrpt 334 License Activity Report with elmusage 337 Version Information with elmver 337 Log Summary with lic_log_summary 338 Resource Files 339 Restricting the Domain 340 Reserving, Excluding, and Holding Licenses 341 Troubleshooting 344 License Server Not Responding ( Unable to Get License for... ) 344 If You Experience License Server Delays 350 Green Hills Software, Inc. vii

Contents Part V Appendices A Editor Commands 357 Navigation Commands 358 File Commands 362 Undo/Redo Commands 366 Clipboard Commands 367 Text Deletion Commands 370 Selection Commands 371 Continue Selection Commands 374 Search Commands 375 Auto-Completion Commands 377 Block Commands 378 Indentation Commands 379 Insert Commands 380 Tools Commands 382 Tag Commands 383 Version Control Commands 385 Configuration Commands 387 Drag-and-Drop Commands 389 Help Commands 390 Mode Commands 391 if Conditional Commands 392 Miscellaneous Commands 394 Deprecated Commands 395 B MVC Command Reference 397 C Third-Party Tools 403 Third-Party Version Control Systems 404 Third-Party Editors 404 Using the Editor with Third-Party Tools 404 D Default Key and Mouse Bindings 407 Default Keyboard Shortcuts 408 viii MULTI: Editing Files and Configuring the IDE

Contents Navigating 408 Opening, Saving, and Closing 410 Undo/Redo 411 Cutting, Copying, and Pasting 411 Deleting Text 412 Selecting Text 413 Searching 415 Auto-Completion 416 Indenting Text 416 Version Control 417 Miscellaneous 417 Default Mouse Bindings 418 First (Left) Mouse Button 418 Second (Middle) Mouse Button 419 Third (Right) Mouse Button 420 Index 421 Green Hills Software, Inc. ix

Contents x MULTI: Editing Files and Configuring the IDE

Chapter 1 Introduction This Chapter Contains: The MULTI Integrated Development Environment The MULTI Launcher The MULTI 4.0 Document Set About This Manual Online Help Conventions Used in This Book

1. Introduction This chapter provides an overview of the MULTI Integrated Development Environment and its documentation set, and then gives a brief introduction to this book, which describes the MULTI tools that are used to edit files and manage projects. The MULTI Integrated Development Environment MULTI is a complete Integrated Development Environment (IDE) designed especially for embedded systems engineers to assist them in analyzing, editing, compiling, optimizing, and debugging embedded applications. The MULTI IDE includes graphical tools for each part of the software development process. The following tools can be launched from within the IDE or as separate stand-alone programs: IDE launcher MULTI Launcher (mstart) The gateway to the MULTI IDE, which allows you to quickly launch any of the primary MULTI tools, access open windows, and manage MULTI workspaces Editing tools MULTI Editor (me) A graphical editor for modifying text files Checkout Browser (mcobrowse) A graphical viewer for files managed under a version control system Diff Viewer (diffview) A graphical viewer that displays differences between two text files Hex Editor (mhexedit) A graphical editor for modifying binary files Building tools MULTI Builder (mbuild) A graphical interface for managing and building projects CodeBalance (codebalance) A graphical interface for automating the process of optimizing an executable for size or speed INTEGRATE (integrate) A graphical utility for configuring tasks, connections, and kernel objects across multiple address spaces when using the INTEGRITY RTOS 2 MULTI: Editing Files and Configuring the IDE

The MULTI Integrated Development Environment Linker Directives File Editor (mldedit) A graphical editor for creating and modifying linker directives files Debugging tools MULTI Debugger (multi) A graphical source-level debugger EventAnalyzer (mevgui) A graphical viewer for monitoring the complex real-time interactions of an embedded RTOS such as INTEGRITY or ThreadX ResourceAnalyzer (wperf) A graphical viewer for monitoring the CPU and memory usage of an embedded system running the INTEGRITY RTOS Script Debugger (mscriptdbg) A graphical debugger for writing, recording, and debugging scripts containing MULTI commands Serial Terminal (mterminal) A serial terminal emulator for connecting to serial ports on embedded devices Miscellaneous and administrative tools Bug Report (gbugrpt) A utility for providing system configuration and tool version information to the Green Hills support staff Green Hills Probe Administrator (gpadmin) A graphical interface for configuring and managing Green Hills Debug Probes (Slingshots, Green Hills Probes, and/or SuperTrace Probes) Graphical Utilities (wgutils) A collection of utilities for analyzing and performing various operations on object files, libraries, and executables produced with the Green Hills toolchain MULTI License Administrator (mlmadmin) A graphical utility for managing Green Hills tools licenses Green Hills Software, Inc. 3

1. Introduction The MULTI Launcher The MULTI Launcher (mstart) provides a convenient way to launch frequently used tools, to create new or access recently used files and projects, and to manage MULTI workspaces. All of the main MULTI components can be accessed using the following buttons: Runs a shortcut or an action sequence in the current workspace. Also allows you to create a new workspace or create or edit a shortcut. Opens the Builder on a recent or new project. Opens the Debugger on a recent or new executable. Opens the Editor on a recent or new file. Opens the Checkout Browser on a recent or new checkout. Opens the Connection Organizer or a recent or new target connection. Opens a Serial Terminal using a recent or new connection. Opens the EventAnalyzer (licensed separately). Opens the ResourceAnalyzer (licensed separately). Closes the MULTI Launcher (UNIX only by default). Shows/hides the detail pane of the Launcher. You can also launch the Green Hills License Administrator and (if installed) the Green Hills Probe Administrator from the Utilities menu. During development, you can use the MULTI Launcher as a convenient centralized window manager. You can access any of your open MULTI windows from the Windows menu of the Launcher. 4 MULTI: Editing Files and Configuring the IDE

The MULTI Launcher MULTI Workspaces The MULTI Launcher allows you to create and use workspaces. AMULTI workspace is a virtual area where the tools, files, and actions required for a particular project can be organized, accessed, and executed. A workspace is typically created for each top-level project and includes a working directory and a group of related actions for example, opening a project in the MULTI Builder, connecting to a target, or performing a shell command. Actions are grouped into action sequences, so that a single mouse click can perform all the actions in the specified action sequence. For more information, see Chapter 5, Using MULTI Workspaces and Shortcuts. Green Hills Software, Inc. 5

1. Introduction The MULTI 4.0 Document Set The primary documentation for using MULTI is provided in the following books: MULTI: Getting Started Describes how to install MULTI and obtain a license, and takes you through creating, building, and debugging an example project. MULTI: Editing Files and Configuring the IDE Describes how to use the MULTI Editor, how to use a version control system with MULTI, how to use the MULTI Launcher, and how to configure and license the MULTI IDE. MULTI: Building Applications Describes how to use the MULTI Builder and compiler drivers and the tools that compile, assemble, and link your code. Also describes the Green Hills implementation of supported high-level languages. MULTI: Configuring Connections Describes how to set up your target debugging interface for use with MULTI and how to configure connections to your target. MULTI: Debugging Describes how to use the MULTI Debugger and its associated tools. These books, and any others you may have received (for example, for the INTEGRITY or ThreadX operating system, or for the Green Hills Debug Probes) are available in the following formats: A printed book Online help, accessible from most MULTI windows via the Help Manuals menu (see Online Help on page 8) An electronic PDF, available in the manuals subdirectory of your installation Note New or updated information may have become available while this book was in production. For additional material that was not available at press time, or for revisions that may have become necessary since this book was printed, please check your CD-ROM for Release Notes, README files, and other supplementary documentation. 6 MULTI: Editing Files and Configuring the IDE

About This Manual About This Manual This manual contains four parts: Part I: MULTI Editing Tools Contains information about using the MULTI Editor, a graphical interface for editing source code, and the MULTI Hex Editor, which is used for editing binary files. Includes descriptions of all Editor menus and their equivalent commands, and instructions about configuring the Editor for your programming language. Part II: Managing Files Contains information about using the MULTI Launcher, and configuring and using version control to track changes to your files. Includes instructions for using MULTI Version Control (MVC) or integrating your existing version control system. Also provides information about the following version control tools included with MULTI: the History Browser, Checkout Browser, anddiff Viewer. Part III: Configuring the MULTI IDE Contains information about configuring the integrated development environment to help you work more efficiently. You can customize the appearance and functionality of many GUI buttons, menus, keyboard shortcuts and mouse bindings. Part IV: License Administration Contains information about installing and administering Green Hills licenses, including how to use the Green Hills Licensing Device. Green Hills Software, Inc. 7

1. Introduction Online Help The MULTI online help system provides three different types of online help: Full online manuals You can access an indexed hypertext version of any MULTI manual by selecting it from the list that appears in the Help Manuals menu. Context-sensitive help Many MULTI windows and dialog boxes are linked to specific sections of the online manuals. To view the page in online help that documents an active window or dialog box: (Windows) Press F1. (UNIX) Press F1 or Help. If you are using the MULTI Editor, you can also open context-sensitive help about a button or a menu item by selecting Help Identify and then clicking the button or selecting the menu item. Debugger command help You can obtain help information about a specific MULTI Debugger command by typing help command_name in the Debugger command pane. This will open the online version of the MULTI: Debugging book on the section that documents the specified command. You can also type usage command_name to print to the command pane the basic syntax of the specified command. Viewing Help on Windows Systems Windows systems display online help via the Microsoft HTML Help viewer. You can view only one manual at a time with the HTML Help viewer. There are two panes in the HTML Help viewer. The right-hand pane displays the contents of a selected help page. You can click any underlined link that appears in right-hand pane to jump to pages about other related topics. The left-hand pane provides the following three navigation tabs: Contents Displays the chapter and section headings for the manual being viewed. Click a plus or minus icon to show or hide headings for embedded sections. Click a heading to display the associated help page in the right-hand pane. Index Displays index entries for the manual. Double-click an index entry to display its help page in the right-hand pane. 8 MULTI: Editing Files and Configuring the IDE

Online Help Search Provides an interface that allows you to search for specific words in the manual. Enter a word or phrase in the text box and click List Topics to display a list of pages related to your search string. Double-click any entry in the list to display the entry s help page in the right-hand pane. Viewing Help on UNIX Systems Depending on your specific UNIX system, MULTI will automatically choose one of the following two methods for viewing online help: Oracle Help for Java Displays hypertext version of manuals, including tables of contents and index entries, and provides full text searching across multiple manuals, with the ability to sort and rank search results. This viewer may take up to 30 seconds to initialize and is only available on systems running Red Hat Linux 7.1 or higher, Solaris 2.6 or higher, or HP-UX 10.20 or 11.x. Other UNIX systems must use browser-based online help. If problems occur when MULTI is attempting to start the Oracle Help for Java application, you will see a message prompting you to use browser-based help (see below). The Java Runtime Environment that is included with MULTI has been configured to use fonts common to most X Window servers. However, some X Window servers may not display Oracle Help for Java properly. To configure fonts for the Java Runtime Environment, edit the font.properties file that is located in the jre/lib directory of your MULTI installation (for more information, see the Sun Microsystems Java web site). Web Browser Help Displays hypertext version of manuals, including tables of contents and index entries. In GUI mode, netscape is the default browser. If netscape is installed on your system and the executable is in your path, no further configuration should be necessary. In non-gui mode, a copy of lynx running inside of an xterm will be used as the default browser. If you have xterm in your path, no further configuration should be necessary. For information about using an alternate web browser, see Using a Custom Web Browser with UNIX on page 180. Note To change your online help settings, choose Config Options General tab, then click Help. Green Hills Software, Inc. 9

1. Introduction Conventions Used in This Book All Green Hills documentation assumes that you have a working knowledge of your host operating system and its conventions, including its command line and graphical user interface (GUI) modes. For example, you should know how to use basic commands, how to open, save, and close files, and how to use a mouse and standard menus. Green Hills documentation uses a variety of notational conventions to present information and describe procedures. These conventions are described below. Convention Meaning Examples bold type italic type ellipsis (...) (in command line instructions) greater than sign ( > ) Indicates a: Filename or pathname Command Option Window title Button name Menu name or menu choice Indicates that the user should replace the text in italics with an appropriate argument, command, filename, or other value. Indicates that the preceding argument or option can be repeated zero or more times. Represents a prompt. Your actual prompt may be a different symbol or string. The > prompt helps to distinguish input from output in examples of screen displays. C:\MyProjects setup command -G option the Task window the Browse button the File menu -o filename debugbutton [name] > print Test Test 10 MULTI: Editing Files and Configuring the IDE

Conventions Used in This Book Convention Meaning Examples pipe ( ) (in command line instructions) square brackets ( [ ] ) (in command line instructions) Indicates that one (and only one) of the parameters or options separated by the pipe or pipes should be specified. Indicate optional arguments, commands, options, and so on. You can either include or omit the enclosed elements. The square brackets should not appear in your actual command. help [command group] (The square brackets indicate that an argument is optional. If an argument is specified, however, it must be either a command or a group.).macro name [list] The following command description demonstrates the use of some of these typographical conventions. gxyz [-option] filename The formatting of this command indicates that: The command gxyz should be entered as shown. The option -option should either be replaced with one or more appropriate options or be omitted. The word filename should be replaced with the actual filename of an appropriate file. The square brackets and the ellipsis should not appear in the actual command you enter. Green Hills Software, Inc. 11

1. Introduction 12 MULTI: Editing Files and Configuring the IDE

Part I MULTI Editing Tools

Chapter 2 The MULTI Editor This Chapter Contains: The Editor GUI Getting Started with the Editor Navigating in Files Working with Code Working with Multiple Files Configuring the Editor

2. The MULTI Editor This chapter provides an introduction to the MULTI Editor, which you can use to create and modify text files. To open the Editor from the Launcher, do one of the following: Click the Edit button ( ). Select File Open Editor. The main components of the Editor graphical user interface (GUI) are: Title Bar Contains the path and filename of the file displayed in the current Editor window. Menu Bar Contains menus to access Editor functions. All menus and menu items are described in detail in Chapter 3, Editor GUI Reference. Editor Toolbar Contains buttons for some of the most common Editor actions. For more information, see Editor Toolbar on page 17. File and Procedure Fields Contains fields that provide quick access to files, procedures and line numbers. For more information, see File and and Procedure Fields on page 18. 16 MULTI: Editing Files and Configuring the IDE

The Editor GUI Source Pane Displays the text of the active document. Status Bar Displays information about document status and cursor position. For more information, see Status Bar on page 19. The Editor GUI In addition to the menu system described in Chapter 3, Editor GUI Reference, the following items in the Editor GUI provide easy access to important menu items and common Editor actions. Editor Toolbar The Editor Toolbar contains the following buttons that provide access to some of the most common Editor actions: (Open) Opens the Edit File dialog box, which is used to select a file toopeninthe Editor. (Save) Saves the current file. (Cut) Deletes the current selection and places it on the clipboard. (Copy) Copies the current selection to the clipboard. (Paste) Pastes the contents of the clipboard. (Undo) Undoes the last edit. (Redo) Re-implements the last edit that was undone. (Search) OpenstheSearch dialog box, which is used to conduct an interactive search (see Interactive Searching Using the Search Dialog Box on page 27). (Goto) OpenstheGoTo dialog box, which is used to go to a file, line or procedure (see Using the GoTo Dialog Box on page 33). (Previous File) Switches to the previous open file in the Editor s stack. (Next File) Switches to the next open file in the Editor s stack. Green Hills Software, Inc. 17

2. The MULTI Editor (Save and Close) Saves files without prompting, then quits the Editor. (Close File) Closes the current file. (Quit) Quits the Editor. The presence or absence of this button on the toolbar is a configurable option (see the configuration option Display close (x) buttons in General Options Tab on page 183). File and and Procedure Fields Below the toolbar are three fields you can use to navigate within and between files. File This field displays the name and path of the file you are currently editing. You can type another filename in the field to open it in the Editor window. The drop-down menu provides access to your most recently used files. Files opened in the current Editor session appear at the top, and other recently used files appear below. Procedure The drop-down menu displays all procedures defined in the file. You can use this box to go to a procedure in the file. Select a procedure from the drop-down menu, or type a procedure name in the field. This field only appears when you are editing C or C++ files. As you type characters in this field, the Editor will auto-complete with procedures that match the characters you type. You can type part of a procedure name, then select the drop-down menu to view a list of all procedures that match the string you have entered. If you are uncertain about a procedure s name, you can use * and? wildcard characters. Line Number This box displays the line number the cursor is on. To go to a specific line in the file, type the line number in this field, and press Enter. Shortcut Menu You can right-click anywhere in the Editor source pane to open a Shortcut Menu of common editing operations. The shortcut menu includes some or all of the following items, depending on the cursor s position and the type of file that is being edited. 18 MULTI: Editing Files and Configuring the IDE

The Editor GUI Cut, Copy, Paste and Undo For information, see The Edit Menu on page 59. Go To Definition For information, see Go To a Definition on page 23. Go To Declaration For information, see Go To a Declaration on page 24 Browse References For information, see Browse References on page 24. Generate Cross References For information, see Generate or Regenerate Cross References on page 25. Regenerate Cross References For information, see Generate or Regenerate Cross References on page 25. Show Last Edit For information, see The Version Menu on page 70. Open New Editor Window For information, see The File Menu on page 56. Comment, Uncomment and Indent For information, see The Block Menu on page 65. Properties For information, see The View Menu on page 61. Status Bar The Status Bar is located at the very bottom of the Editor window. It displays the following information: Status box The left corner of the status bar displays status, usage, and error messages. For example, when you press Ctrl + F (see Incremental Searching on page 26), the left corner of the Status Bar displays the search text as you type it. Cursor position indicator Displays the current line and column position of the cursor. Read-only window indicator A stop sign appears near the right corner of the status bar if the window permission for the current file is read-only. Change dot A small red star appears near the right corner of the status bar if changes have been made to the file since the last time it was saved. Green Hills Software, Inc. 19

2. The MULTI Editor Version control status The letters VC appear in the right corner of the status bar if the current file is under version control. The letters will be red if the file has been modified. Otherwise they will be black. Getting StartedwiththeEditor This section describes how to start the Editor and provides information about Editor features. Starting the Editor Thereareanumber of ways to start the Editor, either as a stand-alone editing program, or from other MULTI tools. Starting the Editor from the Launcher To start the Editor from the Launcher, do one of the following: Click the Edit button ( ). Select File Open Editor. Starting the Editor as a Stand-Alone Program To start the Editor as a stand-alone program, run the following executables from a command line prompt. A filename can be used as a command line argument to open a specific file. Windows The executable is me.exe, which is located in the Green Hills directory. The default directory for a Green Hills installation is: c:\ghs\target_release_number. For example, c:\ghs\ppc40 is the default directory for 4.0 release for the Power PC. UNIX Theexecutableisme, which is located in the Green Hills directory. The default directory for a Green Hills installation is: /usr/green/host. For example, /usr/green/solaris2. 20 MULTI: Editing Files and Configuring the IDE

Getting Started with the Editor Starting the Editor from the Builder To start the Editor while using the Builder, do one of the following: Select a file, then click the Edit button ( )toopenitintheeditor. Select one or more files in the source pane, then select Edit Edit Selected Files, or right-click and select Edit from the shortcut menu. Double-click a text filename in the source pane. Double-click an error or warning in the Progress window to open the source file in the Editor with the cursor placed on the line with the error. Starting the Editor from the Debugger To start the Editor while using the Debugger, do one of the following: Click the Edit button ( ). Right-click in the Source pane and select Edit. Use edit commands in the Debugger command pane. For more information about edit command options that open files in the Editor, see the MULTI: Debugging book. When you start the Editor from the Debugger, the Debugger creates temporary copies of the source files so you can continue to debug your program while looking at the original source code. Changes that you make in the Editor affect the actual files and not these temporary files which are deleted when you exit the Debugger. Overview of Editor Features The Editor provides powerful features to help you work with your files. Details about the following advanced features are provided in this book: Navigating in Files The Editor can automatically obtain function prototypes and cross reference information, and provides a number of search options. For more information, see Navigating in Files on page 22. Working with Code The Editor provides tools and keyboard shortcuts that are helpful when editing source code. For more information, see Working withcode onpage35. Green Hills Software, Inc. 21

2. The MULTI Editor Working with Multiple Files The Editor contains tools to merge or compare multiple files. For more information, see Working with Multiple Files on page 40. Configuring the Editor The look and functionality of Editor can be customized to help you work more efficiently. see Configuring the Editor on page 45. The Editor automatically configures itself based on the programming language of the source file that is currently being edited. You can create definition files for new languages, for example to add support for a proprietary scripting language (see Adding Support for New Languages on page 51). Version Control The Editor is fully aware of several version control systems, and allows you to perform many version control operations without leaving the Editor. For more information, see The Version Menu on page 70. Version control configuration options for the Editor can be set through the Config Options menu (see General Options Tab on page 183). For information about version control and configuring MULTI to work with your version control system, see Chapter 6, Using Version Control with MULTI. Navigating in Files This section provides details about Editor functions that help you navigate within a single file, and across multiple files. Using References and Prototypes Whenever the MULTI Editor loads a C, C++, or Ada file, it attempts to obtain information about the file, including the following information: The operating system for which the code was written The source file s include files The cross reference information 22 MULTI: Editing Files and Configuring the IDE

Navigating in Files Note Cross reference information is not available for Legacy Projects. Cross reference information is not available for preprocessor #defines in the Editor (but it is available in the Debugger). When this information is obtained, the Editor automatically grabs the function prototypes from the include files; loads information for the operating system such as APIs, constants and types; and uses this information for syntax coloring and auto-completion (see The language.gsc Syntax Definition Files on page 48). The prototype information also allows you to quickly jump to the function s definition or declaration from the shortcut menu. If cross reference information is available, it is automatically loaded (see Generate or Regenerate Cross References on page 25). The Editor will attempt to obtain cross references from the following sources: MULTI Debugger The Editor can obtain cross reference information from the Debugger when the Editor was launched from the Debugger and the current file in the Editor is contained in the program being debugged. Cross reference (.dbo) files These files are generated using the project information from a Builder window. Cross reference information for a source file may be incomplete. To obtain complete cross reference information for the source file s enclosing project, you can right-click and select Generate Cross References from the shortcut menu (see Generate or Regenerate Cross References on page 25). Go To a Definition To go to the definition of an item: 1. Right-click an object, function, variable, type or other text in the source pane and select Go To Definition from the shortcut menu. 2. The Editor will use the function prototype or cross reference information to find the definition of the clicked item and move the cursor to that position. Green Hills Software, Inc. 23

2. The MULTI Editor Go To a Declaration To go to a declaration of an item: 1. Right-click an object, function, variable, type or other text in the source pane and select Go To Declaration from the shortcut menu. 2. The Editor will use the function prototype or cross reference information to find the declaration of the clicked item and move the cursor to that position. Browse References To browse reference information: 1. Right-click an object, function, variable, type, or other text in the source pane and select Browse References from the shortcut menu. 2. The Editor will attempt to obtain the item s cross references and display them in a Browse window. Note Cross reference information is not available for Legacy Projects. Cross reference information is not available for preprocessor #definesin the Editor (but it is available in the Debugger). The Browse window for cross references in Editor is very similar to the Browse window in the Debugger, without the Debugger-related functions (see Browsing Cross References in Chapter 10, Browsing Program Elements in the MULTI: Debugging book for details). The status box of the Browse window will display the source from which the cross references are obtained: Basedondebugger the source is the symbol table of the program in the corresponding Debugger. Based on progress: N/A the source is the single.dbo file of the current source file. Basedonprogress: 70% the source is multiple.dbo files of the enclosing project. The percentage displayed represents the number of currently loaded.dbo files out of the total number in the enclosing project. 24 MULTI: Editing Files and Configuring the IDE

Navigating in Files Cross reference Browse windows are accessible in the Editor through the Windows menu. Cross reference Browse windows can be deleted by selecting View Close Dependent Windows. Generate or Regenerate Cross References To obtain complete cross reference information based on the project to which the source file belongs: 1. Right-click in the source pane and select Generate Cross References from the shortcut menu.. Note This menu item is unavailable if the Editor obtained cross reference information from the corresponding MULTI Debugger. 2. The Editor will search for the enclosing project and generate cross reference information for the whole project. Once cross reference information for the enclosing project is generated, the shortcut menu item will change to Regenerate Cross References. If any of the source files in the project have changed, the cross references for the enclosing project must be regenerated for the information to be accurate. Note Cross reference information is not available for Legacy Projects. Cross reference information is not available for preprocessor #defines in the Editor (but it is available in the Debugger). Searching in the Editor The MULTI Editor provides three ways to search for text: Incremental searching Performs a quick search of the active file. This type of searching uses keyboard shortcuts rather than a dialog box, so there are fewer options. However, the search is incremental, so it searches for a string as you type it. This means that you do not always have to type the whole text you are looking for. For more information, see Incremental Searching on page 26. Interactive searching UsestheSearch dialog to perform a variety of searching tasks on the file in the active Editor window. Interactive searching Green Hills Software, Inc. 25

2. The MULTI Editor allows search-and-replace and regular expression matching. For more information, see Interactive Searching Using the Search Dialog Box on page 27. Searching files Performs full-text searching in all open files using the grep utility. For more information, see Searching in Files on page 31. Incremental Searching You can perform a quick incremental search in the active Editor window, without opening the Search dialog box, by performing the following steps: 1. Press Ctrl + F (to search forward in the file) or Ctrl + B (to search backwards in the file). This will cause the status box in the lower left corner of the status bar to display the prompt: Srch. 2. Type the string for which you are searching. As you type characters, the Editor highlights the first occurrence of that string pattern. You can use the Backspace key to remove characters from the search string. As you type additional characters or Backspace, the search string is displayed in the status bar to the right of the Srch prompt and the next occurrence of the new string is highlighted in the Editor source pane. 3. If a match has been found, press Ctrl + F again to view the next match or press Ctrl + B to view the previous match. If there is no other match, the status bar will indicate that the search failed to find another match. 4. Press Esc at any time to clear the current search. (The Srch prompt will disappear.) Note If you are not in search mode (that is, if the Srch prompt is not showing in the status bar), you can press Ctrl + F two times to repeat your most recent search. Search criteria that you have previously set in the Search dialog box (see Interactive Searching Using the Search Dialog Box on page 27) will affect incremental searches. If you used the Search dialog box for your most recent search, you can press Ctrl + F twice to repeat that search. 26 MULTI: Editing Files and Configuring the IDE

Navigating in Files Other options set in the Search dialog box, such as Case and Search Type will be applied to all subsequent incremental searches until they are cleared. Use the Search dialog box to clear or change these options. To make all incremental searches case-sensitive, select Config Options, select the General tab, and enable Match exact case in searches. Beaware that this setting affects incremental searches in all MULTI tools, not just the Editor. See Chapter 9, Configuration Options for more information about configuring MULTI. Interactive Searching Using the Search Dialog Box The Search dialog box allows you to specify search criteria for interactive searches. To open the Search dialog box, do one of the following: Select Edit Find. Click the Search button ( ). Press Ctrl + Shift + F. The Search dialog box can be used to search for and to search-and-replace text in the file open in the active Editor window. The fields and options in the Search dialog box are described in the following table. Green Hills Software, Inc. 27

2. The MULTI Editor Item Find Replace Replace Then Find Find Then Replace Replace All Undo Forward Backward Case Meaning Searches for and highlights the next occurrence of the string entered in this field. To search for the next occurrence, click the Find button again, or press Enter. Replaces the current selection with the string entered in this field. Replaces the current selection and then searches again. Searches for the next occurrence of the search string, and replaces it with the replacement string. Starts at the beginning of the file and replaces all occurrences of the search string with the replacement string. Undoes the last Editor command. Note that this button will Undo all Editor commands, not just commands entered in the Search dialog box. Determines whether the search proceeds forward or backward from the current location. (The default is Forward.) The Editor searches from the current location in the file toward the end of the file for a forward search, and toward the beginning of the file for a backward search. If the search string is not found before it reaches the end or the beginning, the search stops and an error message is displayed in the status bar. If you start the search again, it resumes from the beginning or end of the file. Determines whether or not the search is case-sensitive. Select one of the following: Exact Selects a case-sensitive search. For example, Fly matches Fly, but not fly or FLY. Either Selects a case-insensitive search. For example, Fly matches both fly and FLY. (This is the default.) 28 MULTI: Editing Files and Configuring the IDE

Navigating in Files Item Search Type StartsWord EndsWord StartsLine EndsLine Meaning Determines the type of search to be conducted. Select one of the following: Normal No special characters in the search; that is, characters only match themselves. (This is the default.) Wildcard The following characters have a special meaning in the search string:? (question mark) Matches any single character except a newline character. * (asterisk) Matches any number of characters except newline characters. RegExpr The characters listed in Searching for Regular Expressions on page 30 can be used in the search string. Specifies whether the search string must appear at the beginning or end of a word. If StartsWord is checked, the search string must appear at the beginning of a word. For example, fly matches fly or flybat, but not batfly. If EndsWord is checked, the search string must appear at the end of a word. For example, fly matches fly or batfly, but not flybat. If both are checked, the string string must form a complete word. For example, fly matches fly, but not flybat or batfly. If neither box is checked, any occurrence of the string is found. Specifies whether the search string must appear at the beginning or end of a line. These options function similarly to StartsWord and EndsWord, described above, except that they apply to the beginning and end of a line. Selecting both of these boxes specifies that the entire line must match the search text. Green Hills Software, Inc. 29

2. The MULTI Editor Note The settings in this dialog box set the defaults for the next incremental search (see Incremental Searching on page 26). Searching for Regular Expressions The following table lists acceptable formats for entering regular expressions as search strings when the RegExpr button has been selected in the Search dialog box.. (A period) Matches any single character except a new line. [string] [^string] ^ Matches any single character appearing in string. For example, [abc] matches an a, b, orc. You can specify character ranges by separating the start and end of the range with a dash (-). For example, [b-e] matches b, c, d and e. Toincludeaclose bracket (]) aspartofthestring, make it either the first character of string, or the last character of a range. For example, []abc]. If the first character of the string is a caret (^), it matches any character that is not in string. Place at the start of the search string to match the beginning of a line. Same as the StarsLine option. $ Place at the end of the search string to match the end of a line. Same as the EndsLine option. < Place at the start of the search string to require that the rest of the search string matches the beginning of a word. Same as the StartsWord option. > Place at the end of the search string to require that the rest of the search string matches the end of a word. Same as the EndsWord option. (regexp) regexp* regexp1 regexp2 Matches the regular expression regexp enclosed in parentheses. Matches zero or more occurrences in succession of the regular expression regexp. Matches regular expression regexp1 or regular expression regexp2. The following table gives some examples of regular expressions that can be used in searches. a.d a.*d <and Matches and, ad, and aud. Matches ad, are d, and abd. Matches and, but not stand. 30 MULTI: Editing Files and Configuring the IDE

Navigating in Files are is (are is)* bad Matches either are or is. Matches are bad, is bad, areisare bad, and bad. Searching in Files The MULTI Editor supports full-text searching of all open files with the Search in Files feature. To search all open files, do one of the following: Select Tools Search in Files. Enter the Grep command in the Execute Editor Commands dialog, as described in Tools Commands on page 382. This opens the Search in Files dialog box. Enter the search string in the text box (or use the drop-down list to select recent search strings) and select any of the following searching options, if desired: Case sensitive The search will only find text that matches the case of the search string exactly. If this box is not selected, the search will ignore case when searching for a match. This box is selected by default. Whole word The search will only find text that matches as a whole word. For example, if this box is selected, a search for word would not match sword. This box is cleared by default. Use Regular Expressions The search treats the text you enter in the text box as a regular expression. If this box is not selected, the search treats the text you enter as a fixed string. This box is selected by default. After you have entered the search string and set your searching options, click Search to perform the search. A Search in Files Results window will open and display all matches as they are found. See the next section for a description of this window. Green Hills Software, Inc. 31

2. The MULTI Editor Note The Search in Files capability works by running the GNU grep utility. A copy of GNU grep is installed along with MULTI. However, GNU grep is not part of MULTI and is not distributed under the same license as MULTI. For more information about the GNU General Public License, under which GNU grep is distributed, refer to the file gnugrep.readme, which is located in the directory where MULTI is installed. Viewing Search in Files Results The results of a Search in Files operation are displayed in the Search in Files Results window. The main components of this window include: Results pane Contains three columns that display information about the matching lines in the files searched. File column Displays the filename of the matching line. Place your mouse pointer over this field to display the path to the file, if available, in a tooltip. Line column Displays the line number of the matching line. Text column Displays the text of the matching line. Text pane Contains a description of the search and displays any errors printed by the GNU grep utility. Stop Search button Stops the current search. This does not dismiss the results window; the results collected before the search was stopped will 32 MULTI: Editing Files and Configuring the IDE

Navigating in Files continue to be displayed. This button becomes unavailable when the search is complete. Close button Dismisses the results window. Status bar Displays the progress of the search. Located at the bottom of the window, this bar will display Searching, Search completed, orsearch stopped. You can double-click any line in the search results window to open an Editor on the specified file and line. Note Although Search in Files is available from the Editor, the Debugger, and the Builder, the functionality differs slightly across these tools. The descriptions above apply to searches performed from the Editor. See the MULTI: Building Applications book for your target and the MULTI: Debugging book for more information about searching from the Builder and the Debugger. Using the GoTo Dialog Box You can use the GoTo dialog box to go to a file, line number or function. To open the GoTo dialog box, do one of the following: Select Edit Goto. Click the Goto button ( ). Press Ctrl +Shift+G. Goto a File To open a file in the current Editor: 1. Type a filename in the Goto box. 2. Select the Filename radio button. 3. Click Go. Green Hills Software, Inc. 33

2. The MULTI Editor Goto a Line Number To go to a specific line number in the current file: 1. Type the line number in the Goto box. 2. Select the Line Number radio button. 3. Click Go. QuicklyGoToaLine You can quickly go to a line without using the GoTo dialog box: 1. Type Ctrl + G. The status box in the lower left corner of the status bar will display the prompt Goto Line:. 2. Enter the line number to go to. 3. Press Enter. Goto a Function To go to a specific function in either the current file, or in another file: 1. Type a function name into the Goto box. 2. Select the Function radio button. If the Function button is not available, then the Editor could not find a tag file. 3. Click Go. 4. If the function is in the current file, the Editor moves the cursor to the beginning of the function. If the function is in a different file, the Editor opens that file and moves the cursor to the beginning of the function. Note This option is only available if the corresponding language is C/C++ (for which the Editor can automatically grab function prototypes from the edited file) or: A ctags style tag file named tags resides in the current directory. See Using Tags in Your Files on page 35 for more information. A tags file has been specified with the Tools Append TagFile menu item. 34 MULTI: Editing Files and Configuring the IDE

Working with Code You use the AppendTagFile Editor command. UsingTagsinYourFiles If you use the ctags utility to create a tag file, the Editor uses the information to open files and move the cursor based on the name of a function. See Tag Commands on page 383 for additional tag commands. Manually Loading a Tag File in an Editor Session When the Editor starts, it looks for a file called tags. If the tag file has a different name or is in an unexpected location, the Editor may not find it. To manually load a tag file into an Editor session: 1. Select Tools Append TagFile. 2. The Select Tag File dialog box appears. Select the tag file, or enter the path and filename of the tag file. 3. Click Load. Removing a Tag File from an Editor Session To unload a tag file from an Editor session: 1. Select Tools Reset Tags. 2. Once you have unloaded a tag file, the Editor no longer uses that file to navigate to functions. Working with Code The Editor provides tools and keyboard shortcuts that you will find helpful when editing source code. Indenting Code Indentation is whitespace at the beginning of each line, used to denote the hierarchical structure of your code and make it more readable. As you write code, you can manually insert an indent, or you can let the Editor indent your code based on common coding standards. Green Hills Software, Inc. 35

2. The MULTI Editor Manually Inserting or Removing an Indent To manually insert or remove an indent: 1. Move the cursor to the appropriate line, or highlight multiple lines. 2. Select Block Indent to insert an indent. 3. Select Block Unindent to remove an indent. For more information about working with indents, see The Block Menu on page 65. Auto-Indenting Code The Editor has an auto-indent feature that will indent your code according to common coding standards. Auto-indent is only available for certain languages. At present, MULTI supports auto-indenting for C, C++, Java, and ADA only. 1. If you want to auto-indent a single line of code, move the cursor to that line. If you want to auto-indent multiple lines of code, highlight those lines. 2. Select Block Auto Indent, or press Ctrl + 2 or Ctrl + ; (semicolon). Pressing the Tab key also automatically indents everything to the right of the cursor. Note You can make a one time change in how far the Editor auto-indents the lines of a lexical block of code, by indenting the first line of code the way you want the entire block to look, then highlighting the rest of the block and starting the auto-indent. This prevents the Editor from breaking the conventions of a pre-existing block. Configuring Indents You can configure the default size of indents and how they affect your code. To change the configuration of indents for all files, select Config Options and make changes on the MULTI Editor tab (see MULTI Editor Options Tab on page 222). To change the size of indents for the current file and current session only, use the Per File Settings dialog box. See The Per File Settings Dialog Box on page 63 for more information. 36 MULTI: Editing Files and Configuring the IDE

Working with Code Auto-Indent Characters By default, the Editor automatically makes indenting adjustments when you type the following characters: # number sign * asterisk ; semi-colon : colon { left curly brace } right curly brace You can disable characters from auto-indenting both your code and comments by disabling Implicit auto indent. If you want special characters to auto-indent your code, but want to disable them if you use them within a comment, disable Implicit auto indent in comments (see MULTI Editor Options Tab on page 222 in Chapter 9, Configuration Options ). Working with Comments This section describes how you can use the Editor to easily insert and manipulate comments in your code. Inserting or Removing a Comment The Editor uses the proper syntax for comments based on your selected programming language. Block comment operations are available to C, C++, Pascal, Java, and all languages that support line comments. To insert a new comment, place the cursor on a blank line where you want the comment to start and select Block Comment. To comment out existing code, select the appropriate text, then select Block Comment. The selection is implicitly extended to line boundaries; the entire line the selected text is in will be commented out. To uncomment a comment block, highlight the block and select Block UnComment. For more information about working with comments, see The Block Menu on page 65. Green Hills Software, Inc. 37

2. The MULTI Editor For information about configuring comments, see MULTI Editor Options Tab on page 222 in Chapter 9, Configuration Options. Note If the Editor is not using the correct syntax for comments, select View Language to make sure it is configured for the correct language. Highlighting the Boundaries of the Current Block of Code To identify the beginning and end of the current block of code, select View Match. When you perform this operation, the Editor: 1. Searches backward from the cursor and finds the first enclosing instance of a left parenthesis (, left curly brace {, or a left bracket [. 2. Searches forward from the cursor to find the matching ending mark. 3. Selects the code in between. For more information, see The View Menu on page 61. Working with Columns You can cut, copy and paste columns of text in the Editor. For more information, see The Block Menu on page 65. Copying a Column of Text You can copy a column of data from a file, excluding data on either side of the column. For example, suppose you have a tab delimited file that lists date, time, file size, and filename. You can copy just the column that lists time without affecting any of the other data. 1. On the first line that contains data you want to copy, start the selection at the first character you want copy. 2. Extend the selection to include all of the data in the column. The last character selected should be the last character of the column. 3. Select Block Rect Copy. 38 MULTI: Editing Files and Configuring the IDE

Working with Code 4. The region of text to be copied is the rectangle with the diagonal defined by the first character and the last character of the selection. Example 1. Using Rect Copy Highlight the following selection, then select Block Rect Copy. When you paste the contents of the clipboard, the following is inserted in your file: 09:21a 09:22a 09:23a 09:36a 09:23a 09:33a Cutting a Column of Text To cut a column of text out of a file, highlight the column and select Block Rect Cut. Pasting a Column of Text After you have cut or copied a column of text from a file, you can: Select Block Rect Paste to paste the column without inserting line breaks. Select Edit Paste to paste the contents of the clipboard into the file with line breaks. Green Hills Software, Inc. 39

2. The MULTI Editor WorkingwithMultiple Files This section provides information about the MULTI Editor tools you can use to merge and compare multiple files. Merging Files You can use the Editor to merge two or three files into a single file. The initial files can be completely different files, or different versions of the same file. To begin merging files, select Tools Merge Files to open the EditMerge dialog box. The EditMerge dialog box contains the following fields and buttons: File1 File2 Base Type the name of the first file you want to merge, or click (Browse) to select a file. If you are using a version control system and want to merge a different version of a file from disk, enter the filename in the File1 field and the version of that file to be merged in the adjacent Version field. Type the name of the second file you want to merge, or click to select a file. If you specify the same file in the File1 and File2 fields without specifying a version, then File1 refers to the copy currently open in the Editor, while File2 refers to the file on disk. Type the name of the file from which the other two files, File1 and File2, are derived, or click to select a file. If you are only merging two files, leave this field blank. 40 MULTI: Editing Files and Configuring the IDE

Working with Multiple Files Automatic Merge Check this box if you want the Editor to try to resolve merges without prompting you. Clear this box if you want to manually review every proposed merge. Click Merge to begin the merge: The two-file Merge dialog box will open (see Merging Two Files on page 41). If a file is specified in Base, the three-file Merge dialog box will open (see Merging Three Files on page 42). Merging Two Files To merge two files: 1. Select merge criteria in the EditMerge dialog box (see Merging Files on page 40) and click Merge. An Editor window appears for each of the two files you specified, as well as an extra Result window that displays results of the merge. The Status box in the lower left corner of each window identifies which file is in each window. In addition to the Editor windows, the two-file Merge dialog box will open: The Editor will pause at each difference between the files and highlight the text that is different. 2. Use the following buttons in the two-file Merge dialog box to control the merge results: File1 File2 Both Copies the selected text from File1 into the Result window. Copies the selected text from File2 into the Result window. The first time you click this button, a dialog box appears asking you how you want to merge the two selections (in what order, with change bars around them, with comments in front, between, or after them, and so forth). The next time you click this button, the last values entered are used. Green Hills Software, Inc. 41

2. The MULTI Editor Skip Automatic Help Edit Change Bars Cancel Finds the next difference without adding the current difference to the file. Enables or disables the automatic merge feature. If the box is checked, the Editor will try to make merge changes without prompting you. If the box is cleared, you manually control every merge change. Opens MULTI s online help for the Merge dialog box. Performs the same action as the Both button, except that you can modify the changes in a temporary window before merging them into the new file. Changes the settings for the Both button. When you click this button, it opens the same dialog box that appears the first time you click the Both button. Aborts the merge, closing all merge windows. The results of each merge selection will be copied to the Result window. You can also manually cut and paste text into the Result window. 3. When the merge is complete, a Save dialog box opens so you can save the Result file. After you save the results, the other Editor windows close. If you save the Result file with the same name as one of the original files, any Editor windows still open on that file will be updated with the merged results. Merging Three Files When you merge three files, one file is considered the Base file from which the other two are derived. With this assumption, the Editor is usually able to merge without asking you for information, using the following rules: If a difference exists between the two source files, and one is the same as the Base file, then the Editor uses the one that is different from the Base file. If both source files differ from the Base file, but are the same as each other, then the Editor uses the new text from either source file. If all three files are different, a conflicting change was made and the Editor has to ask which change to use. In this case, it is likely that you will have to merge the change manually. 42 MULTI: Editing Files and Configuring the IDE

Working with Multiple Files To merge three files: 1. Select merge criteria in the EditMerge dialog box (see Merging Files on page 40) and click Merge. An Editor window appears for each of the three files you specified, as well as an extra Result window that displays results of the merge. The Status box in the lower left corner of each window identifies which file is in each window. In addition to the Editor windows, the three-file Merge dialog box will open: The Editor will pause at each difference between the files and highlight the text that is different. 2. Use the following buttons in the three-file Merge dialog box to control the merge results: Button File1 File2 All Meaning Copies the selected text from File1 into the Result window. Copies the selected text from File2 into the Result window. Copies the selected text from all three files. The first time you click this, a dialog box appears asking you how to merge the selection (in what order, with change bars around them, with comments in front, between, or after them, and so forth). The next time you click this button, the last values entered will be used. 1,2 Merges the selections from File1 and File2. The first time you click this, a dialog box appears asking you how to merge the two selections from File1 and File2 (in what order, with change bars around them, with comments in front, between, or after them, and so forth). The next time you click this button, the last values entered will be used. 1,Base Functions the same as the 1,2 button, except it merges the selections from File1 and the Base file. Green Hills Software, Inc. 43

2. The MULTI Editor Button 2,Base Skip Automatic Help Edit Change Bars Cancel Meaning Functions the same as the 1,2 button, except it merges the selections from File2 and the Base file. Finds the next difference without adding the current difference to the results file. Enables or disables the automatic merge feature. If the box is checked, the Editor will try to make merge changes without prompting you. If the box is cleared, you manually control every merge change. Opens MULTI s online help for the Merge dialog box. Performsthesameactionasthe1,2 button, except that you can modify the changes in a temporary file before merging them into the new file. Changes the way the 1,2, 1,Base, 2,Base, and All buttons work. This button opens the same dialog box as the one that appears the first time you click any of those buttons. Aborts the merge, closing all merge windows. Comparing Files You can compare files without merging them. To compare two files, do the following: 1. Select Tools Diff Files. TheDiff Files dialog box will open: 2. In the Left field, specify the filename and version of the first file you want to compare. If you do not specify a version, the Editor assumes you mean the current version. 3. In the Right field, specify the filename and version you want to compare to the first file. Click the up or down arrows to increment or decrement the version number. 4. Click Diff. 44 MULTI: Editing Files and Configuring the IDE

Configuring the Editor The Editor opens a Diff Viewer that shows the differences between the two specified versions. For more information, see The Diff Viewer on page 144. Configuring the Editor You can change how the Editor looks and functions to help you work more efficiently. Many of the options that control how the Editor appears and handles your code are accessible by selecting Config Options, then the MULTI Editor tab. For more information about configuring MULTI, see Chapter 8, Configuring and Customizing MULTI and Chapter 9, Configuration Options. Customizing the Editor GUI You can customize the Editor to perform actions in new ways. You can replicate any of the actions available in the standard Editor window by assigning commands to new menu items, buttons, key bindings, or mouse click combinations. For example, if you prefer not to use the mouse when you are editing, you can assign commands to keystrokes; or if there is a menu item that you access frequently, you can assign the equivalent commands to a button. For information about how you assign commands to menus, key bindings, mouse bindings, and buttons, see Customizing the Graphical User Interface (GUI) on page 162 in Chapter 8, Configuring and Customizing MULTI. For information about Editor commands, see Chapter 3, Editor GUI Reference, which lists the equivalent commands for GUI menu items; and Appendix A, which provides a complete list of Editor commands. For a complete list of the default key and mouse bindings, see Appendix D. Configuring the Editor for a Programming Language The Editor automatically configures itself based on the programming language of the source file that is currently being edited. For example, if you open a file foo.c, the Editor automatically identifies text enclosed in double quotes ("") as a string, completes certain words (such as language-specific keywords) as they are typed into the file, and automatically colors the code to make it more readable. Green Hills Software, Inc. 45

2. The MULTI Editor Two files are used to identify the programming language in a source file, color the programming language, and enable auto-completion: index.gsc The index configuration file that the Editor uses to match the source file with the appropriate syntax definition file. language.gsc The syntax definition file for a specific programming language. This file defines how the Editor should color the language and whether the Editor should auto-complete certain words as they are typed. The index.gsc Configuration File When the Editor opens a file, it searches the index.gsc configuration file for the file s extension and uses it to locate the corresponding language syntax definition file. The index.gsc configuration file is located in the defaults/syntax_coloring directory of your MULTI installation. Each entry defines the basic information about a language. The definition order determines how they will be displayed in the Editor s View Language menu or submenu. For each language, the index.gsc file defines the following: Identifier A unique identifier for the name of the language. This identifier must correspond to the name in the language s syntax definition file (see The language.gsc Syntax Definition Files on page 48). If the language s identifier contains any non-alphanumeric characters, enclose the entire identifier in quotes, for example: "C++". extension Lists the file extensions of files that contain the language. To force the Editor to automatically use a language that is not consistent with a file s extension, insert -*-language-*- on the first line of the file (include this syntax within a comment). For example, to force the Editor to view a file as C++, regardless of its extension, enter: // -*- c++ -*- on the first line of the file. description The name of the language as it will appear in the Editor s View Language menu. The & symbol indicates that the following key is a hot key for the menu item. For example, if you specify description = "Per&l", the letter l becomes the hot key. 46 MULTI: Editing Files and Configuring the IDE

Configuring the Editor definition_file The language s syntax definition file. If an absolute path is not specified, the Editor will look for the syntax definition file in the syntax_coloring directory of your local or site-wide MULTI configuration directory. For more information, see The language.gsc Syntax Definition Files on page 48. hide You can determine whether the language appears in the Editor s View Language menu. To hide a language, enter hide = true. The default is false. Although a hidden language will not appear in the menu, the Editor will still use it to color files written in the corresponding language. submenu To group languages into a submenu within the View Language menu, enter: submenu = submenu_name first_line_pattern The regular expressions that identify the language by the source file s first non-blank line. If the Editor cannot match a language based on the source file s extension, or if the extension matches more than one entry in index.gsc, the Editor will use these regular expressions to select the correct language. Be sure to use a double escape character sequence (\\) when defining the regular expressions. Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyrighted by the University of Cambridge, England. It can be downloaded from theuniversity of Cambridge FTP server (ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/). Example 1. index.gsc Entry The entry in the index configuration file for the Perl language might look like: Perl { extension = {"pl"} description = "Per&l" definition_file = "perl.gsc" first_line_pattern = {"^[\\s]*#![\\w /\\\\]*[/\\\\]perl"} } To visually separate languages when they are listed in the View Language menu, define a unique identifier with a description of "\x01". For example: Green Hills Software, Inc. 47

2. The MULTI Editor "GHS-Sep1" { description = "\x01" } Each separator should be given a unique name. The language.gsc Syntax Definition Files The MULTI Editor uses language.gsc syntax definition files to determine items such as the display color of language elements, case-sensitivity, and auto-completion. Each language has its own syntax definition file located in the syntax_coloring directory. The definitions for some languages are split into multiple files, in which case the language.gsc file can use %include "filename.gsc" statements to include definitions from other syntax definition files. Each of the following elements can be defined in the syntax definition file. For each element that can be defined, you can use the default color or specify your own. 48 MULTI: Editing Files and Configuring the IDE

Configuring the Editor general The following entries define general settings for the language: name = The identifier for the language. This identifier must match the Identifier listed in the index.gsc file (see The index.gsc Configuration File on page 46). description = The name of the language as it will appear in the Editor s View Language menu. extension = File extensions associated with this language. case_sensitive = Defines whether the language is case-sensitive. For a case-insensitive language, enter case_sensitive = false. The default is true. pascal_style_priority = (boolean). In languages such as C/C++, comments, strings and characters receive higher priority than preprocessor statements; while other languages, such as Pascal, give higher priority to preprocessor statements. To assign priority to preprocessor statements, enter pascal_style_priority = true. The default is false. separator = Separators used to delimit syntax tokens. escape = Escape sequence leader. For example: name = "Pascal" description = "Pascal" extension = {"p", "pas", "h"} case_sensitive = false separator = "\\\"+-*/<=>:,; \t()[]^%!~ & {}.@?" escape = "\\" keyword You can define a list of keywords, the display color for keywords, and whether keywords are auto-completed. line_comment Specify line comment characters. Multiple line comment leaders can be defined, so an index number is used for each. For example: 1 = "//" Green Hills Software, Inc. 49

2. The MULTI Editor comment Specify comment characters. Multiple comment characters can be defined, so an index number is used for each. For example: 1 { begin = "(*"; end = "*)" } 2 { begin = "{"; end = "}" } string Specify string characters. Multiple string characters can be defined, so an index number is used for each. For example: 1 { begin = " "; end = " " } character Specify constant characters. Multiple characters can be defined, so an index number is used for each. For example: 1 { begin = "\ "; end = "\ " } integer The following entries can be made to define integers: hex = Specifies support for hex integers. To support hex integers, enter hex = true. The default is false. case_sensitive = Specifies case sensitivity in integer suffixes. To make integer suffixes case insensitive, enter: case_sensitive = false. The default is true. decimal_suffix = Specifies a list of suffixes for decimal integers. hex_suffix = Specifies a list of suffixes for hex integers. float The following entries can be made to define the display of numbers in floating point form. scientific = Specifies whether scientific format is supported. To use scientific format, enter scientific = true. The default is false. case_sensitive = Specifies case-sensitivity for float suffix. The default is true. To override, enter case_sensitive = false suffix = Specifies a list of suffixes for float. customized You can define a list of customized items (wildcards can be used in them), and whether those customized buttons not containing wildcards are auto-completed. 50 MULTI: Editing Files and Configuring the IDE

Configuring the Editor autocomplete Defines the auto-complete behavior. For information, see Configuring Auto-Complete on page 51. Adding Support for New Languages You can create new syntax definition files for any language, for example you can add support for a proprietary scripting language. To implement support, you must create a syntax definition file for the language (for example, my_language.gsc),andthencreateanentryintheindex.gsc file for the new language. Tip MULTI s default index configuration file and syntax definition files include detailed comments. The easiest way to add a new language is to look at the default files, which are located in the defaults\syntax_coloring (Windows) or defaults/syntax_coloring (UNIX) directory of your MULTI installation. Configuring Auto-Complete A language syntax definition file determines whether keywords, preprocessor statements, and customized items will be automatically completed by the Editor as they are typed. Most of the language syntax definition files included with MULTI have auto-complete enabled for both keywords and preprocessor statements. Auto-complete can also be enabled for function prototypes. Auto-completion does not work for customized items that contain wildcard characters. You can turn auto-complete on or off for an entire language, or for a specific category of items in the syntax definition file by specifying autocomplete = false or autocomplete = true. The following sections provide details about auto-complete that can be modified by editing the autocomplete section of the syntax definition file. Note Even when auto-completion is disabled, you can use the keyboard shortcuts listed in Auto-Completion on page 416 to perform auto-completion functions based on the characters located at the cursor. Green Hills Software, Inc. 51

2. The MULTI Editor First Match vs. Best Match Auto-Complete Auto-completion uses either first match logic or best match logic to complete words based on the letters that have been typed: autocomplete = "first" Completes the first word that begins with the letter that has been typed. autocomplete = "best" Does not complete a word until it can uniquely identify the letters that have been typed. This is the default setting. For example, assume auto-completion has been enabled for the keywords: main, mailman and mist. When the letter m is typed, first match logic auto-completes the item into main, but best match logic does not perform any auto-completion. When the letters ma have been typed, first match logic still auto-completes the item into main, while best match logic auto-completes the item to mai because it still cannot determine whether the item should be main or mailman. Minimum String Length You can control the minimum number of characters in a string before auto-complete attempts to match the sting. The default value is 1. To change this setting, enter: min_string_length = num where num is the number of characters in the string. Auto-Completion of Function Prototypes Auto-complete entries also control the use of function prototypes. Function prototypes are often defined in included files. Whenever the Editor loads a C or C++ file, it automatically grabs the include files for function prototypes if it can find the include files. grab_prototype = Specifies whether function prototypes are dynamically grabbed as you type in the Editor. The default setting is false. To dynamically grab function prototypes as you type, enter grab_protoype = true. Automatically grabbing function prototypes is only supported for C and C++. 52 MULTI: Editing Files and Configuring the IDE

Configuring the Editor show_prototype = Specifies whether function prototypes are displayed as you type. To automatically display function prototypes, enter show_prototype = true. When when you type a function name in the Editor followed by a ( (open parentheses), a tooltip containing prototype information will appear to guide you through the function s arguments. The default setting is false. These two options are explicitly enabled in the syntax definition files for C and C++. Green Hills Software, Inc. 53

2. The MULTI Editor 54 MULTI: Editing Files and Configuring the IDE

Chapter 3 Editor GUI Reference This Chapter Contains: The File Menu The Edit Menu The View Menu The Block Menu The Tools Menu The Version Menu The Config Menu The Windows Menu The Help Menu UNIX Dialog Boxes

3. Editor GUI Reference The MULTI Editor graphical user interface (GUI) contains menus, toolbar buttons and keyboard shortcuts for editing files. All of the Editor GUI menus are described in the tables that follow. The tables also include the equivalent toolbar buttons and keyboard shortcuts, where applicable. Most of the menu items also have equivalent commands, which may be entered by using the GUI menu item Tools Execute Editor Commands (see The Tools Menu on page 67). Advanced users can also use these commands to configure their keyboard or mouse shortcuts (see Customizing Keys and Mouse Clicks on page 169). For a complete list of Editor commands, see Appendix A. The File Menu The File menu contains the following items: New Editor (Ctrl + N) Opens a file in a new Editor window. Select a file from the Edit File dialog box and click Edit; or to create a new file, enter the new filename and click Edit. This menu item is bound to the LoadFileWithNewEditor command (see File Commands on page 362). Open (Ctrl + O) Opens a file in the current Editor window. Select a file from the Edit File dialog box and click Edit; or to create a new file, enter the new filename and click Edit. The selected file is pushed to the top of the context stack for the current window. This menu item is bound to the OpenFile command (see File Commands on page 362). Save (Ctrl + S) Saves the current file. This menu item is bound to the Save command (see File Commands on page 362). 56 MULTI: Editing Files and Configuring the IDE

The File Menu Save As (Ctrl + Shift + S) Saves the current file with a new name. Specify the new path and filename in the Save As dialog box. This menu item is bound to the SaveAs command (see File Commands on page 362). Save All Opens the Save All dialog box. All open files with changes that have not been saved will be listed. Select the check boxes next to the files you want to save, then click Save Selected. To save all of the listed files, click Save All. This menu item is bound to the QuerySaveAll command (see File Commands on page 362). Revert to Saved Undoes all changes made to the current file since the last time it was saved. This menu item is bound to the Revert command (see File Commands on page 362). Revert to Backup Undoes all changes made to the current file since the last time it was backed up. See the configuration option Create backup file when saving in MULTI Editor Options Tab on page 222 for backup file. This menu item is bound to the RevertToBackup command (see File Commands on page 362). Page Setup Windows only Opens the Page Setup dialog box, which allows you to set printing options for the current file. This menu item is bound to the PageSetup command (see File Commands on page 362). Print Opens the Print dialog box, which allows you to print the current file to a printer or to a file. For UNIX, see The Print Setup Dialog Box on page 76. This menu item is bound to the Print command (see File Commands on page 362). 1, 2, 3, 4, 5, 6, 7, 8 Up to eight previously viewed files may be listed. Select any of the files to open it in the current Editor window. Green Hills Software, Inc. 57

3. Editor GUI Reference Close File (Ctrl + Shift + P) Closes the current file and prompts you to save any unsaved changes. If the file was checked out of version control during this session, you will be prompted to check it back in. This menu item is bound to the Close command (see File Commands on page 362). Save and Close (Ctrl + Shift + Q) Closes and saves changes to open files without prompting, then exits the Editor. This function is accessed with the Save and Close button on the Editor Toolbar. It is not available in the GUI menus. This menu item is bound to the Done command (see File Commands on page 362). Close Editor (Ctrl + Q) Prompts you to save the changes made to open files, then exits the Editor. This menu item is bound to the Close command (see File Commands on page 362). Exit All Prompts you to save the changes made to all open files, then quits all MULTI tools (including the Legacy Builder and Debugger windows) that are currently running and from which the Editor is launched. This menu item is bound to the Quit command (see File Commands on page 362). 58 MULTI: Editing Files and Configuring the IDE

The Edit Menu The Edit Menu The Edit menu contains the following items: Undo (Ctrl + Z) Reverts the last change made to the current file. Each Undo reverts one more change. This process can be repeated until all changes made since the file was opened are undone. This menu item is bound to the Undo command (see Undo/Redo Commands on page 366). Redo (Ctrl + Y) Restores the last edit that was removed by Undo. YoucanRedo multiple Undos, until you make new changes to the file. This menu item is bound to the Redo command (see Undo/Redo Commands on page 366). Repeat Last Edit (Ctrl +.). Repeats the last edit you made to the file. You can only use this feature with certain types of edits: text input or replacement. For example, if you just selected text and replaced it with new text, then Repeat Last Edit will delete a similar selection contiguous to the cursor and insert the new text. For example, your file contains the text: This is a block of text. You select the word block and type string, to change the text to: This is a string of text. If you move the cursor to the beginning of the word text (you do not have to highlight the word) and select Edit Repeat Last Edit, the text will change to: This is a string of string. This menu item is bound to the RepeatLast command (see Undo/Redo Commands on page 366). Cut (Ctrl + X) Deletes the current selection and places it on the clipboard. This menu item is bound to the Cut commands (see Clipboard Commands on page 367). Green Hills Software, Inc. 59

3. Editor GUI Reference Copy (Ctrl + C) Copies the current selection to the clipboard. This menu item is bound to the Copy commands (see Clipboard Commands on page 367). Paste (Ctrl + V) Pastes the clipboard contents to the current location. This menu item is bound to the Paste commands (see Clipboard Commands on page 367). Delete (Ctrl + D) Deletes the current selection. If there is no current selection, deletes the character after the insertion point. This menu item is bound to the Delete command (see Text Deletion Commands on page 370). Select All (Ctrl + A) Selects the entire contents of the current file and moves the cursor to the end of the file. This menu item is bound to the SelectAll command (see Selection Commands on page 371). Find (Ctrl + Shift + F) Opens the Search dialog box which allows you to set criteria for an interactive search. For more information, see Interactive Searching Using the Search Dialog Box on page 27. Alternately, use Ctrl + F to perform an incremental search for a string without using the dialog box. For more information, see Incremental Searching on page 26. These items are bound to the Search and ISearch commands (see Search Commands on page 375). Goto (Ctrl + Shift + G) Opens the GoTo dialog box, which allows you to go to a file, line number or function. For more information, see Using the GoTo Dialog Box on page 33. Use Ctrl + G to quickly go to a line number without using the dialog box. For more information, see Quickly Go To a Line on page 34. These items are bound to the Goto and EditLine commands (see Navigation Commands on page 358). 60 MULTI: Editing Files and Configuring the IDE

The View Menu The View Menu The View menu contains the following items: Language Specifies the programming language used in the current source file. The Editor uses this setting for syntax coloring, commenting, and auto-indenting features. This menu item is bound to the SelectLanguage command (see Miscellaneous Commands on page 394). Per Language Settings Opens the Language Settings dialog box which lists settings for the selected language. The items in this dialog box are: Auto-Complete Indicates whether auto-completion is active for the selected language. For more information, see Configuring Auto-Complete on page 51. Auto-completion Match Algorithm Select Best Match or First Match Min. String Length for Auto-completion The number of characters to be entered before auto-completion attempts to match the string. Max Number of Objects to Show for Auto-completion The number of matched objects to display when you enter Ctrl + / or Ctrl + to show the matched object names or function prototypes. The default is specified in the corresponding language s configuration file (see The language.gsc Syntax Definition Files on page 48). Dynamically Grab Function Prototype The Editor can automatically grab the function prototypes in the edited files for C and C++ code. The default is specified in the corresponding language s configuration file (see The language.gsc Syntax Definition Files on page 48). Show Function Prototype When you type in a function name followed by (, the Editor will display the function s prototype to help you enter the arguments. The default is specified in language s configuration file (see The language.gsc Syntax Definition Files on page 48). This menu item is bound to the LanguageOptions command (see Miscellaneous Commands on page 394). Per File Settings Opens the Per File Settings dialog box which lists variables that can be set for an individual file. These settings are used only for the current session only. See The Per File Settings Dialog Box on page 63 for details. This menu item is bound to the EditorFlags command (see File Commands on page 362). Green Hills Software, Inc. 61

3. Editor GUI Reference File Properties Displays information the Editor is able to obtain about the file, including: Language. Number of include files. Cross reference file. Extra syntax information. Enclosing project name. Progress information about the cross reference files for the enclosing project. This menu item is bound to the FileProperties command (see File Commands on page 362). Next File (Ctrl + Shift + Tab) Switches to the next open file in the Editor stack. This menu item is bound to the CyclePushBack command (see File Commands on page 362). Previous File (Ctrl + Tab) Switches to the previous open file in the Editor stack. This menu item is bound to the CyclePush command (see File Commands on page 362). Flash Cursor (Esc) Scrolls to and flashes the line containing the cursor. This menu item is bound to the FlashCursor command(see Navigation Commands on page 358). Match (Shift + Right-click) Searches backward from the cursor for the first paired character (parenthesis, square bracket, or curly brace) at the same nesting level as the cursor, and selects the paired characters and all text enclosed by them. This menu item is bound to the SelecToMatch command (see Selection Commands on page 371). Column Opens the Column dialog box, which allows you to enter a specified column on the current line, if applicable. This menu item is bound to the Column command (see Navigation Commands on page 358). 62 MULTI: Editing Files and Configuring the IDE

The View Menu Read Only Toggles the window permission for the file between read-only and read/write mode, if possible. A check next to this menu item indicates that the file is currently read-only. This does not affect the file s permission on disk. This menu item is bound to the ToggleReadOnly command. Generate Cross References / Regenerate Cross References For C and C++ files, obtains complete cross reference information based on the project to which the source file belongs. When you select this menu item, the Editor will search for the enclosing project and generate cross reference information for the whole project. Once cross reference information for the enclosing project is generated, the menu item will change to Regenerate Cross References. If any of the source files in the project have changed, the cross references for the enclosing project must be regenerated for the information to be accurate. These menu items are bound to the GenerateXrefInfo and RegenerateXrefInfo commands. Close Dependent Windows Deletes all cross reference Browse windows. This menu item is bound to the CloseDependentWindows command (see Miscellaneous Commands on page 394). The Per File Settings Dialog Box This dialog box lists a number of indenting and text wrapping options that you can set for the current file and current session only. To open this dialog box, select View Per File Settings. Note These settings default to the Editor options in Config Options. For more information about these settings, see MULTI Editor Options Tab on page 222 and More Editor Options Dialog Box on page 227. The Per File Settings dialog box contains the following fields: Indent size Controls the number of spaces the Editor inserts when you press the Tab key. The default is 4 spaces. If you enter 0 to disable tabs, pressing Tab will insert a single space. Green Hills Software, Inc. 63

3. Editor GUI Reference Ada indent size For Ada language file types only. Sets the indentation size. The default is 3 spaces. For more information, see MULTI Editor Options Tab on page 222. Ada continuation size For Ada language file types only. Determines how far a line of Ada source code is indented if it continues on multiple lines. Wrap column If Word wrap is enabled, this setting specifies the column at which word wrap takes affect. If a line grows to longer than this number of columns as you are typing, the Editor will insert a line break at the first whitespace before the column. It will indent the newly formed line by the same amount as the line above it, plus the wrap indent offset, described below. Wrap indent offset If Word wrap is enabled, this setting determines how much the wrapped line will be indented past the indentation of the line above it. Word wrap Check this box to enable word wrap, or clear it to disable word wrap. If Word wrap is enabled, the Editor will wrap lines automatically as you type, but will not wrap long lines while loading a file. Disk format Determines whether the file will be saved in UNIX format or DOS format (with carriage returns). It will default to the appropriate setting. Procedure list order Selects the order in which procedures will display in the Procedure drop-down menu (see File and and Procedure Fields on page 18). Permitted settings for this option are: Base Name Displays procedures sorted by the procedure s base name. Full Name Displays procedures sorted by their class name, then procedure name. Position Displays procedures in the order they appear in the file. 64 MULTI: Editing Files and Configuring the IDE

The Block Menu The Block Menu The Block menu contains the following items: Indent (Ctrl + i) Indents at the beginning of the current line or selected lines. The default size is four spaces. To change the indent size, select Config Options, then select the MULTI Editor tab and edit the Indent size field. This menu item is bound to the Indent command (see Indentation Commands on page 379). Unindent (Ctrl + Shift + i) Deletes a number of spaces equal to or less than the size of an indent from the beginning of the current line. This menu item is bound to the Unindent command (see Indentation Commands on page 379). Auto Indent (Ctrl + 2) Indents the current line or block of lines to the position indicated by the syntax of the code. This option is only available for the C, C++, Java, and Ada languages. For more information, see Auto-Indenting Code on page 36. This menu item is bound to the AutoIndent command (see Indentation Commands on page 379). Comment (Ctrl + *) Inserts language specific characters to signify that the selected text is a comment, and not code. This menu item is bound to the CommentBlock command (see Block Commands on page 378). UnComment (Ctrl + Shift + U) Removes comment characters from the selected text to make it active code. This menu item is bound to the UnCommentBlock command (see Block Commands on page 378). UpperCase (Ctrl + +) Changes all the characters in the current selection to upper case. This operation is not supported for FORTRAN, Pascal, and Green Hills Script. This menu item is bound to the UpperCaseBlock command (see Block Commands on page 378). Green Hills Software, Inc. 65

3. Editor GUI Reference LowerCase (Ctrl + ) Changes all the characters in the current selection to lower case. This operation is not supported for FORTRAN, Pascal, and Green Hills Script. This menu item is bound to the LowerCaseBlock command (see Block Commands on page 378). Rect Copy Copies a rectangular subsection of the current selection to the clipboard. For more information, see Working with Columns on page 38. This menu item is bound to the RectCopy1 command (see Clipboard Commands on page 367). Rect Cut Deletes a rectangular subsection of the current selection, and copies it to the clipboard. For more information, see Working with Columns on page 38. This menu item is bound to the RectCut1 command (see Clipboard Commands on page 367). RectPaste Pastes a clipboard selection created with Rect Copy or Rect Cut to the current location without line breaks. If you use Edit Paste (Ctrl + V) to paste a rectangular selection, line breaks will be added. For more information, see Working with Columns on page 38. This menu item is bound to the RectPaste1 command (see Clipboard Commands on page 367). Cut Lines (Ctrl + M) Extends the current selection to the closest line boundaries, deletes the selection, and places it on clipboard number two. This menu item is bound to the SelectLine; Cut2 command combination (see Selection Commands on page 371 and Clipboard Commands on page 367). Join Lines (Ctrl + P) Joins two lines of text by replacing the new line character from the end of the current line and all initial whitespace on the next line with a single space. This menu item is bound to the JoinLines command (see Block Commands on page 378). Insert File Opens the Insert dialog box, which allows you to select a file to be inserted. The contents of the inserted file are placed on the line above the cursor. This menu item is bound to the InsertFile command (see Insert Commands on page 380). 66 MULTI: Editing Files and Configuring the IDE

The Tools Menu The Tools Menu The Tools menu contains the following items: Insert Date (Ctrl + Shift + D) Inserts the current date, as a formatted string, at the current location. This menu item is bound to the Date command (see Insert Commands on page 380). Search in Files Opens the Search in Files dialog box, which allows you to search for an expression in all open files. See Searching in Files on page 31 for a description of this window and how to use it. This menu item is bound to the Grep command (see Tools Commands on page 382). Start MULTI Launcher Opens the MULTI Launcher, which provides easy access to all the primary MULTI components. The Launcher Bar provides a convenient way to create new files and projects, to access recent ones, and to manage your currently open windows. This menu item is bound to the MultiBar command (see Miscellaneous Commands on page 394). For more information about Launcher, see The Launcher GUI on page 92. Make UNIX only Opens the Thing to make? dialog box. Changes made in the Editor are saved before Make starts. To examine erroneous lines, click error messages that appear in the output window. This menu item is bound to the Make command (see Tools Commands on page 382). Green Hills Software, Inc. 67

3. Editor GUI Reference Execute Shell Command UNIX only Opens the Shell Command to exe dialog box, which allows you to execute a command in the shell, then inserts the output into the open file. The command uses the current selection in the Editor as stdin, and replaces that selection with stdout. If nothing is selected, the output from the command is inserted into the open file after the cursor s current position. The following macro sequences are recognized in the command: %FILE Replaced with the name of the current open file. %SEL Replaced with the current selection. %LINE Replaced with the current line number. %COMMENTS Replaced with text from a dialog box that prompts for input. This menu item is bound to the ExecuteCmd command (see Tools Commands on page 382). Command to Window UNIX only Opens the Command to Window dialog box, which allows you to execute a command in the shell. Output will appear in a new temporary Editor window. This command does not modify the open file. The following macro sequences are recognized in the command: %FILE Replaced with the name of the current open file. %SEL Replaced with the current selection. %LINE Replaced with the current line number. %COMMENTS Replaced with text from a dialog box that prompts for input. This menu item is bound to the CommandToWindow command (see Tools Commands on page 382). Hex Editor Opens the Hex Editor. For information, see Chapter 4, The MULTI Hex Editor. Notepad Opens a small Editor window in a scratch file. Thescratchfileusedis: (Windows) multipad.txt in your current working directory. (UNIX) ~/.Notes. This menu item is bound to the Notepad command (see Tools Commands on page 382). 68 MULTI: Editing Files and Configuring the IDE

The Tools Menu Launch Utility Programs Opens the Utility Program Launcher dialog box, which allows you to launch one of the Green Hills utility programs. This menu item is bound to the WGUtils command (see Tools Commands on page 382). Execute Editor Commands Opens the Execute Editor Commands dialog box, which allows you to enter Editor commands. This menu item is bound to the Minibuffer command (see Tools Commands on page 382). Append TagFile Opens a dialog box where you can specify a tag file (in the format determined by the ctag utility) that the Editor can use to find procedures in files. By default, the Editor looks for a file called tags. For more information, see Using Tags in Your Files on page 35. This menu item is bound to the AppendTagFile command (see Tag Commands on page 383). Reset Tags Resets the tag file to the default, tags. This menu item is bound to the ResetTags command (see Tools Commands on page 382). Merge Files Opens the Merge dialog box, which allows you to merge two or three files. For more information, see Merging Files on page 40. This menu item is bound to the MergeFiles command ( Tools Commands on page 382). Diff Files Opens the Diff Files dialog box, which allows you to find and display the differences between two files. For more information, see Comparing Files on page 44. This menu item is bound to the DiffFiles command (see Tools Commands on page 382). Green Hills Software, Inc. 69

3. Editor GUI Reference The Version Menu Most of the items in the Version menu are enabled only if the current file uses version control. The availability of the items listed in the table varies according to which version control system is being used. For more information, see Chapter 6, Using Version Control with MULTI. Check Out Retrieves a writable copy of the latest version and locks the file so that other users cannot change the file while you work on it. Checks out the current file from version control for editing. (Files cannot be edited unless they are checked out.) This action is not relevant if you are using CVS. This menu item is bound to the CheckOut command (see Version Control Commands on page 385). Check In Saves any changes you have made to the current file, makes the file read only in MULTI, and removes the lock from the file. You will be asked for comments to be saved in the log file along with your changes. This menu item is bound to the CheckIn command (see Version Control Commands on page 385). Check In All Saves the changes you have made to all the files you have checked out, makes the files read only in MULTI, and removes the lock from the files. You will be asked for comments to be saved in the log file along with your changes. This menu item is bound to the QuerySaveCheckinAll command (see Version Control Commands on page 385). Discard Changes Undoes all changes made to the file since it was checked out from version control, removes the lock from the file, and reverts to the latest version. This function updates the timestamp on a file in case the modified version was used in a previous build. Use this to undo a checkout without making any changes. (This will make the file read only.) This menu item is bound to the Discard command (see Version Control Commands on page 385). 70 MULTI: Editing Files and Configuring the IDE

The Version Menu Place Under VC Puts the current file under version control, prompting you to insert comments (if desired). After you have performed this action, the file must be checked out before changes can be made. If using MVC, this is equivalent to the create command, which creates a log file. For more information, see the create in Appendix B. This menu item is bound to the PlaceUnderVC command (see Version Control Commands on page 385). Auto Checkout Enables or disables Auto Checkout mode. If Auto Checkout is not selected, you must manually check out a file that uses version control before you can edit the file. If Auto Checkout is enabled, files will be automatically checked out from the version control system when you initiate an editing action. This option functions on a per-file basis and defaults to the value of the Automatic Checkout configuration option. For more information, see Chapter 8, Configuring and Customizing MULTI. This menu item is bound to the AllowAutoCheckout and PreventAutoCheckout commands (see Version Control Commands on page 385). Show History Opens the History Browser, which displays information about all versions of the current file. This window displays the check-in comment, who checked the file in, and the date of the check-in. You can double-click any entry in the history to open the Editor on a temporary copy of that version. See The History Browser on page 141 for more information. (If you are using ClearCase, this command opens the ClearCase history browser rather than the MULTI History Browser.) This menu item is bound to the ShowHistory command (see Version Control Commands on page 385). Show Last Edit Finds the version of the current file that changed the selected text, or if no text is selected, the current line. A Diff Viewer window opens and displays the version that changed the text. (For more information about using this window, see The Diff Viewer on page 144.) This menu item is bound to the ShowLastEdit command (see Version Control Commands on page 385). Revert To History Opens the History Browser, which lists all versions of the current file, and from which you can select a version to load into the Editor. (This is not supported for all version control systems.) This menu item is bound to the RevertHistory command (see Version Control Commands on page 385). Green Hills Software, Inc. 71

3. Editor GUI Reference Revert To Date Opens a dialog box in which you can enter a revision date. The Editor will load the version that was current on the date you specify. This menu item is bound to the RevertDate command(see VersionControl Commands on page 385). Revert To Version Opens a dialog box in which you can enter a version number of the current file to load into the Editor. (This is not supported for all version control systems.) This menu item is bound to the RevertVersion command (see Version Control Commands on page 385). The Config Menu The Config menu contains the following items: Options Opens the Options dialog box to change options that affect the appearance and behavior of the Editor and other MULTI tools. This dialog box contains is covered in detail in Chapter 9, Configuration Options. This menu item is bound to the ConfigOptions command (see Configuration Commands on page 387). Save Configuration as Default Saves the current configuration options in a file in the default location. For more information, see Chapter 9, Configuration Options. This menu item is bound to the SaveConfig command (see Configuration Commands on page 387). Clear Default Configuration Prompts before clearing the default configuration file. This menu item is bound to the ClearConfig command (see Configuration Commands on page 387). Save Configuration Opens the Save Configuration to what file? dialog box, which allows you to specify the filename and location for the configuration file. This menu item is bound to the SaveConfigToFile command (see Configuration Commands on page 387). 72 MULTI: Editing Files and Configuring the IDE

The Windows Menu Load Configuration Opens the Load Configuration from what file? dialog box, which allows you to specify the filename and location of the configuration file you want to load. This menu item is bound to the LoadConfigFromFile command (see Configuration Commands on page 387). The Windows Menu The Windows menu is used to jump between any of the windows created by MULTI. If you choose an entry in the Windows menu, the corresponding window is brought to the front of the Editor stack. The following are menu items that may appear in the Windows menu: application_name Opens a submenu listing of all Debugger-related windows created in the same program execution. The main Debugger window for the application is listed first and Data Explorers are listed in a submenu. Select one of the entries to bring the corresponding window to the front. standalone_window_type Lists other stand-alone windows (created in the same execution, or from other executions), with submenu entries under the corresponding category names. Others Lists other windows, such as Browse Windows launched from the Editor. Misc Lists other windows types that do not fall into any of the above categories. The Help Menu The Help menu contains the following items: Editor Help (F1) Opens MULTI s online help system. This menu item is bound to the Help command (see Help Commands on page 390). Green Hills Software, Inc. 73

3. Editor GUI Reference Manuals Opens the Manuals submenu, which displays a list of manuals appropriate to your version of MULTI. Select one of these manuals to open the online help to the first page of that manual. This option is only available through the Editor GUI. Identify Waits until the next key or mouse click sequence, and displays help for that command instead of executing the command. This menu item is bound to the Identify command (see Help Commands on page 390). About MULTI Opens the About banner. This menu item is bound to the About command (see Help Commands on page 390). UNIX Dialog Boxes The following sections describe dialog boxes that only appear in the Editor on UNIX systems. File Chooser Dialog Box (UNIX) A file chooser dialog box opens if you initiate an action (using a menu, button, command, or shortcut) for which a file must be specified, but you have not yet specified a file. A chooser also opens if you click a Browse or button on a dialog box. A sample UNIX file chooser is shown below. (For information about Windows file choosers, see your Windows documentation.) 74 MULTI: Editing Files and Configuring the IDE

UNIX Dialog Boxes The title bar of the file chooser will vary depending on the action you are performing. The following table describes the main elements of the file chooser. Directory Displays the directory whose contents are shown in the File List. Typeinanew directory name and press Enter to display a different directory. Directory Buttons With this set of buttons, you can quickly go to different important directories. The buttons that appear are: File List Up One Directory from the current directory. Jumps to the current Working Directory. Jumps to the MULTI Run Directory. Jumps to the User Home Directory. Below the directory text field is the file list. To enter a directory, double-click the directory. To choose a file, single-click the filename. You can click any column header to sort the list in ascending or descending order. If multiple files are allowed for the present operation (for example, Open is selected in the editor menu), use the Shift key to select a consecutive list of files; use the Ctrl key to select non-consecutive files. Filename Type a filename or directory name into this text field. As you type in this field, the selection in the file list will change to reflect the closest match. If you type a directory name and press Enter, or follow the directory name by a slash (/), the file list will change to the specified directory. Green Hills Software, Inc. 75

3. Editor GUI Reference File type If you select a file type, the File List will only display files with suffixes that match the selected file type. Action buttons There are two buttons in the lower right corner of the file chooser window. The upper button displays the action that will occur, such as Open (in the example above), OK, oredit. The lower button is the Cancel button, which closes the window without taking any action. The Print Setup Dialog Box On Windows, selecting a printing operation from the File menu opens a standard Print dialog box with settings and options appropriate for your version of Windows and your printer and printer driver. See your Windows and printer documentation for details about the settings on this dialog. On UNIX systems, selecting a printing operation from the File menu opens the following Print Setup dialog box. The settings of the Print Setup dialog box are described in the following table. Print To Specifies where to send the print output. Select either Printer (the default) or File (to write to a postscript file). 76 MULTI: Editing Files and Configuring the IDE

UNIX Dialog Boxes Print Command Specifies the print command that will be run when you click Print. Enter the appropriate command and options for printing a file on your specific system (for example, lpr on UNIX). This field is only available if you have chosen the Printer radio button above. Filename Specifies the output post-script file for print to file operations. This field is only available if you have selected the File radio button above. Enter the file to write to,orclickbrowse to open a chooser and navigate to an existing file. (See File Chooser Dialog Box (UNIX) on page 74 for a description of the chooser.) Font Name Specifies the font for your printing operations. Select your desired font from the drop-down list, which contains a list of available fonts on your system. You can also type a font name into this field if it is not in the list. Font Size Specifies the font size used for printing. Select your desired size from the drop-down list. The default font size is 8 point. Paper Size Specifies your paper size. Select Letter, Legal, Executive, ora4. The default setting is Letter. Orientation Specifies the layout for your printed document. Select Portrait or Landscape. The default setting is Portrait. Columns Specifies whether to print the output in one or two columns. The default setting is 1. Print Executes the print request. Cancel Cancels the print request and discards any settings you have changed. Green Hills Software, Inc. 77

3. Editor GUI Reference 78 MULTI: Editing Files and Configuring the IDE

Chapter 4 The MULTI Hex Editor This Chapter Contains: Using the Hex Editor

4. The MULTI Hex Editor MULTI contains a Hex Editor for editing binary files. When you open binary files, MULTI may open them in the Hex Editor by default, or you may be prompted to open them in the Hex Editor. The Hex Editor is a stand-alone program that can be opened from a command line. UNIX The executable is mhexedit Windows The executable is mhexedit.exe Using the Hex Editor To open a file in the Hex Editor: 1. Select File Open, or enter Ctrl + O. 2. A file chooser will open. Select the file you want to edit, then click Edit. 3. The selected file will open in the Hex Editor. The Hex Editor contains three panes: The left-hand pane displays the offset into the file. The center pane displays the binary hex code. The right-hand pane displays the associated ASCII text. The cursor changes from gray to black to indicate which pane is active. As you make changes to text in the right-hand pane, the associated binary hex code in 80 MULTI: Editing Files and Configuring the IDE

Using the Hex Editor the center pane will change. Modified characters will turn red in both panes. Similarly, changes made to the binary hex code in the center pane will change the associated ASCII text in the right-hand pane. The Status Bar displays the byte offset into the file where the cursor is currently located and the total number of bytes in the file. Hex Editor Menus and Keyboard Shortcuts The following menus and keyboard shortcuts are available in the Hex Editor. File Menu The following items are accessible through the Hex Editor s File menu or by using the associated Keyboard Shortcuts: Open Ctrl + O Opens the Edit File? dialog box, which you can use to select a file to edit. If you are currently editing a file with outstanding modifications, you will be prompted to save changes. New Window Opens a new Hex Editor window. Close Ctrl + N Ctrl + W Closes the current file in the Hex Editor. You will be prompted to save changes. Save Saves changes to the current file. Print Window Prints the visible contents of the window. Quit Quits the Hex Editor. You will be prompted to save any changes. Ctrl + S Ctrl + P Ctrl + Q Green Hills Software, Inc. 81

4. The MULTI Hex Editor Edit and View Menus The following items are accessible through the Hex Editor s Edit and View menus or by using the associated Keyboard Shortcuts: Copy Copies the selection to the clipboard. (Copy is in the Hex Editor s Edit menu.) Paste Replaces data with the clipboard contents at the cursor s location. (Paste is in the Hex Editor s Edit menu.) Bytes Per Row Enter the number of bytes per row to display in the Hex Editor. The default is 16 bytes per row. (Bytes Per Row is in the Hex Editor s View menu.) Ctrl + C Ctrl + V Search and Goto in the Hex Editor You can find data or a line number in the Hex Editor with the following Keyboard Shortcuts: Ctrl + F Search forward in the file. First select either the ASCII text or the hex data pane. Type the search string after pressing Ctrl + F. Ctrl + B Search backward in the file. First select either the ASCII text or the hex data pane. Type the search string after pressing Ctrl + B. Ctrl+G Gotoanaddresswithinthefile. For more information, see Incremental Searching on page 26 and Quickly Go To a Line on page 34. 82 MULTI: Editing Files and Configuring the IDE

Part II Managing Files

Chapter 5 Using MULTI Workspaces and Shortcuts This Chapter Contains: Creating a Workspace Running Actions and Action Sequences Creating or Modifying an Action Sequence Creating or Modifying an Action Creating MULTI Shortcuts Managing Processes The Launcher GUI

5. Using MULTI Workspaces and Shortcuts The Launcher provides an easy method for launching all the primary IDE components and managing user-defined workspaces. A workspace is typically created for each top-level project and includes a working directory and a group of related action sequences. The working directory for the workspace is the directory from which the action sequences will be started and it is typically the directory containing the executable program associated with the project. An action sequence consists of one or more actions that are performed in the listed order. The actions in an action sequences could include: Building a program with MULTI, and then debugging it. Launching the Checkout Browser and opening several frequently-used files for editing Connecting to a Debugger hardware target and opening a serial terminal connection. Running a script or batch file or executing a Debugger command. Invoking an external tool. A shortcut is an action sequence that is not associated with a particular workspace. Shortcuts can be run from within any workspace and execute in the working directory of the currently selected workspace. 86 MULTI: Editing Files and Configuring the IDE

Creating a Workspace In the example above, a user has defined a workspace called STP Dev Area with a working directory of c:\my Projects\STP. TheStartup, View Bug List, and Run Client/Server Test action sequences are defined. The Startup action sequence contains the following actions: Open the MULTI Builder on the default.gpj project. Open the Checkout Browser on the src directory. The Run Client/Server Test action sequence contains the following actions: Build the projects stp_server and stp_client. Open the MULTI Debugger on stp_server with arguments set to -port 40020. Open the MULTI Debuggeronstp_client with arguments set to -port 40020. Creating a Workspace To create a workspace: 1. Select File Create Workspace. TheSelect Workspace Type window will be displayed. 2. Specify a name for your workspace and choose one of the following options, depending on how you want to create the workspace: New Project Select this option if you want to create a workspace containing a new project. The Launcher will start the New Project Wizard to allow you to create the project. For more information, see Creating a New Project: The New Project Wizard in Chapter 2, The MULTI Builder in the MULTI: Building Applications book. Existing Project Select this option if you already have a top-level project and you want to create a workspace to provide you with easier access to that project. The Launcher will prompt you to specify the location of your existing top-level project. Blank Select this option if you want to create an empty workspace. You can customize the workspace later. Enter a path to your desired working directory in the Working Directory field or click to navigate to the desired working directory. Green Hills Software, Inc. 87

5. Using MULTI Workspaces and Shortcuts When you create a workspace for a new project or existing project, an action sequence called Startup is created. The Startup action sequence launches the Builder on the project. Creating or Modifying an Action Sequence on page 89 explains how to customize this action sequence or add other action sequences to the workspace. Copying and Moving Workspaces The Launcher saves definitions of workspaces, shortcuts and other Launcher items in the file config.gmb, which is located in your local configuration directory. To find the path, make a change to your current workspace or a shortcut and select File Save Changes. A dialog box will open that displays the full path. If you want to move the workspaces and global shortcuts you created on one computer to another, copy the config.gmb file to the proper directory. Workspaces and global shortcuts can also be made available to other users by copying the corresponding file to their configuration directory, or merging your definitions into their Launcher configuration file. For example, to export a workspace definition to another user, copy the workspace s definition into the workspace scope in their Launcher configuration file. The Launcher configuration file is a text file in the general Green Hills Software odb (object data base) format, with straightforward syntax. Running Actions and Action Sequences Before running an action sequence or an action, you must select the desired workspace from the drop-down list at the top left of the Launcher. To run an action sequence: 1. Click the Shortcut button ( ). 2. Select the appropriate action sequence from the list. The action sequences contained in the current workspace are listed first, followed by any shortcuts. When you run an action sequence, all the actions associated with the action sequence will be performed in order. 88 MULTI: Editing Files and Configuring the IDE

Creating or Modifying an Action Sequence To run one or more actions, do one of the following: Select the desired actions, then click the Run button. Right-click the selected actions and select Run from the shortcut menu. If the actions or action sequences being executed contain a blocking command action, a build action, a wait action or any utility action, a progress window opens. The progress window s title indicates the currently executing action or the last executed action if execution is finished. For more information about the progress window, see Miscellaneous Dialogs and the Progress Window on page 98. Creating or Modifying an Action Sequence To create an action sequence: Click the Add button. If the button is not visible, you may have the detail pane hidden. To reveal the detail pane, click. To delete an action sequence, do one of the following: Select the action sequence and click the Delete action. Right-click the action sequence and select Delete from the shortcut menu. To edit an action sequence, do one of the following: Select the action sequence and click the Edit button. Right-click the action sequence and select Edit from the shortcut menu. Double-click an action sequence. To reorder action sequences: 1. Select an action sequence. 2. PressCtrl + UpArrow or Ctrl + DownArrow to move the action sequence up or down. Action sequences are edited from the Edit Action Sequence dialog. You can perform the following operations by right-clicking an action. Green Hills Software, Inc. 89

5. Using MULTI Workspaces and Shortcuts Edit Displays the Edit Action dialog. For more information, see Creating or Modifying an Action on page 90. Disable or Enable Disables or enables the selected action. Disabled actions appear dimmed and do not run when the action sequence is run. Cut, Copy, Paste, ordelete Performs the requested editing operation on the selected action. The Paste button inserts actions above the current selection; it does not overwrite the current selection. Move Up or Move Down Moves the selected action or actions one position up (earlier) or down (later) in thelistofactions. Creating or Modifying an Action To create an action, display the Edit Action dialog in one of the following ways: From the Launcher, right-click the action sequence and select Add Action. From the Edit Action Sequence dialog click Add Action. To modify an action, perform one of the following: From the Launcher, double-click the action or right-click the action and choose Edit. From the Edit Action Sequence dialog, either right-click the action and choose Edit or highlight the action and click Edit Action. The Edit Action dialog contains two fields. The first field, called Action, specifies the type of action. The second field contains the arguments for the action. The name of the second field depends on which Action is selected. You should first select the type of action from the Action list, then customize the second field. The available action types and example arguments are as follows: Builder Opens the MULTI Builder on the specified project. For example: MyProjects/Project1/default.gpj 90 MULTI: Editing Files and Configuring the IDE

Creating or Modifying an Action Build Project Builds the specified project. For example: MyProjects/Project1/default.gpj Debug Program Opens the MULTI Debugger on the specified executable. For example: MyProjects/Project1/prog Debugger Command Performs the specified Debugger command. For a list of commands, see Chapter 30, Debugger Commands in the MULTI: Debugging book. For example: cb Editor Opens the MULTI Editor on the specified file. For example: MyProjects/Project1/readme.txt Checkout Browser Opens the Checkout Browser on the specified directory. For example: MyProjects/Project1 Connection Connects to the specified target. For example: simppc Serial Terminal Connects via a Serial Terminal to the specified target. For example: (for Windows) com1 (for Linux) ttys0 EventAnalyzer Opens the EventAnalyzer on the specified event source file. For example: evlog.mes. ResourceAnalyzer Connects the ResourceAnalyzer to the specified target. For example: 128.128.128.0 Nonblocking Command Runs the specified shell command. The command output is not displayed. A nonblocking command is particularly good for launching graphical programs. For example: gmemfile program Blocking Command Runs the specified shell command. Subsequent actions must wait until the Blocking Command has completed before running. The command output is displayed in an editor window. A blocking command is particularly good for command line programs or batch-processing applications. For example: gsize program Wait Causes the Launcher to wait the specified number of milliseconds before executing the next action. For example: 10000 (waits for 10 seconds). Utility Actions Runs one of the Green Hills utility programs. When you choose this action in the Edit Action dialog, the Launcher displays a list of utility actions and allows you to choose one. For example: gstrip program If the chosen action type requires a filename or directory to be specified, the drop-down list will also contain a Select File or Select Directory option to launch a file or directory chooser. Green Hills Software, Inc. 91

5. Using MULTI Workspaces and Shortcuts Creating MULTI Shortcuts MULTI shortcuts are like action sequences, except that they are not associated with any particular workspace. To create a shortcut: Click the Shortcut button ( ). Select Create or Change Shortcut. The MULTI Launcher Shortcuts pane will appear. The Working Dir: field is empty to indicate that shortcuts do not have a working directory associated with them. Shortcuts execute in the working directory of the currently selected workspace. You can create or modify shortcuts just as you would action sequences for a workspace (see Creating or Modifying an Action Sequence on page 89). Managing Processes Each time a workspace action launches another program, that program appears in the Launcher Processes menu. If necessary, you can terminate the program by choosing it from the list in the Processes menu. The following actions cause the corresponding program to appear in the Launcher Processes menu: Build Project, Nonblocking Command, Blocking Command, Wait, andutility Actions. This menu does not list components of the MULTI IDE that were launched by Launcher actions. Note The Processes menu only lists workspace actions. This menu is not related to programs being debugged by the MULTI Debugger. The Launcher GUI The Launcher provides the ability to easily launch all major IDE components and manage user-defined workspaces that can be customized to your common working environments. The Launcher provides the following two display modes, depending on whether you need to create or modify workspaces and action sequences. 92 MULTI: Editing Files and Configuring the IDE

The Launcher GUI Concise mode (as shown below), which uses less screen space. This can be useful if you do not need to access or modify individual actions. Detailed mode (as shown below), which shows more information and allows you to modify workspace action sequences. You can switch between the two modes by clicking the or button. The current mode is maintained across Launcher sessions. Opening Workspaces You can create as many workspaces as necessary, but only one workspace can be the current workspace, and you can only run the actions from the current workspace. You can change current workspaces in the following ways: Open the workspace pulldown menu and select the desired workspace (see The Launcher Toolbar on page 94). Green Hills Software, Inc. 93

5. Using MULTI Workspaces and Shortcuts Select File Recent Workspaces, and select the desired workspace in the submenu. The Launcher Toolbar On the left side of the Launcher Toolbar, the pulldown shows the current workspace. The full list of existing workspaces can be viewed by clicking the pulldown. In the menu, you can select a workspace, which will become the current workspace. The Launcher has the following buttons in its toolbar: (Shortcut) Lists the following items: Action sequences In the order they were defined in the current workspace. When an action sequence is selected, it will be executed. Shortcuts In the order they were used. The most recently used shortcut is at the beginning. When a shortcut is selected, it will be executed. Create Workspace See Creating a Workspace on page 87 for details. Create or Change Shortcut See Creating MULTI Shortcuts on page 92 for details. (Builder) Lists the following items: Projects Thatwere used as arguments in the Builder actions in the current workspace. When a project is selected, it will open in a Builder. Most recently used projects When a project is selected, it will open in a Builder. Open Project Builder See the corresponding menu item in The File Menu on page 100. Create Project See the corresponding menu item in The File Menu on page 100. (Debugger) Lists the following items: Programs Used as arguments in the Debug Program actions in the current workspace. When a program is selected, it will open in a MULTI Debugger. Most recently used programs When a program is selected, it will open in a MULTI Debugger. 94 MULTI: Editing Files and Configuring the IDE

The Launcher GUI Open Debugger See the corresponding menu item in The File Menu on page 100. Lists the following items: Files Used as arguments in the Editor actions in the current workspace. When a file is selected, it will open in an Editor. Most recently used Editor files When a file is selected, it will open in an Editor. Open Editor See the corresponding menu item in The File Menu on page 100. (Checkout Browser) Lists the following items: Directories Used as arguments in the Checkout Browser actions in the current workspace. When a directory is selected, it will be used as the argument to launch a Checkout Browser. Most recently used Checkout Browser directories When a directory is selected, it will be used as the argument to launch a Checkout Browser. Open Checkout Browser See the corresponding menu item in The File Menu on page 100. (Connect) Lists the following items: Targets Used as arguments in the Connection actions in the current workspace. When a target is selected, a connection will be established to the corresponding target. Most recently used targets When a target is selected, a connection will be established to the corresponding target. Existing connections in the system (preceded by Disconnect:) When an entry is selected, the corresponding connection will be closed. Connect See the corresponding menu item in The File Menu on page 100. Open Connection Organizer See the corresponding menu item in The File Menu on page 100. Green Hills Software, Inc. 95

5. Using MULTI Workspaces and Shortcuts (Serial Terminal) Lists the following items: Serial Terminal Targets Used as arguments in the Serial Terminal actions in the current workspace. When a serial target is selected, a serial terminal connection will be established to the corresponding target. Most recently used Serial Terminal Targets When a serial target is selected, a serial terminal connection will be established to the corresponding target. Open Terminal See the corresponding menu item in The File Menu on page 100. (EventAnalyzer) This button will not be present if the MULTI EventAnalyzer is not licensed or if the executable does not exist in your distribution. Lists the following items: Event Stream Files Used as arguments in the EventAnalyzer actions in the current workspace. When an event stream file is selected, it will open in a MULTI EventAnalyzer. Most recently used Event Stream Files When an event stream file is selected, it will open in a MULTI EventAnalyzer. Open EventAnalyzer See the corresponding menu item in The File Menu on page 100. (ResourceAnalyzer) This button will not be present if the MULTI ResourceAnalyzer is not licensed or if the executable does not exist in your distribution. Lists the following items: ResourceAnalyzer Targets Used as arguments in the ResourceAnalyzer actions in the current workspace. When an item is selected, a MULTI ResourceAnalyzer.will be launched to try to connect to the target. Most recently used ResourceAnalyzer targets When an item is selected, a MULTI ResourceAnalyzer will be launched to try to connect to the target. Open ResourceAnalyzer See the corresponding menu item in The File Menu on page 100. (Close) Closes the Launcher. (more) or (less) Expands or shrinks the Launcher window to show or hide the detail pane. 96 MULTI: Editing Files and Configuring the IDE

The Launcher GUI The Detail Pane The detail pane is located below the toolbar. It is displayed when the Launcher is in detailed mode. The detail pane can display the brief help information about the Launcher or it can display the current workspace s information. When you create a new workspace or select a workspace as the current workspace in the detailed display mode, the detail pane will show the workspace s information, even if it was previously displaying the brief help information. When the detail pane displays help information, it contains the following elements: Help information pane Shows brief information about the Launcher. Don t show this message again Select this check box to instruct the Launcher to hide the help information when it starts up next time. Start with MULTI Launcher Select this check box to start the Launcher when the multi command is run with no arguments. See the corresponding menu entry in TheConfig Menu on page 104. When the detail pane shows the current workspace information, it contains the following elements: Name The workspace name. Working Dir The workspace working directory. Properties Opens a dialog box that allows you to change the current workspace s basic information (in the Current tab) and certain global settings (in the Global tab). Buttons Change the current workspace s action sequences and actions. Add adds a new action sequence. The other buttons operate on the objects selected in the action tree. Action tree Lists the action sequences and actions in the current workspace. Green Hills Software, Inc. 97

5. Using MULTI Workspaces and Shortcuts The following keyboard commands can be used to manipulate the action tree: Key Action Ctrl + UpArrow Ctrl + DownArrow Ctrl + X Ctrl + C Ctrl + V Ctrl + D Delete Meaning Moves the selected objects up by one row (see the note below). Moves the selected objects down by one row (see the note below). Deletes the selected objects and copies the selected actions into an internal buffer. Copies the selected actions into an internal buffer. Pastes the actions in the internal buffer before the selected action or at the end of the selected action sequence. Deletes the selected objects, including actions and action sequences. Deletes the selected objects, including actions and action sequences. Note When one of the operations Run, Move Up or Move Down (from the right-click shortcut menu or the equivalent keyboard command) is applied to the selected objects in the action tree, the operation will be applied as follows: If any action is selected, the operations will be applied only to those selected actions and not to entire action sequences. Otherwise, the operations will be applied to the selected action sequences. When the Run operation is applied to an object: If the object is an action, the action will be executed even if the action is disabled. If the object is an action sequence, only enabled actions of the action sequence will be executed. The Delete operation is applied to all selected objects in the action tree; both actions and action sequences. Miscellaneous Dialogs and the Progress Window The Launcher opens various dialog boxes for: Creating a workspace 98 MULTI: Editing Files and Configuring the IDE

The Launcher GUI Changing workspace properties and global settings Editing an action sequence Editing an action These dialog boxes are not described here, although some are described earlier in this chapter. A progress window (a MULTI Editor) will be displayed when you execute actions or action sequences that contain any of the following: Blocking Command action Build Project action Wait action Any utility action. The progress window s title indicates the currently executing action or the last executed action if execution is finished. In the progress window, the output from actions is displayed in the normal text color, and each action s output is separated by some progress lines which are put in by the Launcher and are displayed in a special color. If the execution is not finished yet and you try to close the progress window, you will be asked if you want to terminate the execution. If you choose yes, the corresponding execution will be terminated. You can also terminate an execution in progress at any time by selecting the corresponding entry in the Processes menu. Green Hills Software, Inc. 99

5. Using MULTI Workspaces and Shortcuts The Launcher Menus This section describes the choices and commands available in the Launcher menus. The File Menu The File menu has the following entries: Create Workspace Creates a new workspace. Delete Current Workspace Deletes the current workspace, and automatically selects the next workspace (if any) as the current workspace. Recent Workspaces Lists the most-recently-accessed workspaces so you can select one as the current workspace. Create or Change Shortcuts Creates a new shortcut or changes an existing shortcut. A shortcut is an action sequence that is not associated with a particular workspace. Open Project Builder Opens an existing project. The project will be opened in either the Project Builder or the Legacy Builder, depending on the project type (.gpj or.bld) and the setting of the Convert Legacy Projects option (see The Config Menu on page 104 for more information). Create New Project Creates a new project using the New Project Wizard, and loads the created project in a Builder. The new project will be created in either the.gpj format supported by the Project Builder or the.bld format supported by the Legacy Builder, depending on the setting of the Create Legacy Projects option. (see The Config Menu on page 104 for more information). Open Debugger Debugs an existing program. This launches a file chooser to allow you to select the program to debug. Open Editor Edits an existing file. This launches a file chooser to allow you to select the file to edit. 100 MULTI: Editing Files and Configuring the IDE

The Launcher GUI Open Checkout Browser Launches the Checkout Browser from the current working directory. Connect Launches the connection dialog so that you can establish a connection. Open Connection Organizer Launches the Connection Organizer for you to manipulate your connections. Open Serial Terminal Launches the Serial Terminal. Open EventAnalyzer Launches the MULTI EventAnalyzer. This entry will not be present if the MULTI EventAnalyzer is not licensed or if the executable does not exist in your distribution. Open ResourceAnalyzer Launches the MULTI ResourceAnalyzer GUI. This entry will not be present if the MULTI ResourceAnalyzer is not licensed or if the executable does not exist in your distribution Save Changes Saves the changes you made to workspaces or the Launcher properties into the Launcher s configuration file. After the changes are saved, a dialog box will open, showing the path of the Launcher s configuration file. Close Launcher Closes the Launcher. Any unsaved changes to workspaces or the Launcher properties will be saved automatically. Exit All Closes all MULTI windows, including the Launcher. Green Hills Software, Inc. 101

5. Using MULTI Workspaces and Shortcuts The Utilities Menu The Utilities menu has the following entries: License Administrator Opens the Green Hills Licensing Tool to perform software license management actions. Probe Administrator Launches the Green Hills Probe Administrator to manage the Green Hills probes on your local network. This entry will not be present if the Green Hills Probe Administrator is not licensed or if the executable does not exist in your distribution Launch Utility Programs Allows you to run one of the utility programs. The Windows Menu The Windows menu list all the top-level windows from various MULTI components in the system. Selecting an item for a MULTI window (in the second level menus) will cause the corresponding window to be shown at the top. The Windows menu lists only window types that are actually open. The menu may contain the following entries: Debugger Lists all open MULTI Debugger windows. Editor Lists all open MULTI Editor windows. Task Manager Lists all open Task Manager windows. Connection Organizer Lists all open Connection Organizer windows. Builder Lists all open MULTI Builder windows (both Project Builder and Legacy Builder). Checkout Browser Lists all open Checkout Browser windows. 102 MULTI: Editing Files and Configuring the IDE

The Launcher GUI OSA Explorer Lists all open OSA Explorer windows. EventAnalyzer Lists all open MULTI EventAnalyzer windows. ResourceAnalyzer Lists all open MULTI ResourceAnalyzer windows. Misc Lists all other open MULTI windows in the system. If there is no other MULTI window in the system, the item will not be displayed. Minimize All Windows Minimizes all MULTI windows except the Launcher. If there are no MULTI windows open, this item will not be displayed. Show All Windows Restores all MULTI windows to their normal sizes. If there are no MULTI windows open, this item will not be displayed. Close All Windows Closes all windows listed in the menu. When certain windows are closed, you may be prompted first. For example: When a Debugger is closed, you may be asked whether to kill the program being debugged; When an Editor is closed, you may be asked whether to save outstanding changes. If there are no MULTI windows open, this item will not be displayed. No Windows Indicates that no MULTI windows (except for the Launcher itself) are open. If any MULTI windows are open, this item will not be displayed. Green Hills Software, Inc. 103

5. Using MULTI Workspaces and Shortcuts The Processes Menu The Launcher executes a non-standard action in non-blocking mode by spawning a separate process for the corresponding executable or shell script. The Launcher keeps track of such spawned processes and lists all of the currently executing processes in its Processes menu. The menu has the following entries: Kill process_info: pid Kills the corresponding process that was spawned from the Launcher. No Processes Indicates that no currently executing processes were spawned from the Launcher. If any currently executing processes were spawned from the Launcher, this item will not be displayed. The Config Menu The Config menu has the following entries: Show/Hide Detail Pane Specifies whether the Detail Pane (see The Detail Pane on page 97) is visible in the Launcher. Click this menu item to toggle between showing or hiding the Detail Pane. Start with MULTI Launcher Specifies the effect of entering the multi command on the command line. If a check mark appears next to this menu item, issuing the multi command with no arguments will run the Launcher. This is the default behavior. If no check mark appears next to this menu item, issuing the multi command with no arguments will run the Legacy Builder. To toggle between these settings, click the menu item. Create Legacy Projects Specifies the build format to be used when creating new projects from the Launcher. If a check mark appears next to this menu item, new projects will be created in the.bld format supported by the Legacy Builder. If no check mark appears next to this menu item, new projects will be created in the.gpj format supported by the Project Builder. This is the default setting. To toggle between these settings, click the menu item. 104 MULTI: Editing Files and Configuring the IDE

The Launcher GUI Convert Legacy Projects Specifies how MULTI will behave when you open.bld format projects. If a check mark appears next to this menu item,.bld format legacy projects will be automatically converted into the.gpj format and then opened in the Project Builder. After the translation, the top legacy.bld file will be archived with the extension.bak. This is the default setting. If no check mark appears next to this menu item,.bld format legacy projects will be opened with the Legacy Builder. To toggle between these settings, click the menu item. In all cases, the Project Builder will be used for projects in the.gpj format. Options Opens the MULTI options dialog (see Chapter 9, Configuration Options for more details). Save Configuration as Default Saves the current configuration options in the default location. For more information, see Chapter 9, Configuration Options. Clear Default Configuration Clears the default configuration file. The Launcher prompts before performing this action. Save Configuration Opens the Save Configuration to what file? dialog box, which allows you to specify the filename and location in which to save the configuration. Load Configuration Opens the Load Configuration from what file? dialog box, which allows you to specify the filename and location of the configuration file to load. The Help Menu The Help menu has the following entries: Show Information Shows the Launcher information in the Detail Pane. This information includes a brief description about how to use the Launcher. Help Opens MULTI s online help system. Green Hills Software, Inc. 105

5. Using MULTI Workspaces and Shortcuts Manuals Opens the Manuals submenu, which displays a list of manuals appropriate to your version of MULTI. Select one of these manuals to open the online help to the first page of that manual. About MULTI Shows basic information about MULTI, including the version number and revision date. Troubleshooting Info Gathers information about your MULTI distribution, including your system information, environment information and your MULTI installation information, and displays it in a dialog box. You can save the information to a file or send it to others, such as Green Hills support or your product support contact. 106 MULTI: Editing Files and Configuring the IDE

Chapter 6 Using Version Control with MULTI This Chapter Contains: Configuring Version Control in MULTI Using Version Control with the MULTI Editor and Builder Integrating with MULTI Version Control (MVC) Integrating with Third-Party Version Control Systems Integrating with a Custom Version Control System

6. Using Version Control with MULTI The MULTI IDE can be integrated with a number of different version control systems such as ClearCase, CVS, PVCS, RCS, and SourceSafe. MULTI also includes its own version control system, MULTI Version Control (MVC). Additionally you can configure a custom version control integration to support other version control systems. The first portion of this chapter describes general procedures for enabling, configuring, and using a version control system with MULTI. The later sections provide specific instructions relating to each of the supported version control systems. Configuring Version Control in MULTI MULTI supports the following version control systems: MULTI Version Control (MVC) ClearCase CVS PVCS RCS SourceSafe Note You can also configure MULTI to integrate with other version control systems by setting custom version control options. For more information, see Integrating with a Custom Version Control System on page 126. MULTI s support for version control is enabled by default and will attempt to automatically detect which version control system is being used. To configure MULTI s version control support, perform the following steps: 1. Open the Options window: In the Editor, Checkout Browser, Debugger or Launcher, select Config Options; or In the Builder, select Tools Options. 108 MULTI: Editing Files and Configuring the IDE

Configuring Version Control in MULTI 2. Select the General tab of Options window. 3. In the Version Control field, select a version control system from the drop-down list. The available options are: Auto Detect Causes MULTI to automatically detect the version control system being used. This is the default setting, and should only be changed if MULTI appears not to be integrating correctly with your version control system, or you are using a custom version control integration. Disable Disables MULTI s version control integration. CVS Configures MULTI to integrate with CVS (Concurrent Version Systems). See the CVS (http://www.cvshome.org) web site for more information. For detailed information, see Integrating with CVS on page 121. MVC Configures MULTI to integrate with MULTI Version Control (MVC), the version control system provided by MULTI. For detailed Green Hills Software, Inc. 109

6. Using Version Control with MULTI information, see Integrating with MULTI Version Control (MVC) on page 115. RCS Configures MULTI to integrate with the RCS version control system. For detailed information, see Integrating with RCS on page 123. ClearCase Configures MULTI to integrate with Rational s ClearCase version control system. For detailed information, see Integrating with ClearCase on page 120. SourceSafe (Windows only) Configures MULTI to integrate with Microsoft s SourceSafe version control system. For detailed information, see Integrating with SourceSafe on page 123. PVCS (Windows only) Configures MULTI to use MERANT s PVCS version control system. For detailed information, see Integrating with PVCS onpage121. Custom Configures MULTI to integrate with a version control system other than those listed above. To use MULTI with a custom version control system, you will need to customize various version control options, as described in Integrating with a Custom Version Control System on page 126. 4. Click the Configure Version Control button to open a dialog box that will prompt you to enter settings that are specific to the version control system you have selected. After you have entered the applicable settings, click OK in the dialog box. 5. Click OK to apply your settings to the current session and close the Options window. If you want to save these settings to be used in future MULTI sessions, select Config Save Configuration as Default. Note You may need to restart any Editors or Builders that you have open for the version control configuration changes to take effect. 110 MULTI: Editing Files and Configuring the IDE

Using Version Control with the MULTI Editor and Builder Using Version Control with the MULTI Editor and Builder The MULTI Editor and MULTI Builder contain menus that provide access to common version control actions, such as checking files in and out and viewing version history. In the Editor, version control actions are available from the Version menu. In the Builder, version control actions are available from the Tools Version Control submenu. The options on these menus vary slightly and are described below. Version Control Options from the Editor The following menu items are available in the MULTI Editor. Their availability is determined by the version control system used. Check the section corresponding to the version control system you are using to determine which items are available and any special notes on the item specific to your version control system. Check Out Update Check In/Commit Check In All Discard Changes Place Under VC Auto Checkout Check a file out of the version control system to allow for editing. If the file is not checked out, no edits will be allowed. This is not meaningful for CVS. Issue an update command. If the repository version corresponding to the version of the local file has changed, the changes are merged into the local file. This is only available for CVS. Check a file into a version control system. Commit is used for CVS, and Check In is used for other version control systems. Check in all checked out files at once. Discard current changes and release the file if it was checked out. Place a file under a version control system. If a version control system was not specified, it will be automatically detected based on the version control system used for other files in the same directory. When an edit operation is desired and this option is checked, the file will automatically be checked out. This is not meaningful for CVS. Green Hills Software, Inc. 111

6. Using Version Control with MULTI Show History Show Last Edit Revert to History Revert to Date Revert to Version Show View Starts the History Browser on the file, see The History Browser on page 141. In ClearCase, this starts the ClearCase history browser. Shows the last edit in the selected region. Some version control systems do not show deletions as the last edit. Starts the History Browser. The file is reverted to a specific version chosen through the History Browser. See The History Browser on page 141. Prompts for a date and reverts the file to that date. Prompts for a version and reverts the file to that version. Show both the working directory and the set ClearCase view. This is only available for ClearCase on non-windows hosts. The working directory used is the directory of the current file being edited. Version Control Options from the Builder These are the items that can be accessed through the Tools Version Control menu in the Builder. Check Out Check In/Commit Check In + Out Retrieve Discard Changes Place Under VC Show History Check the selected files out of a version control system to allow for edit. If the file is not checked out, no edits will be allowed. This is not meaningful for CVS. Check the selected files into a version control system. Commit is used for CVS, and Check In is used for other systems. Perform the Check In operation and then the Check Out operation. Retrieves read-only copies of the selected files. Discard current changes for the files selected and release any selected files that are checked out. Place the selected files under a version control system. If a version control system was not specified, it will be automatically detected. Starts the History Browser on the selected files. In ClearCase, this starts the ClearCase history browser. See The History Browser on page 141. 112 MULTI: Editing Files and Configuring the IDE

Using Version Control with the MULTI Editor and Builder Checkout Browser Other VC Command Starts the Checkout Browser. See The Checkout Browser on page 130. Opens a dialog which allows a version control command to be called. Automatic Checkout If you enable the Automatic Checkout option, the MULTI Editor will automatically check out a file when you start editing it. In most version control systems files that have not been checked out are read-only, which prevents you from making changes to them. CVS is an exception to this rule because it allows multiple users to edit the same file simultaneously and then makes a best effort to merge the changes. To configure the Editor to automatically check out files when you modify them: 1. In the Editor, select the Config Options. In the Builder, select Tools Options. 2. Select the General tab. 3. Click the Configure Version Control button and check the Automatic Checkout option if available (see Version Control Configuration Options on page 189). This box may not be available for certain version control systems. For example, in CVS a file is always checked out so there is no option to enable or disable Automatic Checkout. Note To control Automatic Checkout on a per-file basis, select Version Auto Checkout in the Editor. Show Last Edit To show the last edit made to a specific portion of a file: 1. In the Editor, select the portion of the file you want to examine. 2. Select Version Show Last Edit. This finds the last version of the current file in which the selected text changed (or the current line, if no text is selected) and displays the difference in the Diff Viewer. For information about the Diff Viewer, see Green Hills Software, Inc. 113

6. Using Version Control with MULTI The Diff Viewer on page 144. If the selection has never changed, a dialog explaining stating this will be displayed. This command is only available if the file is under a version control system that supports this feature (such as MVC, CVS, ClearCase, and SourceSafe). This command is also available if the file has been locally modified, in which case the Diff Viewer will display the difference between the local file and the repository version of the file. Note When using CVS, ClearCase, or SourceSafe, Show Last Edit does not detect deletions. Because lines that were deleted in past versions cannot be selected, the Show Last Edit menu item does not show deletions as the most recent change. Revert to a Previous Version of a File There are three ways to specify the version of a file to which you want to revert: To select the version to revert to from a list of all versions of the file: 1. Select Version Revert to History. 2. A History Browser will open. You can right click a version in the browser window and select Revert to Version (see The History Browser on page 141). To revert to a version checked in on a specific date: 1. Select Version Revert to Date. 2. A dialog box will open where you can enter the date of the appropriate version. To revert to a specific version number: 1. Select Version Revert to Version. 2. A dialog box will open where you can enter the appropriate version number. 114 MULTI: Editing Files and Configuring the IDE

Integrating with MULTI Version Control (MVC) Integrating with MULTI Version Control (MVC) MULTI Version Control (MVC) provides a proprietary version control system for text files. By default, MULTI is configured to automatically detect which version control system to use, and will default to MVC when no other system can be detected. If you do not have a version control system, it is easy to begin using MVC. Note MVC works on text files only. If you attempt to check in any binary files and then check them out, they may become corrupted. MVC keeps track of all changes to your text files in separate log files. When you edit a file, you first check out the file from version control. After you finish editing a file, you check in your changes. This creates a new version in the log file. The log file preserves the entire version history, allowing you to revert back to a previous version or restore previous versions for comparison. If you are using the Editor to edit a file and have Automatic Checkout enabled (see Automatic Checkout on page 113), the file is automatically checked out when you make changes. When you close the file, it is automatically checked in. During the check in process, a dialog box prompts you for comments. These comments are saved in the log file along with the new version. To prevent changes from being made to files without MVC s knowledge, all files under MVC are read-only. Files become writable when they are checked out and return to read-only status when they are checked in. (UNIX) Files become writable only to the user who checked out the files. This prevents multiple users from editing the same file at the same time. When a file is under MVC, the following directories are created in the same directory as the file: mvc.log This directory contains the MVC log files: (Windows) If the file C:\a\john\fly.c is placed under MVC, then the log file is C:\a\john\mvc.log\fly.c. (UNIX) If the file /a/john/fly.c is placed under MVC, then the log file is /a/john/mvc.log/fly.c. These log files must not be modified by hand, as all version history may be lost if the file becomes corrupted. Green Hills Software, Inc. 115

6. Using Version Control with MULTI mvc.lok This is a subdirectory of mvc.log. This directory contains the lock files that display who has checked out the file. MVC only allows one user to check out a file at a time: (Windows) The lock file for C:\a\john\fly.c is C:\a\john\mvc.log\mvc.lok\fly.c. (UNIX) The lock file for /a/john/fly.c is /a/john/mvc.log/mvc.lok/fly.c. mvc.sem This is a subdirectory of mvc.log. This directory contains temporary files used as semaphores to prevent two different MULTI sessions from writing to the same MVC log file at the same time. Using MVC There are several ways to access MVC options and commands: Select menu items in the Version menu of the Editor, or the Version Control submenu of the Builder (see Using Version Control with the MULTI Editor and Builder on page 111). Enter a full MVC command line (see Entering MVC Commands on page 116). MVC commands can be passed on the command line to the mvc executable included with MULTI, or by selecting Tools Version Control Other VC Command in the Builder. Use the Editor to edit a text file that is under version control. Files will be checked in and out automatically. Files must be placed under version control manually. To place files under MVC, do one of the following: From the Editor, choose Version Place Under VC. From the command line, run mvc with the create option (see create in Appendix B). Entering MVC Commands You can enter a full MVC command in two different places: There is an mvc executable included with MULTI that can be executed from a DOS window or from a UNIX shell. In the Builder, choose Version Other VC Command. 116 MULTI: Editing Files and Configuring the IDE

Integrating with MULTI Version Control (MVC) Many MVC actions are also available from the Version menu of the Editor, or the Version Control submenu of the Builder (see Using Version Control with the MULTI Editor and Builder on page 111). All of the commands in Appendix B, take at least one filename as an argument. Multiple filenames are separated by spaces. In all MVC commands, version refers to the MVC version number of the file on which the command operates. If no version number is specified, the current version is assumed. For a check out, the current version is the latest version on the main version sequence. For a check in, the current version is the same but with the minor version number incremented by one. For more information about specifying version numbers in MVC, see Version Numbers and Branching on page 118. Some MVC commands use a -d date option instead of a version number to refer to a given version. For more information about entering dates in MVC commands, see MVC Date Format on page 119. You can add the -c option to any MVC command that checks in a file to force MVC to prompt for comments. MVC Directory Options To use MVC with directories other than the current one, use: -L logdir Specifies the directory that contains the mvc.log directory. -S sourcedir Specifies the directory that contains the source files. For Windows: If the source files are in C:\usr\john and the log files are in C:\usr\george\mvc.log, then the command: mvc ci fly.c bat.c -S \usr\john -L C:\usr\george takes the files C:\usr\john\fly.c and C:\usr\john\bat.c and checks them into the log files C:\usr\george\mvc.log\fly.c and C:\usr\george\mvc.log\bat.c. Green Hills Software, Inc. 117

6. Using Version Control with MULTI For UNIX: If the source files are in /usr/john and the log files are in /usr/george/mvc.log, then the command: mvc ci fly.c bat.c -S /usr/john -L /usr/george takes the files /usr/john/fly.c and /usr/john/bat.c and checks them into the log files /usr/george/mvc.log/fly.c and /usr/george/mvc.log/bat.c. Version Numbers and Branching Version numbers are created when new files are added to a branch or version, allowing you to revert to previous versions if necessary. Version numbers have the form: major_version.minor_version As you create new versions, the minor version number is incremented by one for each new version. You can manually set the version number for a new version (for instance if you want to increment the major version number) by using the -v command line option of the various check in commands. This is done from an MVC command line. For example, the command: mvc ci foo.c -v 3.2 checks in the file foo.c with version number 3.2. Version numbers are never allowed to decrease. For example, a version number sequence can go from 1.4 to 1.5, or from 1.5 to 2.1, but version numbers cannot go from 2.5 to 2.4 or from 2.5 to 1.6. Creating a Branch You can create a branch in the version for a file by adding two more dots (..) to the version number. For example, a version sequence might be 1.1, 1.2, 1.3, 1.4. If you create a version with the number 1.3.1.1, that version is a branch off the main sequence. The version sequence for that branch would be 1.1, 1.2, 1.3, 1.3.1.1. The next version for that branch after 1.3.1.1 would be 1.3.1.2. To create a branch, use the -v command line option of the various check in commands. The version must be entered in the form of a branch version (with 118 MULTI: Editing Files and Configuring the IDE

Integrating with MULTI Version Control (MVC) four numbers). This must to be done from the MVC command line. For example, the command: mvc ci foo.c -v 1.5.1.1 creates a branch off of version 1.5. When you work on a branch, you should always use the -v version option. If you omit the -v version option, MVC assumes that you are working on the main version sequence. This creates a version on the main sequence instead of on the branch. For example, this command: mvc co foo.c -v 1.5.1.1 edits foo.c. Then, this command: mvc ci foo.c -v 1.5.1.2 checks it in on the branch. Compare that with the command: mvc ci foo.c which creates a version on the main branch (for example, version 1.6). MVC Date Format Some MVC commands accept a date (for example, -d date) instead of a version number to refer to a given version. The date needs to be in the form: MMDDYYhhmmss where MM =month; DD =day;yy = year; hh = hour; mm = minutes; ss = seconds. The individual components of the date can be separated with non-digit characters (except for whitespace). For example, you can specify the date as 082597120000 or 08.25.97.12.00.00. Do not put spaces in the date. If any part of the date is omitted, then the maximum value for that part is used. For example, 082597 implies 082597235959 (August 25, 1997 at 11:59:59 pm). Two-digit years between 50 and 99 are assumed to describe years from 1950 to 1999, while years from 00 to 49 are used to refer to years from 2000 to 2049. Green Hills Software, Inc. 119

6. Using Version Control with MULTI You can use four-digit years by using the -D date option which takes a date in the form: YYYYMMDDhhmmss Integrating with Third-Party Version Control Systems The following sections describe how to integrate with third-party version control systems supported by MULTI. Integrating with ClearCase If you use ClearCase, the program cleartool should exist in your path. If it does not, or if your ClearCase program uses a filename other than cleartool you should configure your ClearCase options to set the path to the ClearCase executable (see Configuring Version Control in MULTI on page 108). The default location is /usr/atria/bin/cleartool on UNIX hosts and C:\Program Files\Rational\ClearCase\bin\cleartool on windows. The following features and issues are specific to ClearCase: Show History starts the ClearCase history browser. Revert To History and Revert To Date are not available. The Show View item is added to the Editor Version menu. (see Working with Views on page 120). The Show Last Edit displays the last modification to the selected lines. Because lines that were deleted in past versions are not selected, the Show Last Edit menu item does not show deletions as the most recent change. There is no Checkout Browser support for ClearCase. Working with Views If you are going to set a view, it must be set before MULTI is started. There is no way to set or change the view once MULTI has been started. To see your current view, choose Version Show View from the Editor. This will display the working directory view and the set view. The working directory view is also displayed next to the filename being edited at the top of the editor pane. 120 MULTI: Editing Files and Configuring the IDE

Integrating with Third-Party Version Control Systems If it is necessary to work with two different views then set a view, start the Editor, and then set the next view and start another Editor. Integrating with CVS If you use CVS, the program cvs should exist in your path. If it does not, or if your CVS program uses a filename other than cvs, configure your CVS options to set the path to the CVS executable (see Configuring Version Control in MULTI on page 108). The following features and issues are specific to CVS: Show Last Edit displays the last modification to the selected lines. Because lines that were deleted in past versions are not selected, the Show Last Edit menu item does not show deletions as the most recent change. The Checkout Browser is supported with CVS. See The Checkout Browser on page 130 for more information about the Checkout Browser. The History Browser is supported with CVS. See The History Browser on page 141 for more information about the History Browser. Integrating with PVCS Note The PVCS integration is only available on Windows hosts with PVCS version 8. The integration requires some setup steps to indicate what project database is being used. The following features and issues are specific to PVCS: Show Last Edit is not available. The Checkout Browser is supported with PVCS. See The Checkout Browser on page 130 for more information about the Checkout Browser. The History Browser is supported with PVCS. See The History Browser on page 141 for more information about the History Browser. Green Hills Software, Inc. 121

6. Using Version Control with MULTI Assumptions The following assumptions are made. It is assumed that the workfile location for a project database is set at the root level and that all the subprojects are assigned default workfile locations. For example, if theworkfile location for a project database is C:\project1, then the subproject subproject1 is assigned C:\project1\subproject1 as its workfile location. It is assumed that there is a local copy of the project including subproject database files located at the project database workfile location. The integration with the Checkout Browser relies on comparing the directory structure of the project database workfile location and the project database. It is assumed the login source for the project database is either VCSID or HOME. Most of the version control operations (such as Check Out, Place Under VC) assume read/write access permissions. These permissions are assumed both for the workfile location and for the archive directory. However, you can view files read only. Required Setup Steps It is necessary to specify the project database workfile location, otherwise known as the root of the checkout. It is also necessary to specify what project database is going to be used. The are two ways to specify these parameters. 1. The fist way to configure these parameters is through the GUI. a. Select the Config Options available in most MULTI GUIs. b. Select the General tab and then choose PVCS from the Version Control pull-down. c. Click the Configure Version Control button and enter the path to the root of the checkout and the full path of the master configuration file for the project database being used. Ask your administrator for the location of this file. 2. The second way to configure these parameters is to create a.pvcsdir file at the root of each project database checkout. In other words, this file has to be located in the project database workfile location. This file should 122 MULTI: Editing Files and Configuring the IDE

Integrating with Third-Party Version Control Systems contain a single line with the full pathname of the master configuration file for the project database being used. Ask your administrator for the location of this file. The location of the file specifies the root of the checkout and the content of the file specifies what project database is going to be used. It is necessary to use this method if the auto detection option is enabled. Auto detection works by locating and reading the.pvcsdir file. Using the Integration To create a new subproject in the project database, simply create a new directory in the appropriate place in the workfile location and start checking in files. With the first checked in file, a new subproject will be created by that name. Integrating with RCS If the RCS integration with MULTI is used, then the programs ci, co,and rlog must exist in your path. As with the MVC integration, a file is read-only until it is checked out. Usually afileischecked out (Check Out), modified, and checked back in (Check In). If the Auto Checkout option is enabled, the file is automatically checked out when an edit is attempted (see Automatic Checkout on page 113). The following features and issues are specific to RCS: Show Last Edit is not available with RCS. The Checkout Browser is not supported with RCS. Integrating with SourceSafe Note The SourceSafe integration is only available on Windows hosts. If the SourceSafe integration with MULTI is used, then the program ss.exe should exist in your path. If it does not, or if your SourceSafe program uses a filename other than ss.exe you should configure your SourceSafe options to set the path to the SourceSafe executable (see Configuring Version Control in MULTI on page 108). The default location used is C:\Program Files\Microsoft Visual Studio\VSS\win32\ss.exe. One advantage of this Green Hills Software, Inc. 123

6. Using Version Control with MULTI integration is that several different databases can be used simultaneously. The user can edit files from two different databases at the same time. The integration requires some setup steps to indicate what database is being used. The following features and issues are specific to SourceSafe: Show Last Edit displays the last modification to the selected lines. Because lines that were deleted in past versions are not selected, the Show Last Edit menu item does not show deletions as the most recent change. The Checkout Browser is supported with SourceSafe. See The Checkout Browser on page 130 for more information about the Checkout Browser. The History Browser is supported with SourceSafe. See The History Browser on page 141 for more information about the History Browser. VSS Database Structure Assumptions The following assumptions are made about the structure of the Visual Source Safe (VSS) database. A working directory is defined. This should be defined using the Visual SourceSafe Explorer, which comes with the installation of VSS. The directory structure in the working directory mirrors the directory structure of the database. For example: If there is a database with the following structure: $/ _hello _hello.c andiftheworkingdirectoryof$/ is C:\ssafedir, thentheworkingdirectoryof the hello project is assumed to be C:\ssafedir\hello. Most of the MULTI version control operations (such as Check Out, Place Under VC) assume read/write access permissions. However, you can view files read only. Required Setup Steps 1. It is necessary to specify the database working folder location, otherwise known as the root of the checkout. It is also necessary to specify what database is going to be used. The are two ways to specify these parameters. 124 MULTI: Editing Files and Configuring the IDE

Integrating with Third-Party Version Control Systems a. The fist way to configure these parameters is through the GUI. i. Select the Config Options available in most MULTI GUIs. ii. Select the General tab and then choose SourceSafe from the Version Control pull-down. iii. Click the Configure Version Control button and enter the path to the root of the checkout and the directory path of the srcsafe.ini file for the database being used. Ask your administrator for the location of this file. b. The second way to configure these parameters is to create a.ssdir file at the root of each database checkout. This file should contain a single line with the directory path to the srcsafe.ini file for that particular database. For the example in the previous section it would be necessary to place a.ssdir file in the directory C:\ssafedir. The contents of the file would look similar to: C:\Program Files\Microsoft Visual Studio\VSS Ask your administrator for the location or determine the location by using the Open SourceSafe Database option in the Visual SourceSafe Explorer. This is a one time setup step required for each database checkout you want to use the MULTI version control integration with. It is necessary to use this method if the auto detection option is enabled. Auto detection works by locating and reading the.ssdir file. 2. Set the SSUSER environment variable. Set SSUSER to your SourceSafe username. This is necessary to avoid queries for your username. 3. Set the SSPWD environment variable. Set SSPWD to the SourceSafe password that corresponds to the SSUSER environment variable. This is necessary to avoid queries for your password. Using the Integration To create a new project in the database, simply create a new directory in the appropriate place in the working directory and start checking in files. With the first checked in file, a new project will be created by that name. Green Hills Software, Inc. 125

6. Using Version Control with MULTI Integrating with a Custom Version Control System You can also configure MULTI to integrate with a custom version control system. To do this, you must use the Custom Configuration dialog to specify which commands perform the basic version control operations, such as checking in a file and checking out a file. Each of the commands requires a filename as an argument and should return output in a form acceptable to MULTI. For a full description of the commands that must be specified and the acceptable output for each, see Custom Version Contol Options on page 191. Minimal preprocessing is performed on the commands specified in the Custom Configuration dialog. If %c is specified as part of a command and comments are available, the %c is substituted with the comment string before the command is run. The following example shows the custom version control configuration settings for the SCSS version control system. (To open the Custom Configuration dialog, select Config Options from the Launcher, Debugger, or Editor, or Tools Options from the Builder, then select the General tab, set the Version Control field to Custom, and then click the Configure Version Control button.) 126 MULTI: Editing Files and Configuring the IDE

Integrating with a Custom Version Control System Example 1. Custom Configuration for SCSS Version Control The settings shown below configure MULTI for use with the SCSS version control system. ThefulltextfortheUnder VC field in this example is: perl -e \ use File::Basename; exit not -r (dirname($argv[0]). -> \"/SCCS/s.\". basename($argv[0]))\ The full text for the Who field is in this example is: perl -e \ use File::Basename; $d = dirname($argv[0]); $b= basename($argv[0]); ->open F, \"sccs info $d \"; [.0-9]+([-_A-Za-z0-9]+)/;}\ Green Hills Software, Inc. 127

6. Using Version Control with MULTI 128 MULTI: Editing Files and Configuring the IDE

Chapter 7 Version Control Tools This Chapter Contains: The Checkout Browser The History Browser The Diff Viewer

7. Version Control Tools MULTI provides three tools that provide graphical interfaces for viewing information about files under version control: Checkout Browser Provides a graphical view of the files in your checkout and easy access to version control operations, such as checking files in and out and viewing revision history. For more information, see The Checkout Browser on page 130. History Browser Displays the complete revision history of any file under version control. For more information, see The History Browser on page 141. Diff Viewer Compares two ASCII files (typically different revisions of the same file) and highlights differences between them. For more information, see The Diff Viewer on page 144. Each of these tools is described in detail below. The Checkout Browser The Checkout Browser is designed to be used with CVS, PVCS, or SourceSafe to give you a graphical view of your checkout and the status of files in the repository. While the History Browser (see The History Browser on page 141) is designed to give you detailed version information about a specific file, the Checkout Browser gives you general information about every file in your checkout, and provides access to more detailed information about any file within the checkout. The Checkout Browser also allows you to manipulate the files in your checkout. For example, you can select files in the Checkout Browser that have been modified, compare those files using the Diff Viewer, then commit those files to the repository. Note The term repository is used throughout this chapter to mean the central store of version control information for the version control system in use. Different version control systems may use different terms, for example, in SourceSafe the repository is called a database. 130 MULTI: Editing Files and Configuring the IDE

The Checkout Browser Starting the Checkout Browser You can start the Checkout Browser any of the following ways: From the Launcher, click the Checkout Browser button ( ), or select File Open Checkout Browser. (For more information about the Launcher, see TheMULTILauncher onpage4). (UNIX) From a shell with the Green Hills MULTI tools directory in the PATH, entermcobrowse. From MULTI, use the checkoutbrowser command. From the History Browser, select File Checkout Browser. Using the Checkout Browser There are basic modes of operation for the Checkout Browser. They are: Scanning a preexisting checkout Modifying an existing checkout Creating a new checkout This section explains how to scan a preexisting checkout. For information about modifying an existing checkout or creating a new checkout, see Using the Checkout Editor on page 139. To scan a preexisting checkout: 1. Set the Roots field. The Roots field indicates what directories will be scanned and displayed in the browser. You can use any of the following methods to select what will be displayed: Enter a directory in Roots. When using CVS, it is possible to supply a comma separated list of directories. Use the Roots drop-down list to select from directories that have previously been displayed in the Checkout Browser. Click to browse for the correct folder. Green Hills Software, Inc. 131

7. Version Control Tools 2. Once you have selected the directories to be displayed, use the File menu to select one of the following two types of scans: Local Rescan provides local information, such as which files have been locally modified. Local scans do not contact the remote repository, and as a result are usually faster and do not tax the remote repository, which may have many users. Only available for CVS. Full Rescan gathers information from the remote repository and provides information about local and remote changes to files. Full scans usually take longer than local scans. Pressing Enter after entering or selecting a directory in the Roots field will also perform a full scan. 3. The Checkout Browser will scan the selected directories and display the results of the scan. 132 MULTI: Editing Files and Configuring the IDE

The Checkout Browser Green Hills Software, Inc. 133

7. Version Control Tools The following information is displayed in the Checkout Browser: Filename Names of files in the folder you selected. You can click the and buttons to expand or contract the file list. Status Current version control status of the file. The possible values for the status are: No changes The file has not been changed. Locally Modified Changes have been made to the file in your checkout that do not exist in the remote repository. There is a chance that updating the file will result in conflicts if changes have been made to the repository since your last scan. Locally Added The file exists in your checkout and has been marked to be added to the remote repository when committed. Locally Removed The file has been marked to be removed from the remote repository when committed. The file no longer exists in your checkout. Remotely Modified The version in the repository is newer than the version in your checkout, perhaps because another user has checked in a new version of the file. Remotely Added The file exists in the remote repository, but is not in your checkout. This is most likely because someone else has added the file to the repository. Remotely Removed The file has been removed from the repository, but is still in your checkout. Not under VC The file is not recognized by the version control system. This identifies files that have been created inside your checkout, but have not been added or marked to be added to the repository. Needs Merge The file has been modified in your checkout, but a newer version exists in the repository than the version you started with. You must update your checkout to merge the changes between your local version and the repository version before you can commit your changes to the repository. There is a chance that the process of updating the file will result in conflicts if changes have been made to the repository since your last scan. Will Conflict Similar to Needs Merge, except when you update your checkout, the merge will create conflicts that must be resolved before you will be able to commit the file to the remote repository. Has Conflict The file in your checkout contains conflicts that must be resolved before you will be able to commit it to the remote repository. 134 MULTI: Editing Files and Configuring the IDE

The Checkout Browser Local Version Version of the file as it currently exists in the local checkout. Tag The branch tag, if applicable. Locked By A list of user names that have the file locked. Only available for SourceSafe and PVCS. Checkout Browser Menus The following menus and menu items are available from the Checkout Browser: File menu Contains the following items: Start MULTI Launcher Opens the Launcher. Full Rescan Gathers information from the remote repository and provides information about modified files. After this scan the Checkout Browser will show the status of each file in your checkout and corresponding repository at the time it was scanned. Local Rescan Provides local information, such as which files have been locally modified. After this scan the Checkout Browser will show as much status information for each file in your checkout as it can determine without contacting the repository. Only available for CVS. Update Checkout Brings the specified local checkout up to date with the remote repository, performs a scan for local changes, and displays the results in the Checkout Browser. Halt Scan / Update Stops any Rescan or Update in progress. Checkout Editor Open the Checkout Editor. This feature is only supported when using CVS. It is used to create a new checkout, or to modify the contents of an entire checkout or portion of a checkout, such as reverting a checkout to a certain date. For more information, see Using the Checkout Editor on page 139. Close ClosestheCheckout Browser. Green Hills Software, Inc. 135

7. Version Control Tools Show menu This menu is used to select what type of files are displayed in the Checkout Browser. A check mark appears next to items that are currently selected for display. Selecting a menu item toggles the display on or off for that particular type of file. You can choose to display any combination of file types from the menu. The menu items you can select from are: No changes Displays files with no changes. Conflicts Displays files with conflicts that must be resolved before you can commit your local version to the repository (files with Status listed as Needs Merge, Will Conflict, orhas Conflict). Local Changes Displays files that have been changed locally. Remote Changes Displays files that have been changed remotely. Not under VC Displays files that are not currently under Version Control. Config menu This is the same Config menu that appears in other MULTI GUIs. You can use it to modify configuration options for MULTI. For more information, see Chapter 9, Configuration Options. File Operations Shortcut Menu When you right-click one or more filenames or directories in the Checkout Browser, thefile Operations shortcut menu displays. The menu will display some or all of the following options, depending on which version control system you use: Diff with Local Version Opens a Diff Viewer that shows differences between the local file and the version of the file that was originally checked out. See The Diff Viewer on page 144. Diff with Remote Version Opens a Diff Viewer that shows differences between the latest version in the repository and your local version. This menu item is only available for files that have been remotely modified (files with Status listed as Remotely Modified, Needs Merge, orwill Conflict). Edit Opens an editor on the selected files. 136 MULTI: Editing Files and Configuring the IDE

The Checkout Browser Show History Opens a History Browser that displays information about all versions of the file (see The History Browser on page 141). If you select multiple files, a separate History Browser will open for each file. Rescan Updates the status of the selected files or directory. Useful for determining whether either the repository or local versions have been modified since the last full scan. Update Brings the selected files or directory in your checkout up to date with the versions in the repository. Commit / Check In Checks in local changes of the files or directory selected, creating new versions in the repository. Check Out Checks out the selected files from the repository locking them. Only available for SourceSafe and PVCS. Unlock Releases the lock on the selected files. Only available for SourceSafe and PVCS. Place Under VC Adds the selected files to the repository, creates an initial version, and checks that version out. Only available for SourceSafe and PVCS. Revert to Repository Removes any local changes and reverts files in your local checkout to the version in the repository. Add Marks files to be added to the version control system. Files will not be added to the remote repository until you Commit them. Delete Marks files to be deleted from the version control system. If the files selected are not under version control they will be deleted from your checkout. If the files exist in the repository they will be removed from your checkout and marked for deletion. They will not be removed from the repository until you Commit them. The menu options available in the File Operations shortcut menu will depend on the files or directories you have selected. For example, if you select a directory, the Show History and Diff menu options will be unavailable. Similarly, you cannot Commit a file if no changes have been made, Add a Green Hills Software, Inc. 137

7. Version Control Tools file that already exists in the repository, or Update a file that does not have any remote changes. Status Bar and Status Window The Checkout Browser performs many operations that can take a long time. Information about the operation the Checkout Browser is performing at any given time is displayed in two places, both towards the bottom of the window. While performing a scan, modify or create operation, the Status Window displays a continuously updating stream of text. For CVS, this information includes the number of directories that have been scanned and the current output from the CVS executable. Other version control systems may display different information. While performing operations such as committing files, the Status Bar displays the current activity. For example, it will report that it is committing files and once they are committed, the display will change to report which file it is currently rescanning to determine the file s new status. Features and Issues Specific to CVS There are some limitations in the Checkout Browser when using it with CVS. Most of these limitations are imposed by the nature of CVS. The following trade-offs have been made in order to maintain access to common CVS actions: Updating the entire checkout (or a subdirectory) automatically uses the -Pd option to pull in new directories from the repository and prune empty directories from the checkout. Directories that have been added to the repository do not display after a Rescan although they will be displayed after an Update. This is because the Checkout Browser cannot determine whether the new directories are empty, and will be pruned with the next update. 138 MULTI: Editing Files and Configuring the IDE

The Checkout Browser Using the Checkout Editor The Checkout Browser provides the capability to create or modify an entire CVS checkout with the Checkout Editor. Note This feature is only supported when using CVS. To start the Checkout Editor select File Checkout Editor from the Checkout Browser. The Checkout Editor has two modes of operation, one for creating a checkout and one for modifying a checkout. To create a checkout: 1. Select the Create Checkout tab. 2. Fill in the required fields: Create Checkout In Directory Enter the destination directory, which is where the checkout will be created. If this directory does not exist but its parent does, the directory will be created automatically. Modules to Checkout Enter a space-separated list that specifies what should be checked out. You can enter filenames, directories, and/or modules as defined on the CVS server. Tag to Checkout Enter the tag to use when creating the checkout. Repository Location Enter the location of the repository. By default, it is set to whatever is in the $CVSROOT environment variable. 3. Click OK to start creating the checkout. Green Hills Software, Inc. 139

7. Version Control Tools To modify a checkout: 1. Select the Modify Checkout tab. 2. Enter the directory of the checkout to be modified in the Checkout Location. This may be a subdirectory of the root of the checkout. 3. Select either Revert to HEAD or one or both of Revert to Tag and Revert to Date: Revert to HEAD Select to reset all sticky tags. This will clear the selection of Revert to Tag and Revert to Date if either was selected. Revert to Tag Select the check box, then enter the tag of the checkout to revert to in the text field. This will clear the selection of Revert to HEAD if it was selected. Revert to Date Select the check box, then enter the date of the checkout to revert to in the text field. This will clear the selection of Revert to HEAD if it was selected. Note If you specify both a tag and a date, CVS sets the sticky tag. It also sets the version back to the specified date in that tagged branch, but does not set the sticky date. 4. Click OK to start modifying the checkout. 140 MULTI: Editing Files and Configuring the IDE

The History Browser The History Browser The History Browser allows you to examine the versions of a file that exist in your version control system. As you scroll through the versions of the file, you can view the check in comments associated with those versions. You can also use the History Browser to compare versions or revert to a previous version. Using the History Browser To start the History Browser, do one of the following: Select Version Show History in the Editor. Select Tools Version Control Show History in the Builder. Select Show History in the Checkout Browser (see The Checkout Browser on page 130), You can open the History Browser as a stand-alone application by starting the MULTI Editor with the -historybrowser filename option. For example, to start a History Browser that lists the version history of the source files sample.cc, enter: me -historybrowser sample.cc Any of these actions will open the History Browser: Green Hills Software, Inc. 141

7. Version Control Tools The History Browser displays the following information: Status Current version control status of the file. Current Tag Identifying label that was last used to update your local machine. A version might have several labels associated with it in the version control system, but only the label used to update the file on your local machine will appear. Version List The top half of the History Browser window displays the following information about all versions logged in version control: Date Lists the date and time versions were checked in. Version Lists the version numbers assigned to files. If possible, version numbers are grouped by branches with the +/- construct as seen in the previous figure. User Lists the user who saved the specified version. Tag Lists the tags corresponding to the specified version. This is only available for CVS. Information is displayed sorted by Version. You can change the sort criteria by clicking any of the column headings. Comment area The bottom half of the History Browser window displays comments associated with the version selected in the top half of the window. It also lists tags associated with this version. Note To view version changes that occurred after the History Browser was opened, select File Refresh History. History Browser File Menu The History Browser has one menu, the File menu, which contains the following items: Diff with Local Version Opens a Diff Viewer that shows the differences between the selected version of the file and your local version of the file. See The Diff Viewer on page 144. 142 MULTI: Editing Files and Configuring the IDE

The History Browser Diff 2 Versions Opens a Diff Viewer that shows the differences between two selected versions of the file. If you select a range of versions, Diff 2 Versions will perform a diff between the upper and lower bounds of the range. See The Diff Viewer on page 144. View Selected Version Opens the selected version of the file in an editor. Revert to Selected Version Overwrites the local copy of the file with the selected version. Edit Local Version Opens the local copy of the file in an editor. Refresh History Updates the information in the History Browser. Checkout Browser Opens the Checkout Browser. See The Checkout Browser on page 130. Close Closes the History Browser. History Browser Shortcut Menu The following shortcut menu can be accessed by right-clicking a version in the History Browser: Diff with Local Version Opens a Diff Viewer that shows differences between the selected version of the file and your local version of the file. See The Diff Viewer on page 144. Diff 2 Versions Opens a Diff Viewer that shows difference between the two selected versions of the file. If you select a range of versions, Diff 2 Versions will performs a diff on the upper and lower bounds of range. See The Diff Viewer on page 144. View Opens the selected version of the file in an editor. Revert to Overwrites the local copy of the file with the selected version. Green Hills Software, Inc. 143

7. Version Control Tools The Diff Viewer The Diff Viewer graphically displays differences between two ASCII files, whether they are different files or different versions of the same file. To open the Diff Viewer, do one of the following: MULTI automatically opens the Diff Viewer whenever you choose to compare two files in the History Browser or Checkout Browser (see The History Browser on page 141 and The Checkout Browser on page 130). The Diff Viewer is a stand-alone executable that can be opened from a command line. For UNIX, the executable is diffview For Windows, the executable is diffview.exe For more information and command line options, see Opening the Diff Viewer from the Command Line on page 145. In the Debugger, use the Diff command. In the Editor, select Tools Diff Files (see The Tools Menu on page 67). If you have not already specified which files to open in the Diff Viewer, the Choose two files dialog box will open: Select filenames and version to compare, then click Diff. TheDiff Viewer will open with the two files that are being compared. For more information, see Using the Diff Viewer on page 146. 144 MULTI: Editing Files and Configuring the IDE

The Diff Viewer Opening the Diff Viewer from the Command Line The Diff Viewer accepts command line arguments. You can control the files and versions being compared in the viewer by setting these options. The MVC-style syntax is: diffview [options] file1 [-v vers1] [file2 [-v vers2]] The CVS-style syntax is: diffview [options] [-r rev1 -D date1] [-r rev2 -D date2] file1 [file2] The Diff Viewer options include: -h, --help (UNIX only) Displays information about the options. -reuse Reuse an existing Diff Viewer window (default). -new, -noreuse Open a new Diff Viewer window. Note Whitespace represents space and tab characters. It does not represent newline characters. Green Hills Software, Inc. 145

7. Version Control Tools Using the Diff Viewer The Diff Viewer contains the following features: The main panes of the Diff Viewer display the two files that are being compared. Differences between the files are highlighted in the control area color, while the current selection is highlighted in the highlight color. Lines that are identical have a background whose color is the foreground color. The Status Bar displays the current diff number and total number of diffs. The pane in the lower-right corner displays the version control comments associated with the file displayed in the right-hand pane. It is empty if the file is not under version control. The pane in the lower left corner is the Diff List. It contains a list of all Diff Views that have been opened in the current Diff Viewer session. The columns in this pane represent the following (from left to right): The first column displays a blue dot next to the current Diff. TheReload ( ) button can be used to reload the current diff from the files on disk. The second column shows the filename of the file that will be displayed in the left hand pane when the row is selected, and the third column shows the version of that file. If the file is on disk, this field will display disk, if the file has been locally modified, it will display local (version number) to indicate the version of the file that it is based on. 146 MULTI: Editing Files and Configuring the IDE

The Diff Viewer The fourth column shows the filename of the file that will be displayed in the right hand pane when the row is selected, and the fifth column shows the version of that file. If the file is on disk, this field will display disk,if the file has been locally modified, it will display local (version number) to indicate the version of the file that it is based on. The last column displays the total number of differences. A question mark (?) in this column indicates that the number of differences has not been calculated. To improve performance, the number of differences is calculated only when that Diff View is displayed. Right-click in this box to access the Diff List Commands shortcut menu, which contains the following operations: Show Diff Displays the highlighted diff view in the main panes of the Diff VIewer. The blue dot will appear next to the diff that is being displayed. Remove Diff Removes the highlighted diff view from the Diff List, and from the main panes of the Diff Viewer, if it is currently displayed. Green Hills Software, Inc. 147

7. Version Control Tools Navigating the Diff Viewer The Diff Viewer provides several ways to navigate through the files: The Next ( )andprevious ( ) buttons scroll through differences between the two displayed versions. The First () and Last () buttons display the initial and final difference in the diff view. The plus (+) and minus (-) keys scroll up and down through the differences, and the asterisk (*) re-positions the pane to display the current difference. You can use the Editor keyboard shortcuts Ctrl + F and Ctrl + B to incrementally search forward or backward through the files (see Incremental Searching on page 26). If there is no current selection, the Diff Viewer begins its search at the top left corner of the visible pane. You can use the Editor keyboard shortcut Ctrl + G to go to a line number (see Quickly Go To a Line on page 34). The line numbers displayed along the left margin of the files can be used as selection bars. Diff Viewer Menus The following Diff Viewer actions can be accessed through the File menu or the Keyboard Shortcuts listed here. Open Diff Ctrl + O Opens a diff file selection dialog box which will add a new diff to the current Diff View window. Open New Diff Ctrl + Shift + O Opens a new diff file selection dialog box which will show the new diff in a new Diff Viewer window. Show Current Diff Ctrl + * Re-positions the Diff Viewer panes to the current diff (highlighted in the highlight color). Close Closes the Diff Viewer. Ctrl + Q 148 MULTI: Editing Files and Configuring the IDE

The Diff Viewer The Diff Viewer can be put in several different modes to alter what types of differences it shows to the user. The following Diff Viewer modes can be set through the View menu. Ignore Whitespace Amount Ignores differences in the amounts of whitespace between two otherwise identical lines. For example, in this mode, the following text is considered to be the same: void func(int a); and void func(int a); If one line uses ten spaces while its counterpart uses only one, this difference is not considered significant. However, if the second line uses no whitespace, a difference is shown. You can only select one whitespace option at a time. Ignore Whitespace for C Ignores whitespace using heuristic C tokenization of a file. Whitespace differences within a line that do not affect compilation do not show up as differences. For example, in this mode, the following text is considered to be the same: void func(int a); and void func ( int a ) ; Because it does not have enough information available to perform a true compilation of the file, the heuristic parser that C tokenization uses cannot perfectly account for all cases. You can only select one whitespace option at a time. Ignore All Whitespace Ignores all whitespace differences between files. For example, in this mode, the following text is considered to be the same: voidfunc(inta); and void func (int a); You can only select one whitespace option at a time. Green Hills Software, Inc. 149

7. Version Control Tools Case Insensitive Ignores all differences in capitalization between lines. For example, in this mode, the following text is considered to be the same: void func(int a); and void Func(int A); This mode can be selected along with one of the whitespace modes. Diff Viewer Shortcut Menu When you right-click in one of the files being compared, the shortcut menu provides the following options: Edit File on Disk Opens the selected file in a text editor. Show Last Edit Diffs the file version you right-clicked with the most recent version of the file in which the selected text changed. Both panes update as needed to display applicable versions. This option only applies to files that are under version control. It only appears when you have selected a region of text. Show Last Edit in File Diffs the file version you right-clicked with the most recent version of the file that changed. Both panes update as needed to display applicable versions. This option only applies to files that are under version control. It only appears when you have not selected a region of text. Show History Opens a History Browser for the selected file. See The History Browser on page 141. This option only applies to files that are under version control. Set to Current Diff Specifies that the diff containing the cursor is the current diff (highlighted in the highlight color). 150 MULTI: Editing Files and Configuring the IDE

Part III Configuring themulti IDE

Chapter 8 Configuring and Customizing MULTI This Chapter Contains: Setting Configuration Options Creating Custom Functionality Using Scripts and Macros Using Startup Files Customizing the Graphical User Interface (GUI) Configuring and Customizing Toolbar Buttons Configuring and Customizing Menus Customizing Keys and Mouse Clicks Configuring Window Docking Configuring File Extensions Using a Custom Web Browser with UNIX

8. Configuring and Customizing MULTI MULTI provides the ability to configure and customize your Integrated Development Environment (IDE) to fit the way you work most efficiently. This chapter explains how to: Set configuration options that affect how the various components of the MULTI IDE function (see Setting Configuration Options on page 154). Use scripts and/or macros to automate tasks and create custom functionality (see Creating Custom Functionality Using Scripts and Macros on page 159). Use startup files to configure a MULTI session using specific configuration settings (see Using Startup Files on page 159). Customize the appearance and behavior of MULTI s graphical components (see Customizing the Graphical User Interface (GUI) on page 162). Setting Configuration Options MULTI contains a large number of standard configuration options that control how the various components of the MULTI IDE function. These options can be changed according to your specific needs and preferences. Your configuration settings can be saved in a configuration file (*.cfg), which MULTI can use to reconfigure itself at startup. Alternatively, you can manually load a configuration file during a session to reconfigure your current environment. You can edit MULTI s configuration options with the Options dialog box or by issuing the configure command from the Debugger command pane. Configuration settings entered with the configure command are automatically reflected in the Options dialog box. The following sections explain how to use the Options dialog box, the configure command, or a configuration file to configure your MULTI environment. Note Changes to configuration settings are not automatically saved for future MULTI sessions. You must manually save configuration if you want them available in the future (see Saving Configuration Settings on page 157). 154 MULTI: Editing Files and Configuring the IDE

Setting Configuration Options Using the Options Dialog Box To make changes to MULTI s configuration options using the GUI, do one of the following: Select Config Options from the Launcher, Debugger, or Editor. Select Tools Options from the Builder. The Options dialog box will open, which allows you to set most of the configuration settings that affect MULTI. For more information about each configuration option and its available settings, see Chapter 9, Configuration Options. Using the configure Command You can set or edit configuration options from the MULTI Debugger by issuing the configure command in the command pane. The syntax for using the configure command can be one of the following: configure config_item=value configure config_item:value configure config_item value where config_item identifies which option you are setting and value is an appropriate setting for that options. For example: configure tabsize=9 configure background #ffffff configure moon: On configure linenumbermode: Both Numbers configure prompt: "> " configure status.stopped STOPPED configure key: "Up"@Command=backhistory For a complete description of every configuration option and the available settings for each, see Chapter 9, Configuration Options. Tip You can enter the command: configure? in the Debugger command pane to display a list of all the items that can be configured with the configure command. Green Hills Software, Inc. 155

8. Configuring and Customizing MULTI Using Configuration Files As an alternative to setting configuration options using the Options dialog box or the configure command, you can create configuration files manually using the MULTI Editor or any text editor. Configuration File Format Each line in a configuration file should either: Begin with a pound sign (#) as the first non-whitespace character and contain a comment (these lines are ignored) Be in the format config_item:value where config_item identifies which option you are setting and value is an appropriate setting for that option. Appropriate values for config_item and value are the same as those used with the configure command, but you do not need to include the configure command in.cfg files. For a complete description of every configuration option and the available settings for each, see Chapter 9, Configuration Options. Example 1. Configuration File Contents # This is a comment which is ignored tabsize: 8 background: #ffffff moon: On linenumbermode: Both Numbers prompt: "> " # The following blank line is ignored as well: status.stopped: STOPPED key: "Up"@Command=backhistory 156 MULTI: Editing Files and Configuring the IDE

Setting Configuration Options Saving Configuration Settings If you change your configuration settings using the Options dialog box or the configure command, you must save your changes if you want to preserve them for future MULTI sessions. When you save configuration settings, a.cfg file is created. Note MULTI does not prompt you to save changes to configuration files when you quit, so be sure to save any settings that you want to persist across sessions. After you save your configuration options to a.cfg file, you can use that file to configure MULTI automatically every time it starts up, or you can use the file to manually configure new or existing MULTI sessions. The following list describes the different ways that you can save your configuration settings and apply them to future sessions. To save your current settings so that they are automatically loaded every time you start MULTI, do one of the following: Select Config Save Configuration as Default (from the Builder, Tools Configuration Save Configuration as Default). Use the saveconfig command. The current settings will be saved in the user configuration file, which MULTI reads each time it starts. For more information about the user configuration file, see Using Startup Files on page 159. To save your current settings, but not load them automatically every time you start MULTI: Select Config Save Configuration (from the Builder, Tools Configuration Save Configuration). The Save Configuration to what file? dialog box will open, where you can enter the filename and path for this configuration file. This save your settings to a *.cfg file. This saved configuration file will not be automatically loaded at start up, but can be manually loaded in future sessions (see Loading Configuration Files on page 158). Green Hills Software, Inc. 157

8. Configuring and Customizing MULTI To save your current settings as the global configuration file, sothattheyare always loaded for every user of the installation: Select Config Save Configuration (from the Builder, Tools Configuration Save Configuration). The Save Configuration to what file? dialog box will open. Save the file as: (Windows) install_dir\config\ghs.cfg (UNIX) install_dir/config/ghs.cfg For more information about the global configuration file, see Using Startup Files on page 159. Loading Configuration Files When MULTI starts a session, it automatically initializes its configuration options from the following configuration (*.cfg) files, if they exist, in the following order: Global configuration file. User configuration file. The configuration file, if any, specified on the command line with the -config option. Settings in a configuration file specified on the command line can override global or user options. Script files can also affect configuration options. For more information about loading configuration settings upon startup, see Using Startup Files on page 159. To load a predefined configuration file during a MULTI session, do one of the following: Choose Config Load Configuration (from the Builder, Tools Configuration Load Configuration), then select the configuration file you want to load. In the Debugger command pane, use the configurefile command (see configurefile in Other General Configuration Options on page 197). 158 MULTI: Editing Files and Configuring the IDE

Creating Custom Functionality Using Scripts and Macros Clearing Configuration Settings To permanently delete your user configuration file, which contains configuration options you have saved to be used as your default settings: Select Config Clear Default Configuration (from the Builder, Tools Configuration Clear Default Configuration). Future sessions will use MULTI s default settings unless you create a new user configuration file, or specify another configuration file for the session. See Using Startup Files on page 159 for more information about the user configuration file. Creating Custom Functionality Using Scripts and Macros You can use scripts and/or macros to customize MULTI to simplify and automate tasks. A script is a list of commands and expressions in a file that MULTI reads and executes as if they were entered individually in the Debugger command pane. Scripts are powerful tools for automating both common tasks and regression testing. A script file could, for example, compare a program variable to a constant value and then perform some action based on that result. Scripts are also useful for configuring your target board. You could also write a command script that executes parts of your program and then checks to see whether your program is running correctly. Such a script would be useful for verifying that your program still runs as expected after you make changes. For complete details on how to write, use, and debug scripts, see Chapter 8, Using MULTI Scripts in the MULTI: Debugging book. Using Startup Files When MULTI starts up, certain configuration files are loaded automatically to set up the environment, and when the Debugger loads a program, certain additional script files may be executed. Because the same configuration items can exist in multiple files, the order which these files are loaded is important. A configuration change in a later file will override the effects of a previous change. Green Hills Software, Inc. 159

8. Configuring and Customizing MULTI On startup, MULTI loads the configuration files in the following order (if a file does not exist, it is skipped): 1. Global configuration file 2. User configuration file 3. Command Line configuration file After the MULTI Debugger has loaded these configuration files it then runs scripts in the following order (if a file does not exist, it is skipped): 1. Global script file 2. User script file 3. Command Line script file 4. Program script file The global configuration file, user configuration file, and command line configuration file are parsed on MULTI startup, irrespective of which MULTI component is launched. The global script file, user script file, and command line script file are executed when MULTI s first Debugger window first appears (i.e., the first time you start a Debugger on a program from an invocation of MULTI). All Debugger windows launched in a debugging session share the same Debugger environment. If you launch multiple Debugger windows from the same MULTI program (for example, the Builder), all of the script files for the corresponding programs being debugged will be executed, resulting in the final Debugger environment. Global configuration file (Windows) install_dir\config\ghs.cfg (UNIX) install_dir/config/ghs.cfg This file is useful in setting up a common environment, required by whole user groups when debugging any program. If ghs.cfg is not found, multi.cfg will be used, if it exists (me.cfg if using MULTI Editor as a stand-alone executable). To always override the configuration file for a particular application, create a configuration file in the override directory, which should exist in the directory containing ghs.cfg. The override configuration file should be named application_name.cfg, where application_name is the name of the application to override. 160 MULTI: Editing Files and Configuring the IDE

Using Startup Files User configuration file Windows NT, 2000 and XP user_dir\application Data\GHS\ghs.cfg Windows 98/ME either install_dir\users\user_name\ghs\ghs.cfg or install_dir\users\default\ghs\ghs.cfg, depending on whether MULTI is able to obtain the user s name. UNIX user_dir/.ghs/ghs.cfg This file is useful in setting up a common environment, required by a single user when debugging any program. If ghs.cfg is not found, multi.cfg will be used, if it exists (me.cfg if using MULTI Editor as a stand-alone executable). To always override the configuration file for a particular application, create a configuration file in the override directory, which can be created in the directory containing ghs.cfg. The override configuration file should be named application_name.cfg, where application_name is the name of the application to override. Command line configuration file You can specify a configuration file on the MULTI command line with -config filename or -configure filename. This feature is not available when running the MULTI Editor as a separate executable. Global script file (Windows) install_dir\config\multi.rc (UNIX) install_dir/config/multi.rc This file is useful for commands that need to run once when any person in a user group starts the Debugger for the first time in a debugging session. User script file (Windows) user_dir\ghs\multi.rc (For more information about user_dir see User configuration file, above.) (UNIX) user_dir/.ghs/multi.rc This file is useful for commands that need to run once when debugging any program by a single user. Command line script file You can specify a script file in the command to run MULTI with the -rc option, such as: multi my_prog -rc your_script Green Hills Software, Inc. 161

8. Configuring and Customizing MULTI Program script file (Windows) executable_dir\executable_name.rc (UNIX) executable_dir/executable_name.rc The program script file is executed every time that program is loaded into a Debugger window, that is, on every new Debugger opened window on that program, on every program reload (debug command with no arguments), but not on every program restart. If you load a new program into an existing Debugger window, MULTI will automatically execute the commands in the script file of the new program (if any), but it does not clean up the effects of the script file of the old program (if any). For more information about writing scripts to include in your startup files, see Chapter 8, Using MULTI Scripts in the MULTI: Debugging book. Customizing the Graphical User Interface (GUI) MULTI allows you to customize buttons, menus, keystroke combinations, and mouse clicks in the Debugger, Builder, and Editor. You can remove these GUI elements, add new GUI elements, or change the commands that are executed when the GUI element is used. You can define customized GUI elements using the following methods: Use configuration commands in the Debugger command pane. Use theconfig Options dialog box to access and change configuration options. You will need to refer to the corresponding commands that appear in the following sections for proper syntax. Write a script file that contains customization commands. The following table lists the commands you need to execute for each GUI element. Be aware that the script files that MULTI loads automatically (global, user, and program script files) are loaded only when the Debugger is launched, so do not put customizations that apply to the Builder and Editor into these startup script files; use a configuration file instead. For more information about writing a script, see Chapter 8, Using MULTI Scripts in the MULTI: Debugging book. Changes must be be saved in a configuration file if you want the configuration available for later use (see Saving Configuration Settings on page 157). Once you have defined a configuration file or script file that customizes the GUI, you 162 MULTI: Editing Files and Configuring the IDE

Customizing the Graphical User Interface (GUI) can have MULTI load that file. For more information about these and other files that MULTI uses at startup, see Using Startup Files on page 159. To customize a particular GUI element, use the following as a guide: Debugger buttons Debugger command pane Use the debugbutton command (see Configuring and Customizing Toolbar Buttons on page 164). GUI Select Config Options Debugger Configure Debugger Buttons (see Debugger Options Tab on page 203). Editor buttons Debugger command pane Use the editbutton command (see Configuring and Customizing Toolbar Buttons on page 164). GUI Select Config Options Editor Configure Editor Buttons (see MULTI Editor Options Tab on page 222 GUI menus Debugger command pane Use the menus command (see Configuring and Customizing Menus on page 166). GUI Select Config Options General tab Menus (see General Options Tab on page 183). Keyboard shortcuts Debugger command pane Use the keybind command (see Customizing Keys and Mouse Clicks on page 169). GUI Select Config Options General tab Keys (see General Options Tab on page 183). Mouse actions Debugger command pane Use the mouse command (see Customizing Keys and Mouse Clicks on page 169). GUI Select Config Options General tab Mouse (see General Options Tab on page 183). Green Hills Software, Inc. 163

8. Configuring and Customizing MULTI Configuring and Customizing Toolbar Buttons You can customize Toolbar buttons that appear in the Debugger or Editor using the following commands: debugbutton [num] [name] [c=command] [i=iconname] [h=helpstring] [t=tooltip] editbutton [num] [name] [c=command] [i=iconname] [h=helpstring] [t=tooltip] The arguments name, command, iconname, helpstring, and tooltip must be entered as either single words or quoted strings of the form: "This is a quoted string." "These are quotes \" \" within a quoted string." Arguments entered in button configuration commands have the following meanings: num is the number which MULTI assigns to the button. name is the name of the button. command is the command executed when the button is pressed. You may use semicolons in the command to execute multiple commands. For example: > debugbutton printxy c="print x;print y" creates a button named printxy that prints the values of the variables x and y in the current context. iconname is the name of the button s icon. This may be: One of MULTI s built-in icons. To obtain a list of the built-in icon names along with what they look like, select Configure Debugger Buttons (see Debugger Options Tab on page 203). The filename of a bitmap you have created (see Creating and Working with Icons on page 165). If only a partial path is given, it is assumed to be relative to the MULTI installation directory. If iconname is not specified, the first letter of the command name will be used as the icon for the button. helpstring is the help text that appears in the Status Bar at the bottom of the Debugger or Editor window when the cursor moves over the button. tooltip is the text that appears when the cursor hovers over the button for a short interval. If no tooltip is specified, the name of the button is used for the tooltip text. 164 MULTI: Editing Files and Configuring the IDE

Configuring and Customizing Toolbar Buttons The following special forms of debugbutton can be used in the Debugger command pane: debugbutton Lists all the defined Debugger buttons, except the Quit button and the separator before it (which are special and cannot be modified or deleted). debugbutton 0 Deletes all buttons except the Quit button and its separator. debugbutton [num] Deletes the button numbered num. debugbutton [name] Deletes the button named name. debugbutton [num] [name][...] Replaces the button numbered num with a new button named name. debugbutton [name][...] If a button named name exists, the button is replaced. Otherwise a new button named name is added to the end of the Debugger toolbar. The following special forms of editbutton can be used in the Debugger command pane: editbutton Lists all the defined Editor buttons. editbutton 0 Deletes all Editor buttons. editbutton [num] Deletes the button numbered num. Creating and Working with Icons In addition to numerous built-in icons, MULTI can use graphic files you provide for icons. If you create your own graphic file, then it must end in a.bmp extension and must be in the uncompressed 16-color Windows Bitmap format. Other color depths are not supported, and compressed bitmaps are not supported. An easy way to create such bitmaps is to use the Paint accessory in Microsoft Windows. Select 16 Color Bitmap for the Save as type in the Save As dialog box. The built-in icons in MULTI are 20 pixels wide by 20 pixels tall, so your buttons will look best if you also use this size for your custom bitmaps. By default, the color light gray in your custom icons will become transparent. (UNIX) You can specify color translations for your custom icon by appending a string of the form "oldcolor1=newcolor1&oldcolor2=newcolor2" with a question mark to the end of your bitmap filename. Green Hills Software, Inc. 165

8. Configuring and Customizing MULTI For example: > debugbutton Hello c="echo hello" \ continued> i="/home/user/hello.bmp?black=fg&dkgray=shadow&white=highlight" \ continued> h="say hello" The above example would replace black pixels in hello.bmp with the current foreground color, dark gray pixels with the current shadow color, and white pixels with the current highlight color. You can use the following values for oldcolor and newcolor: Oldcolor (RGB values) white (255,255,255) ltgray (192,192,192) dkgray (128,128,128) black (0,0,0) Possible values for newcolor white [default] highlight transparent [default] ltgray dkgray [default] shadow black [default] fg Configuring and Customizing Menus MULTI comes with a set of predefined menus for the Debugger window and the Editor. You can create new menus or edit existing menus using any the following methods: Edit a configuration file. Use the configure command in the Debugger command pane. Click Menus on the Config Options, General tab, to open the Menus dialog box (see General Options Tab on page 183). You can use this dialog box to add, edit, or delete menus. Note Menu names are case-sensitive. 166 MULTI: Editing Files and Configuring the IDE

Configuring and Customizing Menus The MULTI Debugger provides the menu command to view and manipulate menus: menu Prints a list of all the currently defined menus. menu name Displays the body of the menu named name. menu name {{label cmd } } Defines a menu that can be inserted into a menu bar or displayed by a MULTI button, mouse button, or key binding. The arguments in this command have the following meanings: name is the menu name that appears on the menu bar or at the top of the menu when it is opened. label is an entry in the menu. cmd is a command that executes when the associated label is selected. Menus can contain other menus by using the -> command. For example, the menu Main defined below contains RunCmds as a submenu: menu Main {{RunCmds -> RunCmds}{Up {E 1}}{Down {E -1}}{ToPC E} Note: To replace an existing menu, define a new menu with the same name. To create a menu: 1. Enter the command menu followedbythename for the menu. 2. Create menu items by entering a label and an associated cmd enclosed in curly braces {}. If one of the characters in a menu label is preceded with an ampersand (&), that character becomes a hotkey and will be underlined when the menu is displayed. The user can type that character to execute the associated command, just as if they clicked the label. The cmd portion can contain its own subset of curly braces for commands that require them (such as if), but they must be paired correctly. If cmd is a single command and that command is associated with a key binding that key binding will be displayed to the right of label when the menu is displayed. Green Hills Software, Inc. 167

8. Configuring and Customizing MULTI 3. Enclose the entire body of the menu in curly braces {}. The following example creates a menu named RunCmds: menu RunCmds {{Step s}{next S}{Run r}{go c}{return cu}} Opening and Accessing Menus You can access new menus in the following ways: -> name Opens a menu named name. For example, to open the Main menu from the Debugger command pane, enter: ->Main debugbutton [name]-> [menu] Binds a menu named menu to the Debugger button named name. For example, the following command will create a button named View on the Debugger toolbar, which opens the View menu when it is clicked: debugbutton View ->ViewMenu This command is most useful when used in conjunction with the menu command to define your own menus. mouse [button_num] [*click_num] [@location] =-> [menu] Binds a menu to a mouse click. For example, the following command displays the RunCmds menu when the third mouse button is clicked: mouse mouse3*press1@all=->runcmds For more information about binding mouse clicks to commands, see Customizing Keys and Mouse Clicks on page 169. 168 MULTI: Editing Files and Configuring the IDE

Customizing Keys and Mouse Clicks Customizing Keys and Mouse Clicks You can customize key bindings and the behavior of mouse clicks in the Debugger and Editor with the following methods: Use the configure command in the Debugger command pane. On the Config Options, General tab, click Keys to open the Keyboard Commands dialog box, or Mouse to open the Mouse Commands dialog box. keybind Displays key bindings that have location specified as All. keybind location Prints the current key bindings for a particular location. keybind key [ modifiers] [@location] [=command] Assigns an action to take when a key is pressed in the specified context. The arguments in this command mean the following: key is an identifier that specifies the keyboard key for which the binding is active. This identifier may be either a single ASCII (or ISO8859) character or a quoted string containing the name of one of the keys on the keyboard, such as BACKSPACE or F3. Characters needing more than one key press (besides the Shift, Ctrl, Alt, and Meta keys) cannot be used. To obtain a list of all of the acceptable key names, type keybind "????". The BACKSPACE key is different from h Control even though their ASCII representations are the same. To specify the double-quote key, use a sequence of three double-quotes """ in a row. modifiers are other keys (Shift, Ctrl, Alt, and Meta) that may be used in combination with key. If a modifier is specified, the command runs only if that modifier is pressed at the same time as the key. If more than one modifier is specified, they should be separated from each other and from key by vertical bars ( ). location is the area of the window the cursor must be in for the key binding to be matched. If location is omitted, the default is Command. For more information, see Key and Mouse Locations on page 171. command is the command that will be executed upon the key press. For more information, see Key and Mouse Command Special Sequences on page 172. mouse location Prints the current mouse bindings for a particular location. Green Hills Software, Inc. 169

8. Configuring and Customizing MULTI mouse button_num [*Clickclick_num[(AtOnce)]] [ modifiers] [@location] [=command] Assigns an action to a mouse button click. The arguments in this command mean the following: button_num represents the mouse button to be assigned. This can be the keyword Any, which matches any mouse button, or the word mouse, followed by a combination of digits between 1 and 5 which match the specified mouse button. For example, mouse2 matches the second (usually the middle) mouse button, while mouse13 matches both the first (usually the left) and the third (usually the right) buttons. Not all mice have five buttons. Commands assigned to non-existent buttons will never be matched. click_num specifies the number of times the mouse button must be released before the command is executed. This may be a number between 1 and 5. A binding that contains *Click3 would be executed upon the release of the specified button on a triple click. If the *Clickclick_num option is be omitted, the binding matches the first release of the specified mouse button. The keyword Click may be replaced by Press, which executes the command on the button press rather than the release, or by Either, which executes the command on both the press and release. A binding that contains *Either1 is executed twice, once for the press of the mouse button, and once for the release. The keyword Click may be followed by the keyword (AtOnce). This keyword causes the command assigned to execute immediately rather than pausing to see if it is part of a click sequence. A binding that contains *Press2 is executed only after the second press of a mouse button in a double-click, while *Press2(AtOnce) would be executed for the second mouse button press in a double-click, triple-click, quadruple-click, etc. This is acceptable behavior for many options, such as the standard selection clicks: one click sets the insertion point, two clicks selects the current word, three the line, and so forth. If (AtOnce) is not used, there is a slight delay when invoking single-click commands. This delay is specified by the ClickPause configuration option. modifiers are other keys that must be held down at the same time the button is clicked. Valid modifiers are Shift and Ctrl (plus Meta for UNIX). Modifiers are preceded by a vertical bar ( ), which separates them from each other and from the previous arguments. If more than one modifier is specified, all of the modifiers listed must be pressed simultaneously with the mouse click for the binding to be matched. location indicates the place within MULTI s windows the mouse must be for the binding to be matched. If location is omitted, the default is Source. For more information, see Key and Mouse Locations on page 171. command is the MULTI command that will be executed when the binding is matched. For more information, see Key and Mouse Command Special Sequences on page 172. 170 MULTI: Editing Files and Configuring the IDE

Customizing Keys and Mouse Clicks Key and Mouse Locations The location argument for the keyboard and mouse commands can be one of the following: All InputWindow OutputWindow View Title Command Remote Source Monitor Labels Values Name Type Freeze Close Pop Menu ScrollBar UpArrow DownArrow ScrollArea (keybind) Any MULTI windows except the Editor. (mouse) Any MULTI windows. Any MULTI input window, such as the command pane, a target window, or an I/O window. Any output only window, such as the source pane or a monitor window. Anywhere in a Data Explorer window, except the title bar. Anywhereinthe title bar of a Data Explorer or monitor window. (keybind) The command pane or source pane. (mouse) The command pane. A target or I/O window. (mouse only) The source pane. Anywhereinamonitor window except the title bar. The field names column in a Data Explorer. The field values column in a Data Explorer. Anywhere in the region of the title bar that displays the name of the expression being viewed in a Data Explorer or the command of a monitor window. Anywhere in the region of the title bar that displays the type of expression being viewed in a Data Explorer. Anywhere in the region indicating whether or not the window is frozen. The close button in the title bar. The Pop button of a Data Explorer. Anywhere in the portion of the title bar that displays the format menu in a Data Explorer. Anywhere within a scroll bar. (keybind only) Arrow pointing up at the top of a scroll bar. (keybind only) Arrow pointing down at the bottom of a scroll bar. (keybind only) Region between the direction arrows of a scroll bar. Green Hills Software, Inc. 171

8. Configuring and Customizing MULTI Thumb AboveThumb BelowThumb Edit (keybind only) The control in the middle of a scroll bar thatcanbedragged to change the viewable contents of the associated window. (keybind only) Area between the Thumb and the UpArrow. (keybind only) Area between the Thumb and the DownArrow. Anywhere within an Editor. Some of these locations implicitly include other locations. These locations are: All InputWindow OutputWindow View Title ScrollBar ScrollArea InputWindow, OutputWindow, View, and Title. Command and Remote. Source and Monitor. Labels and Values. Name, Type, Freeze, Close, and Pop. (keybind only) UpArrow, DownArrow, andscrollarea. (keybind only) Thumb, AboveThumb, and BelowThumb. Key and Mouse Command Special Sequences The command isanymulticommandtobeexecutedwhenthekeyormouse binding is matched. Several special sequences of characters in the command will be replaced with information about MULTI s state when the action is performed. These sequences are not valid for key or mouse bindings in the Editor. The following are the special sequences for command: %s Replaced by the current selection. %p Replaced by the current selection if it exists, otherwise MULTI prompts for input. %P Always prompts for input. %w Replaced by a special number identifying the window to MULTI. In command synopses and MULTI documentation, this number is referred to as a window identification number or wid. %x Replaced by the x location in the window when pressing the button or mouse. %y Replaced by the y location in the window when pressing the button or mouse. 172 MULTI: Editing Files and Configuring the IDE

Customizing Keys and Mouse Clicks %k (keybind) Replaced by the ASCII expansion of the key. For the key labeled a, this is replaced with "a". (mouse) Replaced by the null string. %m (keybind) Replaced by Press to indicate a key press triggered the action. (mouse) Replaced by Press or Release, depending on whether the command was executed as a result of a mouse button press or a mouse button release. %% Replaced by %. If the key[ modifier]@location portion of a keybind command matches a previously defined binding, then the new definition replaces the old binding. If no command is specified in the new definition, then the old binding is deleted. When a key is depressed in a window, MULTI searches for key bindings that match. There may be more than one, in which case MULTI chooses the one whose location is the most specific. If there are still several, then MULTI chooses one arbitrarily. If the button_num[*clickclick_num][ modifiers][@location] portion of a mouse binding matches a previously defined mouse binding, then the new binding replaces the old one. If no command is specified, then the old mouse binding is deleted. When the mouse is clicked in a window, MULTI searches its list of mouse actions for a matching binding. If there is more than one that might match the event, then MULTI uses the one whose location is the most specific. If there are multiple bindings that match the most specific location, then MULTI chooses the one which is bound to the fewest number of different mouse buttons. If there are still several bindings, then MULTI chooses one of the bindings arbitrarily. Example 1. Keybind Command With this command, MULTI evaluates and prints the selection when the first function key (F1) is pressed in the source pane or command pane: keybind "F1"=print %s With this command, the Debugger opens a Data Explorer that displays the current selection when key combination Ctrl + F1 is pressed: keybind "F1" Control@All=view %s Green Hills Software, Inc. 173

8. Configuring and Customizing MULTI With these commands, MULTI scrolls the window when the up or down arrow is depressed: keybind "Up"@All=(%w) scrollcommand 1l keybind "Down"@All=(%w) scrollcommand -1l With this command, MULTI single steps the program when Ctrl + S is pressed in the source window: keybind s Control=S Example 2. Mouse Command mouse mouse1=print %s With this binding, the Debugger evaluates and prints the selection when you click the left mouse button once in the source window. mouse mouse1*click2@all=view %s With this binding, the Debugger opens a Data Explorer displaying the current selection when you double-click the left mouse button in any window. Inserting a Character Blocked By a Custom Key Binding If you customize the Editor to run a command based on a single keystroke, you will not be able to directly insert the literal character of that keystroke into a file. For example, if you customize the key binding so that every time you press d the cursor moves down one line, then you will not be able to type the literal letter d in a file. To enter the literal character d in your file, you would have to: 1. Press Ctrl + \ (the Ctrl key with the backslash \ key). 2. Press the key for the character that you want to enter into the file. Configuring Window Docking MULTI includes configurable window docking options, which allow you to customize how multiple windows interact and are displayed on the screen. Window docking is supported in both Windows and UNIX environments (see UNIX Docking Limitations on page 175 for more information that is specific to UNIX environments). 174 MULTI: Editing Files and Configuring the IDE

Configuring Window Docking Window docking supports the following two types of behaviors: Window alignment Windows brought near other windows will automatically snap together, and windows brought near the edge of your screen will automatically snap to the edge of the screen. You can configure how sensitive this form of window docking is by adjusting the proximity at which a window will snap to another window or screen border. Window grouping Some windows will form groups when they are brought near other windows of the same type. The resulting groups can be controlled using a single title bar for all windows. When windows are grouped together, a new Group Bar appears above the Title Bar. You can use the Group Bar to move, close, or minimize the entire group. Note Window docking works between multiple windows of the same application. For example, MULTI Debugger windows will only dock with other Debugger windows; they will not dock with MULTI Editor windows or EventAnalyzer windows. If your window manager includes a Maximize button, you should not use this button on the group bar. For information about window docking options, see Window Docking Options Dialog Box on page 194. UNIX Docking Limitations Due to the design of the X protocol, the window manager running has nearly absolute control over window position and size, and the application is reduced to a much less active role. Window docking attempts to give you the benefits of a window manager at the application level. Some window managers, such as KDE, will not allow a window to be created smaller than a certain size. While you can still use window groups in these situations, the group bar will take up more space than normal. The following X Window Managers are supported: afterstep Blackbox Desktop Window Manager (dtwm) Green Hills Software, Inc. 175

8. Configuring and Customizing MULTI FVWM, FVWM2, FVWM95 Ice Window Manager (icewm) KDE Window Manager (kwin) Window grouping is disabled by default for the KDE window manager because it does not allow windows to be created with a height smaller than 25 pixels. Metacity OpenLook Window Manager (olwm) Sawfish Tabbed Window Manager (twm) WindowMaker (wmaker) wm2 Does not use a horizontal title bar, which is required for window grouping. The following X Window Managers do not work properly with window docking and are not supported. If you use one of these window managers, set Windows Docking Options to Disable All Window Management (see Window Docking Options Dialog Box on page 194). PWM Ion A window manager not listed in either of the above lists has not been verified to work properly. 176 MULTI: Editing Files and Configuring the IDE

Configuring File Extensions Configuring File Extensions While using the Builder, Editor, and Debugger, some operations require a file to be selected from a graphical file chooser. These file choosers provide a set of filters which allow only relevant files to be displayed. While common extensions are present in these filters, additional custom extensions and file types may be required. These extensions can be added by customizing the file extension mappings used by MULTI. Extension Mapping Files The extension mappings are stored in configuration files named extensions.udb in a directory named file_types. They are applied in the same order as configuration files, starting with the defaults directoryandfollowedbythe site-wide and user configuration directories (see Using Startup Files on page 159). To add custom file extensions, create a directory named file_types in either the site or user configuration directories and create an extensions.udb file defining the custom file extension. The extension mapping configuration files contains entries describing individual file types as well as collections of file types for use in individual file choosers. File Format For information about the generic package options file format and the syntax descriptions below, refer to the Package Option Notation section of the Register Explorer chapter of the MULTI: Debugging manual. Described below are the specifics of the file format. Green Hills Software, Inc. 177

8. Configuring and Customizing MULTI Header Each extension mapping configuration file contains a header which identifies the version of the file: xdf { xdfheader { version = num } } The only supported version is 1. File Types Each file type is contained in a subgroup located within the xdf group. The name of this subgroup can be any valid identifier except xdfheader or presets. Inthis section, Ftype represents the top level package name. Name Each file type can have a name associated with it. This name will appear in the drop-down list of the file chooser, so it should be concise. A name is given to a file type by a key-value pair of the form: xdf { "Ftype" { name = { "value" } } } If this key-value pair is omitted, Ftype is used as the name of the file type. Extensions Each file type must have one or more extensions associated with it. Each extension is associated with a file type by a key-value pair of the form: xdf { "Ftype" { extension = { "value1"[, "value2"] } } } The extension value may contain a wildcard pattern using asterisks to represent a match for any arbitrary sequence of characters. If an asterisk is not present, an asterisk will be implicitly added before the value. Thus, a value of.bar would be implicitly translated into the *.bar pattern and match any files whose names end in.bar. Avalueof.Bar* would not undergo any translation, and would match any files whose names begin with.bar. 178 MULTI: Editing Files and Configuring the IDE

Configuring File Extensions Presets Presets are groups of file types that share similar properties. File choosers in MULTI determine which file types to display based upon presets. Each preset subgroup is contained within the presets subgroup of the xdf group and can be named any valid identifier. Name Each preset has a name, defined by a key-value pair of the form: xdf { presets { pgroup { name = { "value" } } } } If this key-value pair is omitted, the preset is named pgroup. File types File types associations for presets. File types are listed in the drop-down list of the file chooser in the order that they are defined in the file type list. Defined by a key-value pair of the form: xdf { presets { pgroup { filetype = { "value1"[, "value2"] } } } } Preset inheritance Presets can inherit settings from other preset groups, which is equivalent to importing all of the filetype groups from the associated preset while keeping the ordering distinct. Imported file types are placed after the final explicit filetype key-value pair for a preset. A preset is inherited by a key-value pair of the form: xdf { presets { pgroup { include = { "name1"[, "name2"] } } } } The value of this pair is equivalent to the name of the preset given by its include directive (or the default value: pgroup). Green Hills Software, Inc. 179

8. Configuring and Customizing MULTI Using a Custom Web Browser with UNIX Several configuration options are available to control the web browser used for displaying online help. To access these options, select Config Options General tab (Tools Options General tab in the MULTI Builder), then click Help to open the Online Help Options dialog box (see Online Help Options Dialog Box (UNIX only) on page 196). The command used to start a web browser is specified in the Browser Command field of the Online Help Options dialog box. The default settings assume the browser executable is capable of understanding file URLs. If the executable does not recognize file URLs, you will need to create a wrapper script to translate the file URLs into absolute file paths. For example, create the following Perl script, browseradapter.pl, as an executable in a directory in your path: #!/usr/local/bin/perl -w $ARGV[1]=~/file:(.*)$/; system($argv[0]." ".$1); The above script takes its second argument, the file URL, strips off the absolute path, then executes the program specified in its first argument on that file. You can use this Perl script to configure MULTI to use any program to display online help, such as vi, by adding the following to your configuration files: browseruseremote: Off browsercommand: browseradapter.pl vi For more information about modifying your configuration files, see Chapter 8, Using MULTI Scripts in the MULTI: Debugging book. By default, MULTI assumes that the web browser supports the -remote option to use previously opened web Browser. If your browser does not support -remote command line syntax or JavaScript, you should clear the Browser supports -remote command line option check box. (see Online Help Options Dialog Box (UNIX only) on page 196). This option is off by default when running in non-gui mode. 180 MULTI: Editing Files and Configuring the IDE

Configuration Options Chapter 9 This Chapter Contains: General Configuration Options Builder Configuration Options Debugger Configuration Options MULTI Editor Configuration Options Session Configuration Options Colors Configuration Options Deprecated Configuration Options

9. Configuration Options Chapter 8, Configuring and Customizing MULTI discusses how you can customize your interface using MULTI s configuration options. This chapter describes these configuration options and their default settings. Many, but not all of these options can be controlled using the Options window and/or configuration files. (To open the Options dialog box, select Config Options from the Launcher, Debugger, or Editor, or Tools Options from the Builder.) All of the options described in this chapter can be set or edited using the configure command in the Debugger s command pane. The descriptions given in this chapter for each configuration option are grouped according to the tabs in the Options dialog box. The equivalent Debugger command setting for each GUI choice is given in parentheses after the option name that appears in the dialog box. The command setting must be preceded by the configure command when it is entered in the command pane. For example, using the GUI option Warp pointer, the selection Never is followed by: (WarpPointer Never). This indicates that the command entered in the Debugger would be: configure WarpPointer Never. Note Configuration options are not case sensitive, thus configure WarpPointer Never and configure warppointer never are equivalent and are both valid. In this chapter, we used mixed case notation where it makes the options more readable. Note To save your configuration, choose Config Save Configuration as Default before you quit MULTI; otherwise, your configuration changes will be lost (see Saving Configuration Settings on page 157). 182 MULTI: Editing Files and Configuring the IDE

General Configuration Options General Configuration Options This section describes configuration options that affect the overall appearance of MULTI. Most of these options appear on the General tab of the Options dialog box. General Options Tab For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Save window positions and sizes Permitted settings for this option are: Selected (RememberWindowPositions On) [default] Remembers the position and size of windows created by MULTI, so the next time a window of the same type is created it will appear in the same location. Sizes and positions are remembered even after you exit and restart MULTI. Cleared (RememberWindowPositions Off) Do not remember the position and size of windows created by MULTI. Positions and sizes are saved independently for each different type of window. The first window of a given type is positioned in the saved location, and any new windows of the same type are slightly offset from the location of the open window and given the saved size. For example, if you resize the Builder window, move it to a specific location on your screen, and then close the window; the next time a Builder window is created it will appear in the same place and with the same size. Not all windows are affected by this option; in particular, Data Explorer windows are not affected. Use icons for buttons Permitted settings for this option are: Selected (iconifiedbuttons On) [default] Toolbar buttons are displayed with mnemonic icons. Cleared (iconifiedbuttons Off) Toolbar buttons are displayed with textual names. Green Hills Software, Inc. 183

9. Configuration Options Display close (x) buttons Permitted settings for this option are: Selected (CloseButtonOnTitlebar On) [default for UNIX] A Close button will appear on the Toolbar of new windows. This option only affects new windows created after you change the setting, except for Debugger windows, which adjust to the new setting immediately. Cleared (CloseButtonOnTitlebar Off) [default for Windows] The Close button will not appear on Toolbars. Launch clipboard manager UNIX only Permitted settings for this option are: Selected (ClipManLaunch On) [default] The clipboard manager, which stores selections that have been sent to the clipboard by all applications, will run after MULTI has exited, making the contents of the clipboard accessible to other applications. Cleared (ClipManLaunch Off) The contents of the clipboard are lost when MULTI exits. Match exact case in searches Determines the case sensitivity of all text searches in MULTI. Permitted settings for this option are: Selected (ExactCase On) Searches will be case-sensitive. Cleared (ExactCase Off) [default] Searches will be case-insensitive. This option can also be set on a per-editor-window basis with the Edit Find dialog box. For more information see Interactive Searching Using the Search Dialog Box on page 27. Allow beeping Permitted settings for this option are: Selected (beep On) [default] MULTI beeps on various error conditions, such as a search that does not match anything. Cleared (beep Off) MULTI never beeps. Show tooltips UNIX only Permitted settings for this option are: Selected (tooltips On) [default] Tooltips, small explanatory boxes that pop up when you hover the cursor over a GUI item, will be displayed if they are available for that item. Cleared (tooltips Off) Tooltips will never be displayed. 184 MULTI: Editing Files and Configuring the IDE

General Configuration Options Warp pointer Permitted settings for this option are: Never (WarpPointer Never) [default for Windows] Never move the mouse pointer automatically. The mouse cursor can only be changed by physically moving the mouse. Into Dialog Box (WarpPointer IntoDialogue) [default for UNIX] Warp the mouse pointer to the default button of new dialog boxes that appear. In & Out of Dialog Box (WarpPointer In&OutDialogue) Warp the mouse pointer into the default button of new dialog boxes, and warp it back to its previous location when the dialog box is closed. Print command Specifies the command used to send information to a printer. The default is lpr (PrintCommand command). Editor UNIX only Specifies which editor MULTI uses when you request an editor to start. Options are: MULTI Editor (ExtEditor_Choice Multi Editor) [default] Uses the MULTI Editor. Emacs (ExtEditor_Choice Emacs) Uses the emacs editor. Vi (ExtEditor_Choice Vi) Uses the vi editor. Other (ExtEditor_Choice Other) Uses an editor that is not available in the list. Configure Editor Opens a dialog box that allows you to specify configuration settings specific to the editor selected in the Editor field. For more information, see Configure Other Editor Options on page 188. If Multi Editor is selected in the Editor field, clicking this button opens the Multi Editor tab. For more information, see MULTI Editor Options Tab on page 222. Green Hills Software, Inc. 185

9. Configuration Options Version Control Specifies which version control system MULTI uses. Permitted settings for this option are: Auto Detect (VersionControlType AutoDetect) [default] Version control is auto-detected based on the file currently in use. Disable (VersionControlType Disable) Version control is disabled. CVS (VersionControlType CVS) (Concurrent Versions System) An open-source network-transport version control system. See Integrating with CVS on page 121. MVC (VersionControlType MVC) (MULTI Version Control) The Green Hills Software version control system provided as a part of MULTI. See Integrating with MULTI Version Control (MVC) on page 115. RCS (VersionControlType RCS) A version control system available with many UNIX systems. See Integrating with RCS on page 123. ClearCase (VersionControlType ClearCase) A version control system from Rational Software. See Integrating with ClearCase on page 120. (Windows only) SourceSafe (VersionControlType SourceSafe) A version control system from Microsoft. See Integrating with SourceSafe on page 123. PVCS (VersionControlType PVCS) A system of version control and configuration management software from MERANT that runs on DOS, Windows, OS/2 and various UNIX platforms. See Integrating with PVCS on page 121. Custom (VersionControlType Custom) For version control systems other than those listed above. See Integrating with a Custom Version Control System on page 126 for information about configuring MULTI for use with other version control systems. Configure Version Control Opens a dialog box that you use to specify configuration settings that are specific to the version control selected in the Version Control field. For more information, see Version Control Configuration Options on page 189. Vertical scroll bar Permitted settings for this option are: Right (ScrollLocation Right) [default] The vertical scroll bar will appear on the right-hand side of windows Left (ScrollLocation Left) The vertical scroll bar will appear on the left-hand side of windows. 186 MULTI: Editing Files and Configuring the IDE

General Configuration Options Horizontal scroll bar Permitted settings for this option are: Top (ScrollHLocation Top) The horizontal scroll bar will appear at the top of windows. Bottom (ScrollHLocation Bottom) [default] The horizontal scroll bar will appear at the bottom of windows. Phase of moon in scroll bar box Permitted settings for this option are: Selected (moon On) The approximate phase of the moon will be displayed in the nook of the vertical and horizontal scroll bars instead of the Green Hills Software logo. Cleared (moon Off) [default] Moon phase is not displayed. We at Green Hills decry the unfortunate tendency in our society whereby mankind perceives itself as disconnected from its environment. We as individuals pay no attention to flowers blooming or leaves falling. We live immersed in our air conditioned offices and, if we are programmers, we never see the light of day. In a futile effort to stop this trend, we provide all MULTI users with the current phase of the moon to perhaps encourage them to leave their desks and look up at the beautiful night sky. Scroll bar width in pixels Specifies the width of scroll bars in num pixels. The default is 18 (ScrollBarWidth num). Main Font UNIX only Opens a font selection dialog which you can use to set the main font that is used for most textual display. Click Main Font and use the dialog box that opens to select any font installed on your system. This font should normally be set to a fixed width font, so that characters in the same column on different lines will line up properly. The default for UNIX is courier-bold (font font_name). The default for Windows is Courier New (font font_name). Button Font Opens a font selection dialog which you can use to set the button font which is used on buttons, menus, and other GUI controls. Click Button Font and use the dialog box that opens to select any font installed on your system. The default for UNIX is -*-interface system-medium-r-*-*-12-*-*-*-*-*-*-*(buttonfont font_name). The default for Windows is MS Sans Serif (ButtonFont font_name). Green Hills Software, Inc. 187

9. Configuration Options Kanji Font UNIX only Opens a font selection dialog which you can use to set the 16-bit font used to display Kanji text. Click Kanji Font and use the dialog box that opens to select any font installed on your system. There is no default setting (KanjiFont font_name). Menus Opens the Menus dialog box, which you can use to edit the GUI menus used by MULTI. It displays the currently defined menus using the same format as the menu command. See Configuring and Customizing Menus on page 166. Mouse Opens the Mouse Commands dialog box, which you can use to edit the mouse bindings used by MULTI. The mouse bindings are displayed in the same format as the mouse command. See Customizing Keys and Mouse Clicks on page 169. Keys Opens the Keyboard Commands dialog box, which you can use to edit the key bindings used by MULTI. The key bindings are displayed in the same format as the keybind command. See Customizing Keys and Mouse Clicks on page 169. Window Docking Opens the Window Docking Options dialog box, which you can use to configure how multiple windows appear and function in MULTI. See Window Docking Options Dialog Box on page 194 for details. Help UNIX only Opens the Online Help Options dialog box, which contains additional configuration options for the online help system. For more information about using this dialog box, see Online Help Options Dialog Box (UNIX only) on page 196. Configure Other Editor Options A dialog box opens when you select an alternate editor (any editor other than the MULTI Editor) from the Editor drop-down list and click the Configure Editor button. If you select Multi Editor from the Editor drop-down list, the Multi Editor tab will open instead. See MULTI Editor Options Tab on page 222. The dialog box that appears contains options specific to the editor type selected. Not all options appear for every editor type. You can enter the options listed below by using the configure command or by making the equivalent entries in the dialog box. The following parenthetical material provides the configuration options. For more information about the 188 MULTI: Editing Files and Configuring the IDE

General Configuration Options configure command, see Using the configure Command on page 155 in Chapter 8, Configuring and Customizing MULTI. Editor (ExtEditor_Choice Emacs for emacs; ExtEditor_Choice Vi for vi; ExtEditor_Choice Other for other editors.) Specifies which editor MULTI uses when you request an editor to start. For more information, see the Editor configuration option in General Options Tab on page 183. Path to Editor (ExtEditor_EmacsPath editor pathname for emacs; ExtEditor_ViPath editor pathname for vi; ExtEditor_OtherPath editor pathname for other editors.) Controls where the editor executable is located in the system. Depending upon your PATH environment variable, you may need to specify the full path to the editor in the Path to Editor field. Use XTerm UNIX only (ExtEditor_EmacsUseXTerm for emacs; ExtEditor_ViUseXTerm for vi; ExtEditor_OtherUseXTerm for other editors.) Determines whether the editor will be launched from within an xterm. Console mode editors should enable this option. Command line arguments (ExtEditor_EmacsArgumentFormat +%LINE %FILE0 %FILES for emacs; ExtEditor_ViArgumentFormat +%LINE %FILE0 %FILES for vi; ExtEditor_OtherArgumentFormat command line specification for other editors.) Determines the arguments given to the editor when it is launched. Three special character sequences are replaced when the editor is run. Substitution rules follow. %LINE replaced with the line number to go to when opening the file (removed if MULTI does not specify a line number) %FILE0 (the last character is a zero) replaced with the first file to be edited %FILES replaced with all but the first file if there is more than one file to edit (removed if MULTI only specifies one file to edit). Each file is separated by a space. Version Control Configuration Options When you click the Configure Version Control button on the General tab of the Options window, a dialog opens containing options that are specific to the version control type selected in the Version Control field. Green Hills Software, Inc. 189

9. Configuration Options The possible options and settings that appear in this dialog are described in the following table. Not all options will appear for every version control type. Note If you select Custom as your version control type, a Custom Configuration dialog box will appear instead. See Custom Version Contol Options on page 191 for a description of the fields in this dialog box. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. 190 MULTI: Editing Files and Configuring the IDE

General Configuration Options Automatic Checkout Permitted settings for this option are: Selected Files are automatically checked out when you start to edit them. Cleared [default] Files are not automatically checked out. The equivalent configuration commands are: For MVC Versctrl_MVCAutoCheckout For RCS Versctrl_RCSAutoCheckout For ClearCase Versctrl_ClearCaseAutoCheckout For SourceSafe Versctrl_SourceSafeAutoCheckout For PVCS Versctrl_PVCSAutoCheckout For Custom Version Control System Versctrl_CustomAutoCheckout This option is not available if you have selected the CVS version control system because a file is always checked out when you are using CVS. Location of VC binary (For CVS, ClearCase, and SourceSafe version control systems only.) Specifies the name of the command to run, according to your version control system. The defaults are: For CVS cvs (Versctrl_CVSPath cvs) For ClearCase cleartool (Versctrl_ClearCasePath cleartool) SourceSafe ss (Versctrl_SourceSafePath ss) SourceSafe database location (Versctrl_SourceSafeDatabase) SourceSafe only. Specifies the location of the SourceSafe database. In other words, this is the location of the srcsafe.ini file corresponding to the desired database. Root of checkout (Versctrl_SourceSafeRoot) SourceSafe only. Specifies the working directory of the root ($/) of the SourceSafe database. The MULTI integration with SourceSafe assumes that the directory structure of a database is maintained when files are checked out from that database. For example the $/example.c file in the database is checked out to root_of_checkout/example.c. Custom Version Contol Options If you select Custom as your version control type, a Custom Configuration dialog box opens when you click the Configure Version Control button from Green Hills Software, Inc. 191

9. Configuration Options the General tab of the Options window. This window contains fields for setting the configuration options listed below, which must be set to configure MULTI for use with your version control system. (For more information about using a custom version control system, including sample configuration settings, see Integrating with a Custom Version Control System on page 126.) For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Under VC (vc_undervc command) Used when the version control system has been set to Custom. Specifies the shell command used to determine if a given file is under version control. When the specified command is issued with a filename appended, it will return true (zero exit status) if the file is under the version control system, or false (nonzero exit status) if the file is not under version control. Check Out (vc_co command) Specifies the shell command used to check out a file from version control for editing. When the specified command is issued with a filename appended to it, the file will be checked out for modification. If an error occurs, the specified command will print an error message will to standard output and return a nonzero exit status. Get (vc_get command) Used when the version control system has been set to Custom. Specifies the shell command used to get a read-only copy of the latest version of a file. When the specified command is issued with a filename appended to it, the command will get a read-only copy of the specified file. If an error occurs, the command will print an error message to standard output and return a nonzero exit status. Un Check Out (vc_unco command) Used when the version control system has been set to Custom. Specifies the shell command used to undo the effects of a checkout by reverting to the latest version of the file in the version control system and (if applicable) restoring the file s checked-in status, discarding any edits since the check out. When the specified command is issued with a filename appended to it, the command will cancel any check out of the file and revert to the version in the version control system without checking in any changes. If an error occurs, the specified command will print an error message to standard output and return a nonzero exit status. 192 MULTI: Editing Files and Configuring the IDE

General Configuration Options Check In (vc_ci command) Used when the version control system is set to Custom. Specifies the shell command used to check a file into a version control system as the latest version. When the specified command is issued with a filename appended to it, the command will check in any changes made to the specified file. If the sequence %c appears in the command, it will be replaced by a quoted string that contains the comments the user entered. If an error occurs, the specified command will print an error message to standard output and return a nonzero exit status. Create (vc_create command) Used when the version control system is set to Custom. Specifies the shell command used to put a file under version control for the first time. When the specified command is issued with a filename appended to it, the command will place the specified file under version control. If an error occurs, the command will print an error message to standard output and return a nonzero exit status. Show History (vc_show command) Used when the version control system has been set to Custom. Specifies the command used to output a list of the versions of a file, with optional comments or information about each. When the specified command is issued a filename is appended to it and the standard output of the command is collected and shown to the user. Who (vc_who command) Used when the version control system has been set to Custom. Specifies the shell command used to determine which user has a file checked out. When the specified command is issued with a filename appended to it, the command will print to standard output the username of the person who has the file checked out, or print nothing if the file is not checked out. Previous Version (vc_prevver command) Used when the version control system has been set to Custom. Specifies the shell command used to retrieve the version number of a file s previous version. When the specified command is issued with a filename appended to it, the command will print the previous version number of the file to standard output. This configuration setting is not required for simple version control operations. Automatic Checkout (Versctrl_CustomAutoCheckout) Specifies whether files are automatically checked out when you start to edit them. Green Hills Software, Inc. 193

9. Configuration Options Window Docking Options Dialog Box This dialog box opens when you click the Windows Docking button on the General tab of the Options window. This dialog box contains two tabs: Global Options The options on this tab apply to all MULTI applications (see Window Docking Global Options on page 194). Any options selected on this tab will override any application-level options set on the Application Options tab. Application Options The options on this tab apply only to the specific application specified in the Application text box of the tab (see Window Docking Application Options on page 195. These application-level options can be overridden by options set on the Global Options tab. The options on each of these tabs are described below. For more information about window docking, see Configuring Window Docking on page 174. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Window Docking Global Options The following items on the Global Options tab apply to all applications: Disable all window management Completely disables both window alignment (snapping) and window grouping. Disable all grouping Completely disables any grouping of windows, overriding any Application Options. Docking Distance Specifies the distance at which windows will snap to each other, either side-by-side or vertically. There are two settings: Opposing edges Specifies the distance in pixels to snap windows when the left edge of a window docks with the right edge of another, or the top of one window docks with the bottom of another. Same edge Specifies the distance in pixels to snap windows when aligning the edges of vertically adjacent windows. For example, you can align a series of windows in a column along the left edge. 194 MULTI: Editing Files and Configuring the IDE

General Configuration Options Compatibility UNIX only Disables certain window docking behaviors that may not be supported or function correctly in some specific circumstances. Specifically: Disable grouping in KDE Disables any grouping of windows when the KDE window manager is detected. This setting overrides any application-level options and is selected by default. For more information, see UNIX Docking Limitations on page 175. Disable activation follows focus Disables the raising all windows in the same group as a window which gets the focus. This option is selected by default. Disable geometry caching Disables caching of window manager window geometry. Selecting this option will cause a small window to open and close each time an application is started, so that MULTI can detect window manager geometry properties. This option is cleared by default and should not be selected unless the MULTI cannot properly detect a change in window managers. Window Docking Application Options The following items on the Application Options tab allow specific window grouping behavior to be configured on a per-application basis. Application Displays the location of the window docking configuration file that is currently being viewed. This file may be located in the site wide configuration directory or in the user configuration directory. Any changes are saved to the user configuration directory. Window Lists the available window types (which vary depending on the application). Each window must include support for configurable window grouping. Docks to For the selected Window, this field specifies what other types of windows will form groups when docked. The up and down arrows can be used to move window types between the Docks to and Does not dock to lists. Green Hills Software, Inc. 195

9. Configuration Options Does not dock to For the selected Window, this field specifies what other types of windows will not form groups when docked. The up and down arrows can be used to move window types between the Docks to and Does not dock to lists. Online Help Options Dialog Box (UNIX only) This dialog box opens when you click the Help button on the General tab of the Options window. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Method Specifies which help system should be used to display online help. Permitted settings for this option are: Oracle Help for Java (OnlineHelpMethod OHJ) Oracle Help for Java will be used to display online and contextual help. This option is not available on machines running Solaris 2.5.1. Web Browser (OnlineHelpMethod Browser) The browser specified by BrowserCommand will be launched on the HTML file that contains the online help. See the sections below for information about configuring the web browser. The default value of this option is set automatically and depends on your system configuration. Browser command This field displays the executable name of the program used to display HTML online help files. The default is netscape (BrowserCommand executable) This option is only in effect if Method Browser is selected (OnlineHelpMethod Browser). 196 MULTI: Editing Files and Configuring the IDE

General Configuration Options Browser supports -remote command line option This option applies only when Method Browser has been specified (OnlineHelpMethod Browser). Permitted settings for this option are: Selected (BrowserUseRemote On) [default] The web browser specified by Browser Command will be launched using the -remote command line syntax. When used with Netscape and other browsers that support -remote, MULTI will use previously opened web browsers to display online help, instead of launching a new browser for each help page. Cleared (BrowserUseRemote Off) Online help pages will open in new browser windows. Other General Configuration Options The options in this section are not accessible from the Options dialog box. These options are set in a configuration file, or by using the configure command in the Debugger command pane. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. BlinkingCursor [On Off] On [default] The vertical bar cursor in various windows (such as the Debugger command pane and the Editor) will blink. Off The cursor will be a solid non-blinking bar. ClearKeys UNIX only Removes all of the key bindings so they can be created from scratch with keybind. ClearMenus Removes all menus so they can be created from scratch using menu. ClearMice Removes all mouse button bindings so they can be created from scratch with mouse. Green Hills Software, Inc. 197

9. Configuration Options ClickPause time UNIX only [default is 4] Specifies the length of time, in time tenths of a second, that MULTI waits between successive button presses to recognize double or triple clicks. For example: If time is 4, two clicks on the same button, in the same mouse location, within four tenths of a second, are treated as a double-click. If the two clicks are separated by more than time tenths of a second, they are treated as two single-clicks. If no mouse binding requiring multiple clicks exists for a particular mouse location, MULTI executes the mouse binding immediately without waiting for multiple clicks. ConfigureFile filename Used within a configuration file to read in another configuration file specified by filename. Afterfilename is processed, processing of the original configuration file continues as normal. DisAsmStyle [remote XORmacs UNIX] Controls the style of disassembled Motorola 68000 series code. This option may have one of three values: remote [default] Use XORmacs style if the code is destined for execution on an embedded processor or UNIX style for native development. XORmacs Always use XORmacs style (such as MOVE.L (12,A6),D0). unix Always use UNIX/Sun style (such as movel a6@(12),d0). GrabTimeout time UNIX only [default is -1] Specifies an interval used to force programs to release any X-server keyboard or mouse grabs: If time is less than zero, MULTI does not check to see if there are any outstanding grabs on the X-server each time it stops. If time is greater than zero, MULTI checks to see if the program has any outstanding grabs when the program is stopped by a signal or breakpoint. If both the keyboard and the mouse are grabbed, MULTI waits time seconds before aborting the other program s grabs and then continues debugging, allowing you to use the mouse and keyboard to issue commands to the Debugger. This option is useful for Solaris native development only. 198 MULTI: Editing Files and Configuring the IDE

General Configuration Options iconify [On Off] UNIX only [default is Off] Specifies whether or not the next MULTI window will be minimized as an icon when it opens. This option is only applied to the next window created and does not affect existing windows. If you repeatedly configure this option to On, it will remember the number of times you have done this, and cause the next num windows to be created minimized (one per time you configure the option to On). After the correct number of windows come up minimized, this option resets itself to Off. ignoremotion num [default is 4] Specifies the number of pixels the mouse can move during a press and release of a mouse button. If the mouse moves less than num pixels between a button press and release, the click is treated as a single click. If the mouse is moved by more than num pixels between press and release, the mouse click is no longer treated as a single click but as two independent press and release events. Keybind Used to assign an action to a key. For more information, see Customizing Keys and Mouse Clicks on page 169. Menu Used to define a menu. For more information, see Configuring and Customizing Menus on page 166. MenuDelay time [default is 25] The delay, in milliseconds, between moving the cursor over a submenu entry and the submenu opening. If set to 0, submenus will open immediately. Mouse Used to assign an action to mouse button clicks. For more information, see Customizing Keys and Mouse Clicks on page 169. MultiIconPreName string UNIX only When you iconify a window, string will appear as the prefix of the icon name. For example, if you set string to MULTI, when you iconify your editor window, the icon will be named MULTI:Filename.c, instead of Filename.c. MultiWinPreName string string will appear as the prefix of the Window names in the Title Bar. UNIX only Green Hills Software, Inc. 199

9. Configuration Options NoDecoration [On Off] UNIX only [default is Off] If this option is On and the window manager supports it, all windows appear without title bars. On If the windows manager supports it, all windows appear without title bars. Off [default] Windows appear with title bars. ShowGrepCommand [true false] true [default] The full grep command prints out whenever the grep command is executed. false The full grep command does not print out. synchronous [On Off] UNIX only Synchronous mode ensures that X-window calls from MULTI complete before they return. This can be useful when running MULTI on faulty X-servers. On Enable synchronous X-windows mode. Off [default] Disable synchronous X-windows mode. UseWMHinting [On Off] [default is Off] Fixes a problem that occurs with the CDE window manager on HP-UX machines. Do not turn this configuration option On unless the host is a HP-UX machine. UseWMPositioning [On Off] On MULTI allows the window manager to determine where all windows should go. Off [default] MULTI automatically places windows in convenient locations. 200 MULTI: Editing Files and Configuring the IDE

Builder Configuration Options Builder Configuration Options This section describes configuration options that affect the Builder. These options can all be configured on the Builder tab of the Options window. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Open build details window Permitted settings for this option are: Always (ShowProgress Always) The Build Details window will open every time you build an application, even if no warnings or errors are produced. On Warnings and Errors (ShowProgress On Warning and Errors) [default] The Build Details window will open if your build produces warnings or errors. On Errors (ShowProgress On Errors) The Build Details window will open if your build produces errors, but will not open for warnings. Automatically open editor on errors Permitted settings for this option are: Selected (AutoEditErrors On) [default] The code that caused the first error of the build will automatically display in an Editor window. Cleared (AutoEditErrors Off) Errors will display in the Build Details window. Double-click an error to open it in an Editor window. On warnings Permitted settings for this option are: Selected (AutoEditWarnings On) The code that caused the first warning will automatically display in an Editor window. Cleared (AutoEditWarnings Off) [default] Warnings will display in the Build Details window. Double-click a warning to open it in an Editor window. Use MULTI Editor on errors (even if alternate editor is specified elsewhere) Permitted settings for this option are: Selected (AlwaysUseMeToFixBuildErrors On) [default] Errors and warnings will be displayed in the MULTI Editor even if you have configured the MULTI environment to use an alternate, third-party editor. Cleared (AlwaysUseMeToFixBuildErrors Off) Errors and warnings will be displayed in the editor you use in your MULTI environment. Green Hills Software, Inc. 201

9. Configuration Options Automatically open connection files in opened.gpj files Permitted settings for this option are: Selected (AutoOpenConnectionFilesFromGpjFiles On) [default] Any target connection (.con) files present in an open Builder file are opened by the Connection Organizer. Cleared (AutoOpenConnectionFilesFromGpjFiles Off) Target connection files are not automatically opened by the Connection Organizer. Automatically share target connections Permitted settings for this option are: Selected (AutoConnectionMode On) [default] The primary target connection is used. Cleared (AutoConnectionMode Off) Multiple target connections can run concurrently. Advanced users who need to have multiple target connection running must clear this option before starting multiple connections. Display connection type in Connection Chooser Permitted settings for this option are: Selected (DisplayConnectionTypeInChooser On) The type of a connection method is displayed in brackets after the name in the drop-down list in the Connection Chooser dialog. Custom connection methods have no type displayed. Cleared (DisplayConnectionTypeInChooser Off) [default] Only the name of the connection method is displayed. 202 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options Debugger Configuration Options This section describes configuration options that affect the Debugger. Most of these options appear on the Debugger tab of the Options dialog box. Debugger Options Tab To access the following options, select Config Options Debugger tab. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Ask before halting to set breakpoint Permitted settings for this option are: Selected (VerifyHalt On) [default] The Debugger will ask for confirmation before halting the process to set a breakpoint Cleared (VerifyHalt Off) The Debugger will automatically halt, set the breakpoint, and continue the process without requiring user intervention. Use procedure relative line number (vs. file relative) Permitted settings for this option are: Selected (ProcRelativeLines On) [default] Debugger commands, such as the e command, interpret line numbers as procedure relative, instead of file relative. Cleared (ProcRelativeLines Off) Line numbers are treated as file relative. You can always specify file relative line numbers regardless of the setting of this option by using the # character before line number arguments to commands. Display all numbers/characters as hex Permitted settings for this option are: Selected (HexMode On) All numeric values are displayed in hexadecimal format Cleared (HexMode Off) [default] Display format is based on the natural display format for that type. For integral types, the natural display format is decimal. Green Hills Software, Inc. 203

9. Configuration Options View unsigned char as integer Permitted settings for this option are: Selected (ViewUnsignedCharAsInt On) The natural display format of unsigned chars will be the same as for ints. This is useful when you want to view byte values as numerical values instead of characters. Cleared (ViewUnsignedCharAsInt Off) [default] The natural display format for unsigned chars is a literal character, such as A Coloring for multiple debuggers Specifies how the background color of new Debugger windows is chosen. It is useful to turn this on when using multiple Debugger windows to make them visually distinct. Permitted settings for this option are: Do Not Color (BackgroundMode Off) All Debugger windows use the normal background color. Use Color Offsets (BackgroundMode Offset) [default] New Debugger windows will use predetermined offsets from the normal background color. This option is usually best since it will pick colors near the current background color, and keep the text as legible as possible. Use Preset Colors (BackgroundMode Preset) New Debugger windows will use a color from a set of pre-chosen, highly distinctive colors. Line numbers in source pane Specifies how line numbers are displayed on the left side of the Debugger source pane. Permitted settings for this option are: No Number (LineNumberMode None) No line numbers are displayed. File Number (LineNumberMode File) The file relative line numbers are displayed. Proc Number (LineNumberMode Proc) The procedure relative line numbers are displayed. Both Numbers (LineNumberMode Both) [default] Both file-relative and procedure-relative line numbers are displayed. Show variable values in tooltips Permitted settings for this option are: Never (fastest and safest) (HoverValues Never)) Nevershowvariable values in tooltips. On Mouse Hover (HoverValues Always) When the mouse is positioned over a variable show its value in a tooltip. On Mouse Hover with Shift Key (HoverValues OnShift) [default] When the mouse is positioned over a variable while the shift key is depressed show its value in a tooltip. 204 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options Position of buttons Specifies the location of the toolbar inside of Debugger windows. Permitted settings for this option are: Top (DebugButtonsLoc Top) [default] The toolbar appears below the menu bar and above the source pane. Bottom (DebugButtonsLoc Bottom) The toolbar appears below the command pane and above the status bar. Debugger child windows Windows only Controls how Debugger child windows (such as Data Explorer, monitor, and the breakpoint window) interact with the Debugger window in terms of stacking order and focus. Permitted settings for this option are: Stay above debugger (ViewsAreChildrenMode Children) [default] Child windows are always displayed in front of the Debugger, and the keyboard focus stays with the Debugger when a child window appears. This makes it easy to keep track of child windows and keeps the focus with the Debugger for further command input, but can be annoying if the child windows start to obscure the Debugger window. Child windows can be minimized, but this mode precludes partially obscuring a child window with the Debugger to save space. Can be below debugger (ViewsAreChildrenMode Toplevel) Child windows can be either above or below the Debugger, and keyboard focus remains with the Debugger for further command input when a child window first appears. Because the keyboard focus remains with the Debugger, child windows will appear to flash above the Debugger and then immediately go behind it, so this option is most useful on a large screen where child windows do not overlap the Debugger when they first appear. Are initially focused (ViewsAreChildrenMode KeepFocus) Child windows can be either above or below the Debugger, and also receive the keyboard focus when they first appear. This keeps child windows from immediately going behind the Debugger, but takes the focus away from the Debugger. Further command input into the Debugger is not possible until you click the Debugger again to give it the keyboard focus. Command pane height in lines Specifies the initial height of the command pane in num lines of text. The equivalent command line option for this setting is: CWindLines num [default is 10]. Command pane prompt Specifies the string used as a prompt in the Debugger command pane to indicate that user input is desired. The equivalent command line option is: prompt string [default is MULTI>]. Green Hills Software, Inc. 205

9. Configuration Options Configure Debugger Buttons Opens a dialog box which you can use to edit the Debugger toolbar buttons using the same format as the debugbutton command. This dialog box is only accessible from the MULTI Debugger. The dialog box lists currently defined buttons on the left, and available icons on the right. For more information, see the debugbutton option in Other Debugger Configuration Options on page 213. More Debugger Options This button opens the More Debugger Options dialog box which contains additional configuration options for the Debugger (see More Debugger Options Dialog on page 206). Minimum initial size (WxH) Specifies the minimum initial size of a Data Explorer window in characters (width) and lines (height). The equivalent command is: MinViewSize widthxheight [default is 40x3] If left blank, MULTI will auto-size the Data Explorer windows appropriately. Maximum initial size (WxH) Specifies the maximum initial size of a Data Explorer window in characters (width) and lines (height). The equivalent command is: MaxViewSize widthxheight [default is 40x42] Iftheminviewsize (see above) is greater in either dimension than the maxviewsize, themaxviewsize value is used. Initial position (XxY) Specifies the initial position from the top-left of the screen for a Data Explorer window, specified in characters (width) and lines (height). The equivalent command is: FirstPosition horizxvertp [default is 0x0] To give the coordinates in pixels, put a p after them (for example, 100x100p). This option only applies to the first Data Explorer window. Subsequent Data Explorer windows are offset from the first one that was created, avoiding excessive overlap. If this option is left unspecified (blank), the Debugger auto-positions all Data Explorer windows. More Debugger Options Dialog This dialog box opens when you click More Debugger Options buttononthe Debugger tab of the Options window. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. 206 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options Automatically dereference pointers Permitted settings for this option are: Selected (DerefPointer On) [default] MULTI automatically follows pointers when it encounters them and prints both the pointer value and the object it points to. Cleared (DerefPointer Off) MULTI only displays the value of the pointer. Check syntax of breakpoints when they are set Permitted settings for this option are: Selected (BpSyntaxChecking On) [default] Commands associated with a breakpoint must pass syntax checking for the breakpoint to be set. Breakpoint commands that fail syntax checking cannot be set. Cleared (BpSyntaxChecking Off) A syntax error in a breakpoint command will not be detected by MULTI until the breakpoint is hit and MULTI tries to execute the associated commands. Continue running script files on error Permitted settings for this option are: Selected (ContinuePlaybackFileOnError On) The Debugger will not stop if it encounters an error while running a script file. Instead, it will ignore the error and continue reading and performing commands out of that file. Cleared (ContinuePlaybackFileOnError Off) [default] The Debugger aborts running a script file if it encounters an error. See also AbortPlaybackFileOnSeriousError in Other Debugger Configuration Options on page 213. s (step) and n (next) are blocking by default Permitted settings for this option are: Selected (BlockStep On) No Debugger commands will be executed until a step or next finishes. Cleared (BlockStep Off) [default] Subsequent commands can execute before the step or next is finished, which can cause scripts that use s or n to appear to behave inconsistently. A step or next can be made blocking or non-blocking regardless of the setting of this option by appending an n (for non-blocking) or b (for blocking) to the command. Green Hills Software, Inc. 207

9. Configuration Options Show locations of variables for print command Permitted settings for this option are: Selected (ShowAddress On) [default] The location (address in memory or register name) of a variable is printed when using the print command. Cleared (ShowAddress Off) The location of a variable will not be printed; only the value is displayed. Display typedef type instead of basic type Permitted settings for this option are: Selected (LeaveTypedef On) Data explorer windows for structures will display the name of the type definition Cleared (LeaveTypedef Off) [default] Data explorer windows for structures will display the actual self-contained type. Show position in non-gui (-nodisplay) mode Permitted settings for this option are: Selected (ShowPosInNoDisplayMode On) [default] When running in non-gui mode, MULTI will print the line of source associated with the current line pointer, each time the current line pointer moves. This is the line that will be affected by the next Debugger command executed. Cleared (ShowPosInNoDisplayMode Off) The line of source code associated with the current line will not display. Repeat last command on return key in non-gui (-nodisplay) mode Permitted settings for this option are: Selected (DisableCarriageReturnRepeat On) The Return key does not repeat the last entered command. Cleared (DisableCarriageReturnRepeat Off) [default] The Return key can be used to repeat the last entered command when running in non-gui mode. Print return values when stepping out of functions Permitted settings for this option are: Selected (PrintReturnValues On) If a function returns a value print the return value to the command pane when stepping out of the function Cleared (PrintReturnValues Off) [default] Do not print return values of functions when stepping out of them 208 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options Show target windows when connecting to debug server Permitted settings for this option are: Selected (ShowTargetWindows On) The Target and IN/OUT windows will appear when you connect to a debug server. Cleared (ShowTargetWindows Off) Target and IN/OUT windows will be created when you connect to a Debug server, but they will be hidden. You can make the windows appear with the targetwindow command. Or you can switch to the target pane and I/O pane in the Debugger window to access the functionality of the two windows. For more information, see the targetwindow and debugpane commands, and information about the multi-purpose pane in the MULTI: Debugging manual. Request OSA package when MULTI cannot figure it out Permitted settings for this option are: Selected (RequestOSAPackage On) If MULTI thinks that the program is a freeze-mode debugging project (see Chapter 26, Freeze-Mode Debugging and OS-Awareness in the MULTI: Debugging book) but cannot determine the Operating System Awareness (OSA) package, MULTI will prompt you for the package name. You can choose the package name so that MULTI can provide the corresponding debugging features, or select Cancel to continue without OSA. Cleared (RequestOSAPackage Off) [default] MULTI will not prompt you for the OSA package name and will continue without OSA. Delete dead tasks from group Permitted settings for this option are: Selected (DeleteDeadTaskFromGroup On) The Task Manager will delete dead task fingerprints from the task group. For more information about task groups and the meaning of dead tasks, see Chapter 25, Run-Mode Debugging in the MULTI: Debugging book. Cleared (DeleteDeadTaskFromGroup Off) [default] The Task Manager will not delete dead task fingerprints from the task group. Automatically verify ROM image is up-to-date Permitted settings for this option are: Selected (AutoVerifyROMSections On) [default] When an executable residing in the target s ROM begins executing, the Debugger will automatically check whether the host and target versions of the executable match. For more information, see the romverify command in Chapter 30, Debugger Commands in the MULTI: Debugging book. Cleared (AutoVerifyROMSections Off) The Debugger will not check the target s version of the executable. Green Hills Software, Inc. 209

9. Configuration Options Translate DWARF debugging information (requires dwarf2dbo license) Permitted settings for this option are: Selected (AutoDWARF2dbo On) Enables automatic translation of DWARF debugging information when an executable built with a third-party compiler that generates DWARF information is loaded. This option is only meaningful if you have licensed dwarf2dbo; otherwise, it will have no effect. Cleared (AutoDWARF2dbo Off) [default] Disables automatic translation of DWARF debugging information. For more information about translating DWARF debugging information, see Using the Debugger with Third-Party Compilers in Appendix D, Using Third-Party Tools with the MULTI Debugger in the MULTI: Debugging book. Translate stabs debugging information (requires stabs2dbo license) Permitted settings for this option are: Selected (AutoStabs2dbo On) Enables automatic translation of Stabs debugging information when an executable built with a third-party compiler that generates Stabs information is loaded. This option is only meaningful if you have licensed stabs2dbo; otherwise, it will have no effect. Cleared (AutoStabs2dbo Off) [default] Disables automatic translation of Stabs debugging information. For more information about translating Stabs debugging information, see Using the Debugger with Third-Party Compilers in Appendix D, Using Third-Party Tools with the MULTI Debugger in the MULTI: Debugging book. Reuse Data Explorer Permitted settings for this option are: Selected (UnifyViewWindows On) Causes MULTI to display newly opened variable in an existing, non-frozen Data Explorer when available. Cleared (UnifyViewWindows Off) Causes each newly viewed variable to be displayed in a separate Data Explorer. For more information, see Chapter 9, Viewing and Modifying Variables with the Data Explorer in the MULTI: Debugging book. 210 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options Stepping over C++ exception or longjmp When the Debugger performs a next operation over a subroutine that calls longjmp or throws a C++ exception (implemented by a call to longjmp internally), the subroutine does not return in the normal way due to the transfer of control within the function call. This is significant because the Debugger uses a temporary breakpoint just after the normal return address to implement the next operation. This is also true of step if there is no source available for the subroutine. When longjmp is called, this temporary breakpoint is bypassed due to the transfer of control, and execution can run away since the breakpoint will never be hit. This configuration option controls how MULTI attempts to properly catch unexpected transfers of control while stepping through code. Permitted settings for this option are: Ignore/Run Away (LongjmpStepMode IgnoreRunAway) [default] Let the code call longjmp without attempting to detect abnormal transfers of control. Minimize Temp Stops (LongjmpStepMode MinimizeTempStops) Fixes the problem in a way that does not cause temporary stops in longjmp as the program runs normally. This option inserts and removes a temporary breakpoint at longjmp for each next over a function call. Maximize Step Speed (LongjmpStepMode MaximizeStepSpeed) Fixes the problem in a way that minimizes the time it takes to do a next. This option leaves a permanent breakpoint at longjmp, and will result in execution always halting due to a breakpoint being hit whenever the program calls longjmp, even during normal execution. Debug server timeout in seconds Specifies the number of seconds to wait for communication from a debug server before assuming it is dead and disconnecting from it. The equivalent command for this setting is: ServerTimeout seconds [default is 15]. A timeout that is too low will sometimes mistakenly disconnect from the debug server, and is not recommended. A fairly high timeout can be useful for very slow debug servers or debug servers that are being debugged. A high timeout can be frustrating if the debug server actually does die, because the Debugger cannot accept input while it s waiting for communication from a debug server. Interval to refresh Task Manager (in seconds) Specifies the polling interval in seconds. MULTI checks for interesting events happening in the underlying RTOS and refreshes the Task Manager periodically. The equivalent command for this setting is: ServerPollinterval seconds [default is 1 for INTEGRITY; 5 for other real-time operating systems]. Green Hills Software, Inc. 211

9. Configuration Options Criteria to decide if a task is in a group Controls how to match a task fingerprint against a task. For more information about how the fingerprint is used in the construction process of a task group, see Chapter 25, Run-Mode Debugging in the MULTI: Debugging book. Permitted settings for this option are: Task Name (TaskMatchCriteria Name) [default] Matches against the name of the task. Task Identifier (TaskMatchCriteria Id) Matches against the identifier of the task. Task Name or Identifier (TaskMatchCriteria NameOrId) Matches against the name or identifier of the task. Prompt when exiting Debugger Controls whether a confirmation dialog box appears when a user attempts to close the Debugger. Permitted settings for this option are: Confirm If Process Started (PromptQuitDebugger Normal) [default] The confirmation dialog box is displayed only if the Debugger is attached to a process that has been started. If the Debugger is attached to a process that has not been started, the Debugger closes without displaying the confirmation dialog box. In a run-mode debugging environment, the Debugger closes without displaying the confirmation dialog even though the process has been started. Always Confirm (PromptQuitDebugger Always) The Debugger will not close until the user confirms the action in the confirmation dialog box. Never Confirm (PromptQuitDebugger Never) The Debugger never displays the confirmation dialog box before closing. Maximum size for container display The equivalent command for this setting is: MaxContainerDisplaySize num [default is 20] Sets the maximum number of elements initially displayed when a container is viewed in a Data Explorer. Increment to maximum container size The equivalent command for this setting is: ContainerSizeIncrement num [default is 10] Sets the number of elements to add when expanding a container that is being viewed in a Data Explorer. 212 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options Other Debugger Configuration Options The options in this section are not accessible from the Options dialog box. These options can be set in a configuration file or by using the configure command in the Debugger command pane. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. AbortPlaybackFileOnSeriousError [On Off] [default is Off] On The Debugger will abort running a script file if an apply, backout, or rload command fails, even if the option ContinuePlaybackFileOnError is On (see the Debugger commands apply, backout, and rload). Off [default]. AllowExecutionInAssertionCommand [On Off] On Execution of command line procedure calls is allowed from within assertion commands. This is somewhat risky because command line procedure calls may affect the state of the program counter, potentially causing improper functioning of assertions and breakpoints. Off [default]. AllowExecutionInBpCommand [On Off] On Stepping and execution of command line procedure calls are allowed from within a breakpoint command. This is somewhat risky because infinite breakpoint command recursion can occur if the execution from within the breakpoint command causes the same or another breakpoint to be hit. The resume command is always allowed in a breakpoint command. Off [default]. AssertionSyntaxChecking [On Off] On Commands associated with an assertion must syntax check without errors before the assertion is set. The syntax checking verifies that Debugger commands will not result in errors when they are executed and variables are accessible in the scope where the assertion is set. Off [default] Allows assertions to reference variables which are not in the current scope, although using such assertions is not recommended. AttemptToShowOldVersionOfUpdateSource [On Off] On The Debugger will display the versions of source files that were used to build the executable being debugged by using the version control history to check out the appropriate version of the file. Off [default]. Green Hills Software, Inc. 213

9. Configuration Options ClearButtons Removes all of the Debugger buttons (except for the Close button if it is present) so they can be created from scratch with debugbutton. DebugButton Lists the defined Debugger buttons. Used with additional configuration options to add, delete, and configure buttons. See Configuring and Customizing Toolbar Buttons on page 164 for details. DownloadWindow [true false] The Download Window is a window which shows the current progress of a program download. The option can be set to: true [default] The download window will be used when downloading a program to the debug server. false The download window will not be used. EchoCommandsFromPlaybackFiles [true false] true When executing from a playback file, Debugger commands being executed will be displayed. false [default] When executing from a playback file, Debugger commands being executed will not be displayed. ExprCaseSensitivity [Language_Default On Off] Controls the case sensitivity of expression evaluation in the Debugger. This option may take one of three values: Language_Default [default] The Debugger follows the case sensitivity rules for the language of the program being debugged. (This setting is recommended.) On Expression evaluation is case sensitive. Off Expression evaluation is not case sensitive. FormatStringMaxDepth num Limits the depth to which nested structs are displayed in a Data Explorer Window. num [default is 0x7fffffff] The number of levels of nested structs to display. The valid range is 1 unlimited (0x7fffffff). 214 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options FormatStringMaxLength num Limits the length of the value displayed on each row in a Data Explorer window. Data values displayed on a single row in a Data Explorer can be very long, for example when displaying a long string value, or a structure with many nested structs. num [default is 8192] The number of characters to display in a row. For example, if this is set to 2000, only the first 2000 characters of a long string will display, followed by... to indicate there are more characters that are not displayed. The valid range is 1024 to 10 megabytes (10485760). Geometry widthxheight [[+x_offset+y_offset] [-x_offset-y_offset]] [default depends on screen size and varies from system to system. The width is approximately wide enough to display 80 characters on a line.] This configuration command sets the size and position of the Debugger window: The width and height correspond to the pixel size of the Debugger window. The optional x_offset and y_offset values indicate the pixel offset at which the Debugger window appears from the top left corner of the screen for the + variant or from the bottom right corner of the screen for the - variant. For example, the entry: geometry 500x700+0+0 specifies a 500 pixel wide by 700 pixel high Debugger window that appears in the top left corner of the screen: GlobalHeading [On Off] On Enables the global scope entry in the Browse window. Off [default] Disables global scope entry in the Browse window. GotoHitsBpAtTargetAddress [On Off] On If you are using the Debugger command g, any breakpoint at the destination will be hit as soon as execution begins at the new location. This option also controls whether a breakpoint set on the first instruction of a procedure called from the command line is hit. Off [default] The breakpoint will not be hit. See the g command in Chapter 30, Debugger Commands in the MULTI: Debugging book for more information about the g command. History num [default is 256] This option specifies how many commands to remember for the Debugger command history mechanism. For more information see Chapter 30, Debugger Commands in the MULTI: Debugging book. Green Hills Software, Inc. 215

9. Configuration Options icongeometry widthxheight+x_offset+y_offset UNIX only [default is 32x64+0+0] Specifies the dimensions for the icon that is used when the Debugger is minimized (some window managers will ignore this setting): width and height The width and height of the icon in pixels. x_offset and y_offset The number of pixels the icon should be offset from the top left corner of the screen. interleavedoutput [true false] Controls whether output from Debugger panes other than the command pane will also be output to the command pane. true [default] Output from Debugger panes other than the command pane will be output to the command pane. For example, the I/O pane will show up in command pane the with the prefix I/O:. false Output from other panes will not appear in the command pane. KeepLoaders [On Off] On The Debugger will keep certain item chooser windows (such as file choosers) open after they have been used once, so they can be used multiple times. Off [default] Item chooser windows disappear after being used once. LinesNonOverlapped num [default is 4] By default, when the Debugger opens a Data Explorer or monitor window with UseWMPositioning Off (see Other General Configuration Options on page 197), the new window is stacked on top of previous windows to save screen space. This setting leaves the top num lines of the previous window visible. ProcQualifiedLocalimpliesOutermostBlock [On Off] When the current line pointer is in an inner block of a procedure and that inner block defines a variable which has the same name as a variable in the outer block, a procedure qualified reference to the name of the variable can either refer to the variable of that name in the outermost block or the current inner block. This option determines which of the two options is used: On The outermost block is used. Off [default] The current inner block is used. PaddedHex [true false] true Forces hex values to be displayed padded to their full width with zeros. For example, a four byte variable with a value of 0x8 will be displayed as 0x00000008. false [default] Hex values will not be displayed as entered. 216 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options QuietTogCmd [On Off] On The tog command does not echo the status of the breakpoint(s) it toggles. Seealsotheq option for the tog command in Chapter 30, Debugger Commands in the MULTI: Debugging book. Off [default]. RecordCommentedCommandsFromMacros [true false] When command recording is enabled, commands executed from playback files are recorded as comments. This option controls whether commands executed from macros are also recorded as comments. true Commands executed from macros are recorded as comments. false [default]. SDLNameDisplay [On Off] On [default] The procedure name listed in stack traces will display the mnemonic SDL name instead of the C source name whenever possible for SDL generated code. For more information about SDL commands, see Chapter 30, Debugger Commands in the MULTI: Debugging book. SetBPAtAdrinitWhenExecing [On Off] On [default] MULTI will set a breakpoint at the starting routine of a program when the program is run. Execution is resumed automatically when this breakpoint is hit unless a user breakpoint was set at the same spot. This is necessary to prevent corrupted call stack traces. Off MULTI will not set a breakpoint at the starting routine of a program when the program is run. ShellConfirm [On Off] On [default] If MULTI is running in the background, the shell command will open a dialog box which allows you to confirm or cancel the execution of the shell command before the shell command executes. This is helpful when MULTI is running in the background, because the shell commands have no accessible standard output or standard error. Off MULTI will always execute shell commands immediately, without opening the dialog box. For more information, see the shell command in Chapter 30, Debugger Commands inthemulti: Debugging book. SharedSymbols [true false] true [default] MULTI will attempt to debug shared objects. false MULTI will not attempt to debug shared objects. Green Hills Software, Inc. 217

9. Configuration Options ShowTraceOSAWindows [true false] true [default] The trace OSA window will open when packets in user mode address spaces are selected. false The trace OSA window will not open when packets in user mode address spaces are selected. SilentlyReloadSymbols [On Off] On The Debugger automatically kills any existing process and reloads the symbols without displaying this dialog. This is useful if you are using a Debugger primarily to examine symbols and not to debug running processes. Off [default] When the executable open in the Debugger changes, the Debugger displays a dialog asking if any existing process should be killed and the symbols reloaded. StepToBpIgnoresResumeInBpCmd [true false] Controls whether the c (continue) command in a breakpoint is ignored. (This option is incorrectly named, because it ignores the Continue command, not the Resume command.). true The c command in the breakpoint command list will be ignored, a warning will be printed, and the program will be stopped at the breakpoint. false [default] The c command in the breakpoint command list will not be ignored. For example, if you have a breakpoint with the command list print x; c and step on to this breakpoint, the program will start running, because the c command causes the program to continue. The c command inside a breakpoint always causes the program to start running, which is incorrect behavior if you want to step on to that line. Note that the resume command should be used inside breakpoint command lists. If the breakpoint s command list is print x; resume, the program stops when you step on to the breakpoint. If you run the program and it hits the breakpoint, it will keep running (the program resumes whatever it was going to do before hitting the breakpoint). 218 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options TBtypeBG color TBtypeFG color Specifies the background color (commands end with BG) or foreground color (commands end with FG) for Tree Browser displays, where: type is one of the following: FunctionNormal (TBFunctionNormalBG and TBFunctionNormalFG) Functions displayed in the static call Tree Browser which have debugging information. FunctionNoInfo (TBFunctionNoInfoBG and TBFunctionNoInfoFG) Functions displayed in the static call Tree Browser which do not have debugging information. FunctionRecursive (TBFunctionRecursiveBG and TBFunctionRecursiveFG) Functions displayed in the static call Tree Browser that may be recursive. FunctionAdrTaken (TBFunctionAdrTakenBG and TBFunctionAdrTakenFG) Nodes representing the possibility of calls to a function through function pointer in a Tree Browser. DynNormal (TBDynNormalBG and TBDynNormalFG) Functions displayed in the dynamic call Tree Browser with debugging information. DynNoInfo (TBDynNoInfoBG and TBDynNoInfoFG) Functions displayed in the dynamic call Tree Browser without debugging information. FileNormal (TBFileNormalBG and TBFileNormalFG) Files displayed in the file call Tree Browser with debugging information. FileNoInfo (TBFileNoInfoBG and TBFileNoInfoFG) Files displayed in the file call Tree Browser without debugging information. ClassUnion (TBClassUnionBG and TBClassUnionFG) Unions displayed in the class Tree Browser. ClassStruct (TBClassStructBG and TBClassStructFG) Types displayed in the class Tree Browser with debugging information. ClassNoInfo (TBClassNoInfoBG and TBClassNoInfoFG) Types displayed in the class Tree Browser without debugging information. ClassClass (TBClassClassBG and TBClassClassFG) Class data types displayed in the class Tree Browser. ClassEnum (TBClassEnumBG and TBClassEnumFG) Enum data types displayedintheclasstreebrowser. BG or FG Specifies whether you are changing the background or foreground color of the displayed items. color Specifies, in RGB (## ## ##) format, the new color. Green Hills Software, Inc. 219

9. Configuration Options ViewDef [number_option] [eval_option] [[-]other_options] [default is NaturalOrHex ReEvalContext -ShowAddress -ShowFType -Alternate -PadHex ShowBases -ShowAllFields ShowDerived ExpandValue OpenPointer ShowChanges] Specifies how data will be displayed in Data Explorer windows, where: number_option can be one of the following: NaturalOrHex Numbers display in their default states unless HexMode On is set (see Debugger Options Tab on page 203). Natural Numbers display in their default states. Hex, Dec, Oct, Binary Numbers and characters display in base 16, base 10, base 8, or base 2 notation, respectively. eval_option specifies how the Debugger re-evaluates expressions when updating Data Explorers, and can be one of the following: ReEvaluate Each expression is re-evaluated in the same context it as when the Data Explorer displaying it was first created. ReEvalContext Expressions are re-evaluated within the current procedure at the top of the call stack. ReEvalInGlobal When expressions are re-evaluated, only looks for variables in the global scope. UseAddress Uses last valid address of variables being displayed. more_options can include any of the options listed below. (Prepending an option with a dash (-) disables the behavior.) ShowAddress Displays the address (rather than name) of the variable. ShowFType Shows the type of each variable, class, or structure. Alternate Displays data in an alternate format, if available. PadHex Adds zeros to the left of hexadecimal numbers to maintain same bit width, as needed. (Otherwise, only non-zero hexadecimal digits display.) ShowBases Displays the base classes of a C++ class along with a derived instance. ShowAllFields Displays all the fields of a complicated structure. ShowDerived Determines the most derived C++ class type of the current object and redisplays the object cast to that type. ExpandValue Displays the value in memory (if in readable memory) that a pointer references. OpenPointer Dereferences all pointers. ShowChanges Highlights values that have changed. 220 MULTI: Editing Files and Configuring the IDE

Debugger Configuration Options TraceAlwaysOn [On Off] Trace collection is automatically enabled when connecting to a target that supports trace. On Trace collection will automatically be reenabled after trace is collected. When you click the Stop Tracing button, the trace data collected most recently is displayed, and trace collection is automatically reenabled. When the program completes execution, trace data is displayed and trace collection is automatically reenabled. Off [default] Trace collection will not be reenabled automatically. WarnOnBpReplacement [On Off] On The Debugger will display a warning before replacing a breakpoint that was already there. This is useful to avoid losing a long breakpoint command by accidentally replacing that breakpoint with a new breakpoint which has no command. Off [default]. ViewWindowDefaultToTree [true false] Controls whether View windows are displayed in tree mode or flat mode by default. true [default] View windows will be displayed in tree mode. false View windows will be displayed in flat mode. You can switch between tree and flat mode by pressing Ctrl + T or using the View window menu. WarnOnCmdAdrLinePromotion [On Off] On The Debugger will display a warning when setting a breakpoint on a line with no corresponding assembly code. Off [default]. Green Hills Software, Inc. 221

9. Configuration Options MULTI Editor Configuration Options This section describes configuration options that affect the appearance and behavior of the MULTI Editor. If you are using the MULTI Editor, you will use the MULTI Editor tab of the Options dialog box for most settings (see MULTI Editor Options Tab on page 222). If you are using an alternate Editor, see Configure Other Editor Options on page 188. MULTI Editor Options Tab To access the following options, select Config Options MULTI Editor tab. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Reuse editor windows Permitted settings for this option are: Selected (OpenFilesInNewBuffers On) Files opened from the Builder or Debugger will open in a new buffer in the existing Editor window. Cleared (OpenFilesInNewBuffers Off) [default] Every file opened from the Builder or Debugger will open in a new Editor window. Create backup files when saving Permitted settings for this option are: Selected (EditorBackups On) A backup of the on-disk version of a file will automatically be created before saving over it. The backup file has the same name as the original file, with a tilde (~) appended to it. Cleared (EditorBackups Off) [default] Backup files will not be created. Allow middle click to paste Permitted settings for this option are: Selected (AllowMiddleClick On) [default for UNIX] Clicking the middle mouse button will have the same effect as pasting from the selection buffer. Cleared (AllowMiddleClick Off) [default for Windows] Clicking the middle mouse button will not paste from the clipboard. 222 MULTI: Editing Files and Configuring the IDE

MULTI Editor Configuration Options Enter spaces in place of tabs Permitted settings for this option are: Selected (TabsAreSpaces On) Tab characters entered into an Editor window will be replaced by an appropriate number of space characters in the Editor buffer, regardless of whether the Tab is the result of press of the Tab key, a paste command, or an auto-indent by the Editor. Cleared (TabsAreSpaces Off) [default] Space characters are not inserted in place of Tab characters. Drag and drop text editing Permitted settings for this option are: Selected (DragAndDrop On) [default] Text can be moved in the Editor by selecting a block of text and dragging the mouse to a new location. Cleared (DragAndDrop Off) Text cannot be moved by dragging the mouse. Allow overtype mode Permitted settings for this option are: Selected (AllowOvertypeMode On) Allows switching between insert and overtype mode. Cleared (AllowOvertypeMode Off) [default] Does not allow switching between insert and overtype mode. Tab size Specifies the number of spaces used to display a Tab in the Editor. The equivalent command for this setting is: TabSize spaces [default is 8]. Indent size Specifies the number of spaces in an indentation. The equivalent command for this setting is: EditIndent spaces [default is 4]. Ctrl+cursor jump size Specifies the value used by the UpSome, DownSome, LeftSome, and RightSome commands in the Editor. The equivalent command for this setting is: EditSomeSize num [default is 5] These are bound to the Ctrl + Left Arrow keys. For example, Ctrl + LeftArrow will move the cursor left by num characters. Green Hills Software, Inc. 223

9. Configuration Options Configure Editor Buttons Opens the Configure Buttons dialog box, which allows you to edit the Editor buttons using the same format as the editbutton configuration option (see Configuring and Customizing Toolbar Buttons on page 164). The dialog box lists currently defined buttons on the left, and available icons on the right. More Editor Options Opens the More Editor Options dialog box, which contains additional configuration options for the Editor. See More Editor Options Dialog Box on page 227. Implicit auto indent Permitted settings for this option are: Selected (AiImplicitIndent On) [default] The Editor automatically indents the file as you type. Cleared (AiImplicitIndent Off) The Editor will not automatically indent your file. Implicit auto indent in comments Permitted settings for this option are: Selected (AiImplicitIndentInComments On) [default] Comments will be indented when auto-indenting multiple lines. Cleared (AiImplicitIndentInComments Off) Comments are not modified unless you auto-indent a single line. Switch bodies indented two instead of one Permitted settings for this option are: Selected (AiSwitchInTwo On) [default] For C or C++ source files, switch bodies are indented two levels so that case labels are indented one level in from the switch. For Ada source files, select bodies are indented two levels so that labels are indented one level in from the select. Cleared (AiSwitchInTwo Off) For C or C++ source files, the case labels are even with the switch. For Ada source files, the labels are even with the select. Indent comments when indenting multiple lines Permitted settings for this option are: Selected (AiTouchComments On) Comments are indented when auto-indenting multiple lines. Cleared (AiTouchComments Off) [default] Comments are only indented if you auto-indent a single line. 224 MULTI: Editing Files and Configuring the IDE

MULTI Editor Configuration Options Comments stick flush left Permitted settings for this option are: Selected (AiCommentsStayFlushLeft On) [default] All comments will be kept directly on the left margin. To indent a comment that is stuck to the left margin while this option is selected, insert a space just before the start of the comment, then auto-indent the comment. Tomoveacomment to the left margin, regardless of the position where the comment started, insert a number sign (#) as the first character of a comment. For example, if you are coding in C, type: /*# and the comment is automatically moved to the left margin. Cleared (AiCommentsStayFlushLeft Off) Indents will be applied to comments. C chars aligned like * in comments Allows characters other than an asterisk (*) to line up in comments as if they were asterisks. The equivalent command for this setting is: AiCharsLikeStarInComment char_string [default is - (dash)] The default setting allows correct automatic indentation of comments which have a column of - (dashes) down the left side, lined up under the * in the /* sequence. To have characters other than an asterisk (*) line up in comments as if they were asterisks, make them part of the char_string. Green Hills Software, Inc. 225

9. Configuration Options C paren indent mode Controls how the Editor indents a line in a source file if it starts within an open parenthesis/close parenthesis pair. Permitted settings for this option are: Even with parentheses (AiParenIndentMode EvenWithParen) Ifthere is a non-whitespace character between the open parenthesis and the end of its line, the lines enclosed in parentheses start at the same column as that character. Otherwise, the lines enclosed in parentheses start in the column just after the open parenthesis. For example: void foo (void) { bar( argument_one, argument_two ); } Indent in two (AiParenIndentMode IndentInTwo) [default] Lines enclosed in parentheses start two indent levels in from the line that contains the open parenthesis. For example: void foo (void) { bar( argument_one, argument_two ); } Ada paren mode Controls how the Editor indents a line in an Ada source file if it starts within an open parenthesis/close parenthesis pair. Permitted settings for this option are: Even with parentheses (AiAdaParenIndentMode EvenWithParen) [default] If there is a non-whitespace character between the open parenthesis and the end of its line, the lines enclosed in parentheses start at the same column as that character. Otherwise, the lines enclosed in parentheses start in the column just after the open parenthesis. Indent inttwo (AiAdaParenIndentMode IndentInTwo) The lines enclosed in parentheses start two indent levels in from line that contains the open parenthesis. 226 MULTI: Editing Files and Configuring the IDE

MULTI Editor Configuration Options More Editor Options Dialog Box To open this dialog box, click More Editor Options on the Multi Editor tab of the Options window. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Print 2 columns in landscape Windows only Permitted settings for this option are: Selected (EditPrint2Column On) The Editor prints files in landscape mode with two pages per sheet. Cleared (EditPrint2Column Off) [default] The Editor prints one page per sheet in portrait mode. Temp file directory Specifies the directory where MULTI stores its temporary files. The equivalent command for this setting is: TempFileDir dirpath The default is blank, which has the following results: (Windows) Uses the values of the TMP or TEMP environment variables and defaults to the current directory if those variables are not set. (UNIX) Uses the values of the TMPDIR or TEMP environment variables and defaults to /tmp if those variables are not set. Initial width in characters Specifies the initial width of Editor windows in characters. The equivalent command for this setting is: EditWidth width [default is 80] This option is only useful when Save window positions and sizes is set to Cleared (rememberwindowpositions off) (see General Options Tab on page 183). Initial height in characters Specifies the initial height of Editor windows in characters. The equivalent command for this setting is: EditHeight height [default is 32] This option is only useful when Save window positions and sizes is set to Cleared (rememberwindowpositions off) (see General Options Tab on page 183). Green Hills Software, Inc. 227

9. Configuration Options Selection margin width in pixels Specifies the width of the left margin in the Editor in pixels. The equivalent command for this setting is: SelectionMarginWidth num [default is 13] Ifthewidthis0, the left margin does not appear and entire lines of text can no longer be selected by using the margin. Changing the selection margin width affects only new Editor windows. Generate auto-recover file every... seconds Specifies the number of seconds between generation of auto-recover files. The equivalent command for this setting is: EditIncrFrequency num [default is 120] The Editor will create an auto-recover file every num seconds as you edit. If the power goes out or the Editor crashes, the next time you open the same file, you will be given the option to re-apply the edits saved in the auto-recover file. Per File Settings Defaults The settings in this section are used when a file is first opened. Changes to the default settings will automatically be applied to all files open in the Editor. To change the settings for an individual file without affecting other open files, choose View Per File Settings in the Editor. Spaces per indent for Ada Specifies the number of spaces in an indentation for Ada files. The equivalent command for this setting is: AdaIndentSize num [default is 3]. Ada continuation line indent Specifies the number of spaces in an indentation for a continuation line in Ada files. The equivalent command for this setting is: AdaContinuationSize num [default is 2]. Word wrap Permitted settings for this option are: Selected (WordWrap On) If lines are longer than the wrapping width, the Editor will automatically split lines on word boundaries as you type. Cleared (WordWrap Off) [default] Lines will not wrap. Wrap column The equivalent command for this setting is: WrapColumn width [default is 79] When Word wrap is selected (WordWrap On), width specifies the last column a character will appear before wrapping to the next line. If a line is a single word and cannot fit within width columns, it will be put on a line by itself. 228 MULTI: Editing Files and Configuring the IDE

MULTI Editor Configuration Options Wrap indent offset The equivalent command for this setting is: Wrapindent num [default is 2] When a word wraps to the next line, the word is automatically indented num extra spaces from where it would normally appear. Fill Paragraph Column Specifies the column at which each line will be wrapped when using Ctrl + Shift + A to reformat comments. The equivalent command for this setting is: FillParagraphColumn num [default is 80]. Other MULTI Editor Options The options in this section are not accessible from the Options dialog box. These options can be set in a configuration file or by using the configure command in the Debugger command pane. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. AutoGrabHeadFiles [On Off] Controls whether the MULTI Editor automatically grabs function prototypes from a source s file s include files when the source file is loaded. On [default] The MULTI Editor will automatically grab function prototypes when opening source files. In some cases, the answer service may not provide the Editor with the header file list. However, if the header file paths in the source file are relative to the source file s directory, the MULTI Editor will be able to obtain some of the information on its own. Off The MULTI Editor will not grab function prototypes when opening source files. ClearEditButtons Removes all Editor buttons so they can be created from scratch with editbutton. Green Hills Software, Inc. 229

9. Configuration Options EditButton Creates a new Editor button. For information about this command, see Configuring and Customizing Toolbar Buttons on page 164. The usage of this command is: EditButton name commands iconname ignored_placeholderhelpstring tooltip The arguments name, commands, iconname, helpstring, and tooltip are either single words or a quoted strings. Quoted strings are of the form: "This is a quoted string." "These are quotes \" \" within a quoted string." The argument name gives the name of the button. If Use icons for buttons is Cleared(iconifiedButtons Off), this is the name on the button. If no tooltip string is provided, name also becomes the tooltip. The argument commands indicates the commands that should be executed when the button is pressed. The argument iconname gives the name of icon to use for the button if Use icons for buttons is Selected(iconifiedbuttons On): For a list of allowable icons, click Configure Editor Buttons from the MULTI Editor tab of the Options window. Alternatively, you can specify the full path to your own 16-color bitmap file as the icon. If no icon is specified, the help icon (question mark) is used. The argument ignored_placeholder is ignored and not used by this command. However, it serves as a placeholder, so it must remain in the command. The argument helpstring specifies the text that appears in the status bar when the mouse moves over the button. The argument tooltip specifies the text that appears in the small pop-up box when the mouse hovers over the button for a short time. EditParenMatch time [default is 10] Every time you type a right parenthesis, right square bracket, or right curly brace, the Editor briefly selects the matching one. The Editor will pause on this highlight of the previous match for time tenths of a second. A value of 0 (zero) will disable matching. 230 MULTI: Editing Files and Configuring the IDE

Session Configuration Options Session Configuration Options This section describes configuration options that allow you to control what information from the current session MULTI remembers for use in future sessions. The following options are available on the Session tab of the Options window. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Save command history between sessions Permitted settings for this option are: Selected (SaveCommandHistory On) [default] The command history for each executable will be saved. If the executable has not been debugged before, it will have no previous command history. Cleared (SaveCommandHistory Off) The command history will not be saved. Save data explorers between sessions Permitted settings for this option are: Selected (SaveViewWindows On) Saves data explorers between MULTI sessions on the same executable. This will save position and size as well as the variable which the data explorer was viewing. Cleared (SaveViewWindows Off) [default] Data explorers will not be saved. Save arguments between sessions Permitted settings for this option are: Selected (SaveRunArguments On) [default] Saves the last arguments supplied to run the target process between MULTI sessions on the same executable. To run the executable with no arguments use the R command. Cleared (SaveRunArguments Off) Arguments are not saved. Save debugger window position Permitted settings for this option are: Selected (SaveDebuggerWindowPos On) Saves and restores the size and position of the MULTI Debugger window on a per executable basis. Note that the Debugger window is only sized and positioned on window creation, so debugging a different executable from an already opened MULTI will not have any effect. Cleared (SaveDebuggerWindowPos Off) [default] Debugger window position will not be saved. Green Hills Software, Inc. 231

9. Configuration Options Remember breakpoints Determines if the Debugger remembers breakpoints that you have set for a program the next time you debug the same program and whether shared object breakpoints are saved between sessions. Permitted settings for this option are: Never (RememberBreakpoints Never) The Debugger will clear all breakpoints whenever you load or reload a program. Across Reloads (RememberBreakpoints WithinSession) [default] The Debugger will remember breakpoints that you have set when you reload the program within a single session. Breakpoints are lost when you exit MULTI. Across Sessions (RememberBreakpoints AcrossSessions) The Debugger will remember breakpoints that you have set for a program even if you exit and restart MULTI. Note that shared object breakpoints are only saved and restored in Across Sessions (RememberBreakpoints AcrossSessions) mode. For more information about shared object breakpoints, see Chapter 5, Executing and Controlling Your Program from the Debugger in the MULTI: Debugging book. Restored breakpoints overwrite breakpoints set by scripts Permitted settings for this option are: Selected (OverwriteScriptBreakpoints On) Previously saved breakpoints will overwrite breakpoints that have been created by a script run automatically for the current executable. Cleared (OverwriteScriptBreakpoints Off) [default] Previously saved breakpoints will not overwrite breakpoints that have been created by a script run automatically for the current executable. Remember last connect command used for process Permitted settings for this option are: Selected (SaveDebugServer On) [default] Saves the most recently used Connection Method on a per-executable basis. If the executable is started and MULTI is not connected, the saved Connection Method will be used as the default in the Connection Chooser dialog box. Cleared (SaveDebugServer Off) The last Connection Method is not saved. Automatically save changed connection files Permitted settings for this option are: Selected (AutoSaveConnectionsInFiles On) [default] MULTI saves any outstanding changes to all Target Connection files loaded in the Connection Organizer when you exit. Cleared (AutoSaveConnectionsInFiles Off) Changes to Target Connection files will not be automatically saved. 232 MULTI: Editing Files and Configuring the IDE

Session Configuration Options Automatically save User Methods changes Permitted settings for this option are: Selected (AutoSaveUserConnections On) [default] MULTI saves any outstanding changes to the User Methods Target Connection file when you exit. Cleared (AutoSaveUserConnections Off) All changes to the User Methods Target Connection file will be lost, even if Automatically save changed connection files is Selected (AutoSaveConnectionsInFiles On). Directory Memory Determine which directory to initially display in the File Chooser. Permitted settings for this option are: Across Sessions (RememberDirs RememberAcross) File Chooser will always open in the previously viewed directory for the same operation, even after closing and restarting MULTI. The user directories will only be used on the very first run of MULTI, or if a user settings file cannot be found. Within Sessions (RememberDirs RememberWithin) [default] File Chooser will open in the appropriate previously viewed directory, but it will not remember directories viewed in previous sessions. File Chooser will use the User directories initially each time MULTI is restarted. None (RememberDirs RememberNever) File Chooser will always open with the appropriate User directory, and never remember which directory was previously viewed. Green Hills Software, Inc. 233

9. Configuration Options User Directories Opens the User Directories dialog box, which sets the directories the File Chooser starts with if directory memory is not available or is turned Off. To change any of the settings in this dialog box, select the check box, then enter the full path of the directory. General Files: Selected (GenFileSet true) Opens the General Files Directory field, where you can enter the path. Cleared (GenFileSet false) [default] The current working directory is used. General Files Directory (GenFilesDir pathname) [default is current working directory] Use this field to enter the directory path for general files. Source Files: Selected (SourceFileSet true) Opens the Source Files Directory field, where you can enter the path. Cleared (SourceFileSet false) [default] The current working directory is used. Source Files Directory (SourceFilesDir pathname) [default is current working directory] Use this field to enter the directory path for source files. Build Files: Selected (BuildFileSet true) Opens the Build Files Directory field, where you can enter the path. Cleared (BuildFileSet false) [default] The current working directory is used. Build Files Directory (BuildFilesDir pathname) [default is current working directory] Use this field to enter the directory path for build files. Executables/Binaries: Selected (ExecFileSet true) Opens the Executables/Binaries Directory field, where you can enter the path. Cleared (ExecFileSet false) [default] The current working directory is used. Executables/Binaries Directory (ExecFilesDir pathname) [default is current working directory] Use this field to enter the directory path for executables. Debug Servers: Selected (DebugServerSet true) Opens the Debug Servers Directory field, where you can enter the path. Cleared (DebugServerSet false) [default] The current working directory is used. Debug Servers (DebugServersDir pathname) [default is current working directory] Use this field to enter the directory path for debug servers. 234 MULTI: Editing Files and Configuring the IDE

Colors Configuration Options Show version control information on file chooser dialog box UNIX only Permitted settings for this option are: Selected (ShowVersionControl true) If a user has the file checked out, the File Chooser dialog box will display the name of that user next to the filename in a column titled Version Control. Cleared (ShowVersionControl false) The Version Control column will be hidden and the version control system will not be queried. Warning: Selecting this option causes MULTI to query the version control system for each file. On some version control systems, turning on this option might slow down File Chooser performance significantly. Colors Configuration Options This section describes configuration options that you can use to change the display colors for MULTI. The following options are available on the Colors tab of the Options window. To edit colors, double-click the colored box next to any option to open the Color Chooser. For more information, see Color Chooser on page 239. (UNIX) Color options are expressed in RGB hexadecimal format as a number sign (#) followed by the six-digit hexadecimal value. For example, #FF0000 specifies the color bright red. (Windows) Color options are expressed in RGB format as three decimal values. For example, 255 0 0 specifies the color bright red. In the tables that follow, the default RGB values provided are in hexadecimal, but decimal values will appear on the Colors tab for Windows users. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Load Color Scheme UNIX only Opens the Color Scheme dialog box, which you can use to select from a list of predefined color schemes. If you prefer a different appearance from the default color scheme, you can try these to find the one that is closest to what you want. Green Hills Software, Inc. 235

9. Configuration Options Two color mode UNIX only Permitted settings for this option are: Selected (BlackWhite On) MULTI uses only the foreground and background color for its drawing (except in icons). This increases drawing speed in low graphics bandwidth situations. Cleared (BlackWhite Off) [default] MULTI uses multiple colors according to the color scheme selected. Global Colors UNIX only Global colors can only be set on UNIX systems. They affect the default colors for user interface elements. The following global color options may be set: Background (Background color) [default is #FFFFFF] Background color of user areas, such as the color behind the text you enter. Foreground (Foreground color) [default is #000000] Color of text. Control Area (ControlColor color) [default is #C0C0C0] Background color of control areas, such as menu bars and buttons. Selection (Select color) [default is #000080] Background color of text selections. The foreground color of selections is based on the foreground setting and is chosen automatically. 236 MULTI: Editing Files and Configuring the IDE

Colors Configuration Options Debugger Colors Controls how certain elements are displayed in the Debugger. The colors you can customize are: Assembly (Assembly color) [default is #0000FF] Color of interlaced assembly code. Break Dot (BDotColor color) [default is #00CD00] Color of break dots, which indicate locations where breakpoints may be set. Status (BreakColor color) [default is #FF0000] Color of the program status and debug server messages ( STOPPED, RUNNING, etc.). Context Arrow (PointerColor color) [default is #0000FF] Color of the context arrow, which indicates what context to use for commands in the Debugger. File line numbers Selected (UseFileRelLineBG true) [default ] Enables file relative line numbers. Cleared (UseFileRelLineBG false) Disables file relative line numbers. Color Field (FileRelLineBG color [default is #FFFFFF] Color of the background behind the column of file relative line numbers in the source pane. Procedure line numbers Selected (UseProcRelLineBG true) [default ] Enables procedure relative line numbers. Cleared (UseProcRelLineBG false) Disables procedure relative line numbers. ProcRelLineBG color [default is #e4e4e4] Color of the background behind the column of procedure relative line numbers in the source pane. Syntax Coloring Permitted settings for this option are: Selected (ColorSyntax On) [default] Source code will be syntax colored. based upon the Syntax Color Settings listed below. Cleared (ColorSyntax Off) Source code will not be syntax colored. Green Hills Software, Inc. 237

9. Configuration Options Syntax Color Settings Colors may be set for the following items: Comments (Comment color) [default is #008000] Keywords (Keyword color) [default is #0000FF] Dead Code (DeadCode color) [default is #808080] Color of code enclosed in an #if 0... #endif block. Numbers (Number color) [default is #E000E0] Strings (String color) [default is #800000] Characters (Character color) [default is #C000C0] Customized (Customized color) [default is #008080] Color C++ commentsinc Permitted settings for this option are: Selected (CppCommentsInC On) [default] C++ style comments (//) will be syntax colored as comments in both C++ and C source files. Cleared (CppCommentsInC Off) C++ style comments will not be syntax colored as comments in C source files. More Color Options Opens the More Color Options dialog box which contains additional colors which can be configured. 238 MULTI: Editing Files and Configuring the IDE

Colors Configuration Options More Color Options Dialog Box To open this dialog box, click More Color Options Colors tab of the Options window. For more information about how to use configuration commands, see the introduction of Chapter 9, Configuration Options. Legacy Builder Colors Colors may be set for the following Builder items: NoBuild (NoBuild color) [default is #B00000] Program (Program color) [default is #900010] SubProject (SubProgram color) [default is #C80020] Source (Source color) [default is #00B010] Header (Header color) [default is #007010] Documentation (Documentation color) [default is #A0A0A0] Library Build (SingleLibrary color) [default is #000080] Object (Object color) [default is #000050] Library (Library color) [default is #004580] Script (Script color) [default is #808000] Other (Other color) [default is #808080] Connected targets Foreground color of the Connected targets list. The equivalent command for this setting is: StartedConnectionFG color [default is #008000] Diffview Colors Background color of the current selection in the Diff Viewer Foreground. The equivalent command for this setting is: DiffHighlight color [default is #e0ffd0] Color Chooser The Color Chooser is used to select and customize colors for any of MULTI s color options. To open the Color Chooser, double click any of the color boxes in the Colors tab of the Options window. Green Hills Software, Inc. 239

9. Configuration Options (Windows) The standard color chooser is used. For more information, see your Windows documentation. (Unix) The Color Chooser consists of a rectangle indicating the current color, three sliders to control the levels of red, green, and blue in the current color, and a number of preset basic colors: 1. To select one of the basic colors, click one of the colored boxes; or to create a color that is not available in the basic colors, use the color sliders or the text fields beneath them to form the color you want. 2. When you have found the color you want, click OK to replace the color; or if you do not want to use the new color, click Cancel to discard the change and close the Color Chooser. Deprecated Configuration Options The following configuration options are deprecated: BuilderPosition x_offsetxy_offset [p] [default is 0x0] Indicates the initial position of the Builder window from the upper left corner of the screen in x_offset characters and y_offset lines. To specify these offsets in pixels, append the letter p (such as 10x20p). This option is only useful when the Save window positions and sizes is Cleared(RememberWindowPositions Off ). For more information, see Save window positions and sizes in General Options Tab on page 183. DontUseVC On Off [default is Off] SettoOn disable version control, and On to enable version control. This option has been superseded by the VersionControlChoice option. LowBandWidthToVC [true false] Used in the legacy Builder. true The Builder will not request the checkout status from the version control system for each file. false The Builder will request checkout status for each file. 240 MULTI: Editing Files and Configuring the IDE

Deprecated Configuration Options MinWindowSize widthxheight [p] [default is 51x6] Specifies the minimum initial size of a non-view window, such as an I/O, Target, or Monitor window, in width characters and height lines. To specify these sizes in pixels, append the letter p to the value. If left unspecified, the Debugger will auto-size windows appropriately. This option is only useful when the Save window positions and sizes is Cleared(RememberWindowPositions Off ). For more information, see Save window positions and sizes in General Options Tab on page 183. MaxWindowSize widthxheight [p] [default is 128x20] Specifies the maximum initial size of a non-view window in width characters and height lines. To specify these sizes in pixels, append the letter p to the value. This option is only useful when the Save window positions and sizes is Cleared(RememberWindowPositions Off ). For more information, see Save window positions and sizes in General Options Tab on page 183. Green Hills Software, Inc. 241

9. Configuration Options 242 MULTI: Editing Files and Configuring the IDE

Part IV License Administration

Chapter 10 Licensing Overview This Chapter Contains: License Types Licensing Procedures Using a Dongle

10. Licensing Overview Green Hills products require software licenses to run, and use software to manage the licenses. The software available for administering Green Hills licenses includes: Green Hills License Manager (GHSlm) for more information see Chapter 13, GHSlm: Green Hills License Manager. Elan License Manager (ElanLM) for more information, see Chapter 14, ElanLM: Legacy License Manager. We recommend that you use GHSlm, but current tools also support ElanLM for compatibility with legacy installations. If you are a first time user, or have obtained new licenses for MULTI 4.0, you should use GHSlm. If you are an existing user with licenses for MULTI 3.x or earlier, and have ElanLM installed, you can continue to use these licenses and ElanLM. Regardless of the software used, in MULTI 4.0 most license administration tasks are performed with the MULTI License Administrator interface. MULTI License Administrator is described in detail in Chapter 11, License Administration with the MULTI License Administrator. License Types To maximize flexibility, the Green Hills tools support several different licensing models. They are: Computer-locked licenses This model is only supported on Windows hosts. The license allows an unlimited number of specific MULTI components to run on one particular PC. The license is locked to a specific Windows PC and cannot be moved. Dongle-locked licenses This model is only supported on Windows hosts. This type of license requires a dongle, which is a hardware security device that is attached to the PC via the USB or parallel port. The license allows an unlimited number of specific MULTI components to run on a Windows PC where a particular dongle is installed. For more information, see Using a Dongle on page 254. Floating licenses Licenses are managed by a license server, which allows some number of users to run MULTI components at the same time. The number of users allowed is determined by the number of seats that have 246 MULTI: Editing Files and Configuring the IDE

License Types been purchased. A single user may consume more than one license if they have more than one copy of MULTI running. Named-user licenses The licenses are managed by a GHSlm license server, which allows a number of distinct users to run MULTI components at the same time. The number of users allowed is determined by the number of seats that have been purchased. A single user will only consume a single license, even if they have more than one copy of MULTI running. This model is only supported with the Green Hills License Manager Device. Computer-locked and dongle-locked licenses are not installed on the network. They only work on Windows PCs, and use separate licenses for each machine or dongle. Floating licenses and named-user licenses are installed on a network and use a license server to keep track of the licenses. About Named User Licensing and Administration Most Green Hills users will have what is known as a named user license for the software. A named user license provides a specific user with the right to invoke/use a program an unlimited number of times simultaneously from the desktop. This is unlike the traditional floating license, which provides the user with the right to invoke/use a program, and when that use is finished another invocation can reuse the license. A good example of the advantage of using named user licenses is when a user is launching a parallel build that invokes three compilations simultaneously. In a floating license environment, three floating licenses would be needed. With a named user license, only a single license is consumed for the build. The other main difference between floating and named user licensing is that the named user license can only be used by a single, unique user, whereas a floating license can float among users. Traditionally, users tend to think of Green Hills software tools as being offered in seats, where the number of seats of the tools matches the number of users of the tools. The named user licensing scheme implements this concept, providing each developer with the software tools available. If a group has ten users of a Green Hills product, then that group must have ten seats or ten named user licenses for that product. A named user license provides a unique user with the right to use a product, but the choice of which user this license is assigned to is the decision of the user s Green Hills Software, Inc. 247

10. Licensing Overview organization (system administrator, manager, etc.). The list of valid users for a particular product is managed through the glicusers utility for host-based license servers (see Managing User Lists with glicusers on page 304), or through the Change User Lists page on the License Manager Device web interface (see Change User Lists on page 284). Note Named-user licensing is only supported with GHSlm license servers. Green Hills License Manager Device Note The Green Hills License Manager Device is only available in special situations. Please contact your sales team or Green Hills technical support if you would like to discuss using this device in your environment. The Green Hills License Manager Device is a stand-alone device that connects to the network and provides access to floating or named-user licenses. It supports DHCP, and is very easy to install and maintain. For information about installation and configuration of a Green Hills License Manager Device, see Chapter 12, Green Hills License Manager Device. Normally, License Manager Devices are shipped with licenses preinstalled, so they are ready for immediate use. Additional licenses can be added later using MULTI License Administrator (see Chapter 11, License Administration with the MULTI License Administrator ). Because of the security and stability afforded by the Green Hills License Manager Device, it offers features not available with other host-based license servers: Redundant servers You can install several devices and configure them as a license server cluster to provide load balancing and fail-safe operation. Clients can communicate with any member of the cluster without losing functionality, and the loss of any member will not interrupt the cluster s ability to serve licenses. The cluster will only cease to function if the majority of servers become unavailable. For more information, see Redundant License Manager Devices on page 294. Leased licenses (or commuter licenses) Users can check out a license from the license manager and have this license converted into a temporary 248 MULTI: Editing Files and Configuring the IDE

Licensing Procedures commuter license for their laptop. Commuter licenses allow licensed users to take full advantage of the software without purchasing separate licenses for this purpose. This can be useful for demonstrations, on-site visits, and other situations where the user is working remotely and a direct connection to the corporate intranet is not available. For more information, see Obtain Commuter Nodelock Lease on page 287. License caching The client-side tools can cache their licenses on the client, to improve responsiveness and decrease network load. Web-based administration The License Manager Device includes a web server. You can use the License Manager s web interface to obtain up-to-date information about the device s status, including the number of licenses installed, licenses in use, and licenses available. You can also use the web interface to configure the device, including changing the list of named users, setting up address filters, and setting logging options. For more information, see License Manager Device Web Interface on page 277. Because it is based on proprietary hardware, the License Manager Device does not support the use of ElanLM software and can only be used with clients that support GHSlm licensing software. Licensing Procedures Before you can use the Green Hills tools, you need to have appropriate software licenses installed and available. When you start MULTI, it checks for a valid license. If it cannot obtain a license, MULTI License Administrator automatically starts with a special dialog box that lists the license managers detected and asks whether you would like to configure MULTI to use these servers. If you run the other tools when no licenses are available, they will fail with an error message. Most of these problems can be resolved using MULTI License Administrator (see Chapter 11, License Administration with the MULTI License Administrator ). Green Hills Software, Inc. 249

10. Licensing Overview In general, the following procedures must be completed before you can use the Green Hills products: Install Software Request License Install License These steps are not necessary if you are using existing licenses. 1. Installing Software Software installation is covered in MULTI: Getting Started. 2. Requesting Licenses License requests are performed with the MULTI Licensing Wizard, which is accessed through the MULTI License Administrator window. Please see Chapter 11, License Administration with the MULTI License Administrator for more information. 3. Installing Licenses Licenses are installed with the MULTI Licensing Wizard. Please see Chapter 11, License Administration with the MULTI License Administrator for more information. Note Because license manager devices are often shipped with licenses preinstalled, you usually do not need to request or install licenses. License installation is performed by installing the device as described in Chapter 12, Green Hills License Manager Device. Important Considerations for License Servers The following should be taken into consideration when selecting a machine to host the license server: The license server operates only if a valid license has been installed. License servers using the ElanLM software can provide licenses to any client application that supports ElanLM. License servers running the GHSlm software License Manager Devices can provide licenses to any client that supports GHSlm. In a Windows environment, the GHSlm license server can only be run on machines with an NT based operating systems installed (such as Windows NT, 2000, and XP). Use of Windows 9x/ME machines as GHSlm license 250 MULTI: Editing Files and Configuring the IDE

Licensing Procedures servers is not supported, however GHSlm can be used on Windows 9x/ME clients. License servers using a particular software technology (such as ElanLM) cannot provide licenses to clients that do not support that software. For example, Green Hills tools running on Linux cannot use licenses installed on an ElanLM license server. Floating licenses must be installed on the host computer or device for which the license was granted that is, on the machine hosting the license server. If you are using ElanLM licenses, do not install floating licenses on the client machines. If you are using GHSlm licenses, install floating licenses on the client machines as well as on the server. For host-based floating licenses, you must install the license server software on an easily accessible network host machine that is up and running when developers need licenses. The architecture of floating licenses requires that TCP/IP is installed and configured correctly on both the server machine and all the client machines. In a Windows environment, avoid using dial-up networking on the license server s host computer. Doing so causes Windows to change its default IP address. The license server will detect this address change and may stop granting license requests for security reasons. With named-user licensing on host-based servers, the license server must work from a list of valid users. This list can be created and managed with the glicusers utility. See Managing User Lists with glicusers on page 304 for more information. Green Hills Software, Inc. 251

10. Licensing Overview License Server Compatibility The following table describes the license management software supported by recent versions of the Green Hills tools: Host MULTI Release Licensing Software Windows (NT/2000/XP) Solaris HP-UX MULTI 4.x GHSlm (see Chapter 13, GHSlm: Green Hills License Manager ) or ElanLM (see Chapter 14, ElanLM: Legacy License Manager ) MULTI1.89toMULTI3.x ElanLM (see Chapter 14, ElanLM: Legacy License Manager ) Windows (98/ME) MULTI1.89toMULTI4.x ElanLM (see Chapter 14, ElanLM: Legacy License Manager ) GHSlm can only be used with MULTI 4.0 and only for client-side support. Linux MULTI 3.x and higher GHSlm (see Chapter 13, GHSlm: Green Hills License Manager ) Server Codes Licenses are locked to a server code, which defines where the licenses can be installed. When requesting licenses, it is important that you provide the correct server code from the correct machine. The following table provides tips for using the correct code when requesting licenses from Green Hills Software: Computer-locked Open MULTI License Administrator on the machine where the products will be run. The Server Code is displayed at the top of the main window. 252 MULTI: Editing Files and Configuring the IDE

Licensing Procedures Dongle-locked Open MULTI License Administrator on the machine where the dongle is currently installed. The Server Code is displayed at the top of the main window. You can verify that the dongle is detected by comparing the server code to the same machine s server code when the dongle is not installed. If those codes match, see Troubleshooting Dongle Problems on page 255. Named-user (with license manager device) Use the server code for the license manager device that will act as the license server for the licenses. Open MULTI License Administrator, locate the device in the list of license managers, then double-click the device entry to open the Configure dialog box. The server code appears in the LM Server Code field (see Configure Dialog Box on page 268) Named-user (host-based license server) Open MULTI License Administrator on the machine that will act as the license server (see Important Considerations for License Servers on page 250). The Server Code is displayed at the top of the main window. Floating (with license manager device) Use the server code for the license manager device that will act as the license server for the licenses. Open MULTI License Administrator, locate the device in the list of license managers, then double-click the device entry to open the Configure dialog box. The server code appears in the LM Server Code field (see Configure Dialog Box on page 268). Floating (host-based license server) Open MULTI License Administrator on the machine that will act as the license server (see Important Considerations for License Servers on page 250). The Server Code is displayed at the top of the main window. Depending on your licensing platform and software, there may be additional steps. Please refer to the appropriate chapter for detailed instructions on installing and using your specific type of license. Green Hills License Manager (GHSlm) See Chapter 13, GHSlm: Green Hills License Manager. Elan License Manager (ElanLM) See Chapter 14, ElanLM: Legacy License Manager. Green Hills Software, Inc. 253

10. Licensing Overview Green Hills License Manager Device See Chapter 12, Green Hills License Manager Device. Using a Dongle A dongle is a hardware security device that is attached to the PC via the USB or parallel port to verify to the software that the computer is properly licensed. Dongle-locked licenses allow an unlimited number of specific MULTI components to run on a Windows PC where a particular dongle is installed. Use of dongles is only supported on Windows hosts. There are two types of dongles currently used with Green Hills Software products: dongles that connect to the parallel port, and those that connect to a USB port. Dongle Installation Use the following instructions to install a dongle: 1. In order to use dongle-locked licenses, you must install the dongle-driver software. To install dongle-driver software: a. Insert the Green Hills CD. If the multimedia screen appears, close it. b. Use Windows Explorer to explore the CD drive. c. Open the licensing folder. d. Open the dongle_drivers folder. Or, if you use ElanLM legacy license manager software, you can select the legacy folder and install dongle-drivers while you install the software (see Chapter 14, ElanLM: Legacy License Manager for more information). e. The dongle_drivers folder contains a setup executable that launches the dongle-driver installation Wizard. Double-click this file to launch the Wizard. 2. After installing the software, insert the dongle into the parallel or USB port. 254 MULTI: Editing Files and Configuring the IDE

Using a Dongle 3. Open MULTI License Administrator. Use the items in the License menu to request and install licenses as needed. Troubleshooting Dongle Problems Most dongle problems are due to the following issues: Dongle drivers are outdated or not installed correctly You can use the Sentinel Medic program from Rainbow Technologies to diagnose these types of problems. Rainbow Technologies is the manufacturer of the dongles and dongle drivers used by Green Hills products. We recommend downloading the latest version of the drivers and the Sentinel Medic application from the Rainbow Technologies (http://www.rainbow.com) web site. There is more than one dongle installed Green Hills tools only recognize one dongle at a time. Dongles from other vendors are not visible to our tools, so they should not pose a problem. There is a conflict with some other device Some devices, such as printers from certain manufacturers, will attempt to take over the parallel port and exclude other devices from using it. This can cause Green Hills tools to fail to recognize an attached dongle. You may be able to use a dongle that uses a different port. Please contact Green Hills technical support for assistance. There are incompatibilities with other devices or certain hardware Rainbow Technologies maintains a web site with lists of known incompatibilities, accessible from their main corporate web site (http://www.rainbow.com). Other Dongle Problems Rainbow Technologies maintains dongle troubleshooting information on their web site (http://www.rainbow.com). If you have further questions, please contact Green Hills technical support. Green Hills Software, Inc. 255

10. Licensing Overview 256 MULTI: Editing Files and Configuring the IDE

License Administration with the MULTI License Administrator Chapter 11 This Chapter Contains: Opening the MULTI License Administrator Install or Configure License Server Requesting Licenses The MULTI License Administrator Window Configure Dialog Box Environment Variables

11. License Administration with the MULTI License Administrator The MULTI License Administrator is a graphical interface used to perform license administration tasks, and configure license manager servers and devices. When you first start MULTI, it checks for a valid MULTI license. If it cannot obtain a license, the MULTI License Administrator starts with a special dialog box that lists the license servers detected on the network, and asks whether you would like to configure MULTI to use these servers. If no license servers are detected, the MULTI Licensing Wizard will automatically open (see The MULTI Licensing Wizard on page 258). You can use this Wizard to install or configure a license server, or to diagnose license problems. Opening the MULTI License Administrator The License Manager Administration interface can be opened from the MULTI Launcher. To open the MULTI License Administrator from the Launcher, select Utilities License Administrator. The MULTI License Administrator is a stand-alone program that can also be launched from a command line: For UNIX, the executable is mlmadmin. For Windows, the executable is mlmadmin.exe. The MULTI Licensing Wizard When the MULTI License Administrator is initially launched, it opens with the MULTI Licensing Wizard. This Wizard provides assistance in performing tasks such as requesting and installing licenses, configuring license servers, and license administration. 258 MULTI: Editing Files and Configuring the IDE

Opening the MULTI License Administrator The items available in the MULTI Licensing Wizard are: Request a license from Green Hills Select this item to request a license by email, fax, mail, or online. For more information, see Requesting Licenses on page 262. Install a license which I already have For more information, see Install License File in License Menu on page 265. Install or configure license server software on this machine Formore information, see Install or Configure License Server on page 260. Check for new licenses For more information, see Configuration Tools Menu on page 269. Obtain a commuter lease license from a local license server For more information, see Obtain Commuter Nodelock Lease on page 287 in Chapter 12, Green Hills License Manager Device. Perform license administration tasks Select this item to open the main MULTI License Administrator window. For more information, see The MULTI License Administrator Window on page 263 Verify license configuration Select this item to verify that the computer is properly configured to use a particular license type. Green Hills Software, Inc. 259

11. License Administration with the MULTI License Administrator Note By selecting the Take me straight to the administration panel when launching this utility box, you can skip this Wizard when you open the MULTI License Administrator in the future. If you need to access this Wizard again, you can open it from the MULTI License Administrator by selecting File Licensing Wizard. If you have installation or configuration problems that cannot be resolved through the Wizard, click the Generate Support Request button to open a window that will automatically be populated with diagnostic information. You can cut and paste this information into an email and send it to Green Hills Technical Support (support@ghs.com). Install or Configure License Server Once you start the MULTI License Administrator, you can install or configure license server software. Note This information does not apply to License Manager Devices. For information about installation and configuration of devices, see Chapter 12, Green Hills License Manager Device. 1. The MULTI License Administrator should open with Welcome screen of the MULTI Licensing Wizard. IftheMULTI License Administrator opens without the Wizard, select File Licensing Wizard. 2. On the Welcome screen, select Install or Configure license server software on this machine. 3. Select one of the following licensing options: Install a Green Hills license server on this machine Installs GHSlm server software on the machine. Configure the Green Hills license server on this machine Opens the Server Settings dialog box, which you can use to configure the GHSlm license server. See Server Settings Dialog Box on page 261 for more information. Install a Legacy License Server (Elan) on this machine Installs ElanLM Legacy license servers software on the machine. Although ElanLM options are available to support Legacy installations, it is not recommended. GHSlm should be used for all new installations. 260 MULTI: Editing Files and Configuring the IDE

Install or Configure License Server Configure the Legacy License Server (Elan) on this machine On Windows, this selection will open the ElanLM Control Panel (see ElanLM License Server Startup for Windows on page 315). On UNIX, this will display text that provides instructions about configuring the server. Note Configuration settings will not be applied if the Services applet is open in the Windows Control Panel. Server Settings Dialog Box The Server Settings dialog box opens when you select Configure the Green Hills license server on this machine from the MULTI Licensing Wizard or License Configure Server on Local Machine in the MULTI License Administrator. This dialog box is used to configure the GHSlm license server and contains the following fields. Log File Enter the absolute path to the file where logging information should be stored. TCP Port Enter the TCP port on which the server listens for license requests. The default is 2009. IP Addr Filter Enter the dotted decimal or 32-bit value hex value indicating an IP address filter which the server will use to deny requests from unauthorized IP addresses. Log Verbosity Enter a number to indicate the verbosity of the logging messages. The value 1 indicates normal messages. Higher numbers can be specified to provide more logging information. Debug Level Enter a number to indicate the verbosity of the debugging messages in the log. The value 0 specifies no messages. Higher numbers can be specified to provide more debugging information. Green Hills Software, Inc. 261

11. License Administration with the MULTI License Administrator Start/Stop Windows only Click to start or stop the license server. Start/Stop does not function correctly if the Windows Cotnrol Panel Services applet is open. Requesting Licenses License requests can be made through the MULTI Licensing Wizard, orusing the Licensing menu in the MULTI License Administrator. 1. If you request licenses through the MULTI Licensing Wizard, you are offered the choice of generating your license request online, or creating a license request that you can email, fax or mail to Green Hills Software. 2. If you use the Licensing menu in the MULTI License Administrator, or choose to email, fax, or mail your license request from the MULTI Licensing Wizard, alicense Request Generator form will open for you to complete. 3. Once you complete the form you will be given the option to save the license request to a file, email the license request to Green Hills Software, or print the license request. Customers in the Americas, Australia, and New Zealand can send license requests by: Email: license@ghs.com Fax: (805) 965-6343 (Attn: Licensing) License requests for Ada/Safety-critical products are handled by the safety-critical team. These requests should be sent by: Email: adalicense@ghs.com Fax: (727) 781-3915 Requests from the rest of the world are handled from our European support center. These requests should be sent by: Email: license@ghs.nl Fax: +31 (0)33 4613640 262 MULTI: Editing Files and Configuring the IDE

The MULTI License Administrator Window 4. License requests will be processed as quickly as possible within business hours. If you have questions, call Green Hills toll free support line 877-GHS-TECH (877-447-8324) in the US, or +1 805-965-0124 worldwide. The MULTI License Administrator Window The MULTI License Administrator window contains two parts. The top half of the window provides information about the host computer and the bottom half provides information about license managers on the network. There are three types of license managers that may appear in the list: Device License manager devices. For more information, see Chapter 12, Green Hills License Manager Device. Native Host-based license managers. Legacy Legacy license servers (not listed on Linux). For more information, see Chapter 14, ElanLM: Legacy License Manager. Green Hills Software, Inc. 263

11. License Administration with the MULTI License Administrator The MULTI License Administrator window contains the following fields: Server Code Displays the server code of the computer or dongle running the MULTI License Administrator. Legacy Server Code Displays the server code of the computer or dongle running the MULTI License Administrator in the style used by Legacy license servers. GHS_LMHOST Displays the value of the GHS_LMHOST environment variable, which determines which license managers are used. GHS_LMPORT Displays the value of the GHS_LMPORT environment variable. This value must be set when the license manager has been configured to use a TCP port other than the default of 2009. The TCP port value is used by Green Hills tools to request licenses from a license manager. In order for Green Hills tools to work with a server configured for an alternate TCP port, the GHS_LMPORT environment variable must be set on the client machine to the matching port number. Available License Managers Lists the IP Address, Host Name, Type, and Description (if applicable) for all available license managers detected on the network. If the list is blank, click Refresh. Refresh Click this button to refresh the list of license managers. The license administration program will perform a broadcast to find available license managers on the network. Configure Select a license manager device from the list, then click Configure to display the configuration dialog box (see Configure Dialog Box on page 268). You can only configure license manager devices with this tool. Use Selected LM Click to configure your environment to use the selected license server. Specify Servers Click to open a dialog box which you can use to specify a comma-separated list of servers which the MULTI License Administrator will attempt to contact the next time you click Refresh. This setting is necessary if the server cannot be reached by broadcast. 264 MULTI: Editing Files and Configuring the IDE

The MULTI License Administrator Window File Menu The MULTI License Administrator window File menu contains the following options: Licensing Wizard Launches the MULTI Licensing Wizard. For more information, see The MULTI Licensing Wizard on page 258. Close Closes the MULTI License Administrator. License Menu The MULTI License Administrator window contains the License menu, which provides access to the following options: Install License File Select this item to install a new license file on the current computer. The Choose License File dialog box opens. Select a license file, then click Install. Request Evaluation License Connects you to the Green Hills Evaluation License web site, where you can complete an Evaluation License Request online. New evaluation license requests are often fulfilled automatically 24 hours a day. For security reasons, the evaluation license generator attempts to prevent automatic handling of licenses to free or anonymous email accounts. If you are requesting an evaluation licenses outside of normal business hours, you should avoid using an email address from Yahoo, Hotmail, AOL, or other similar services. Request New License Select this item to open the License Request Generator. Complete the form, then click Send to complete the license request, or save the request to a file and email the file as an attachment to Green Hills Licensing (license@ghs.com). For more information, see Requesting Licenses on page 262. Diagnose License Problems Select this item to run a utility to help identify common license problems. The utility will go through the process of obtaining a license, then output verbose information about the internals of the license request attempt. This output will often elucidate the cause of licensing problems. Green Hills Software, Inc. 265

11. License Administration with the MULTI License Administrator Configure Server on Local Machine Select this item to open the Server Settings dialog box (see Server Settings Dialog Box on page 261). Legacy Tools Menu The Legacy Tools menu provides access to the following options: Note The Legacy Tools menu is not available on Linux. View Available Licenses Select this menu item to view a list of legacy licenses available from servers in the GHS_LMHOST environment variable. This menu item uses the legacy licstat command line tool. View Licenses In Use View a list of legacy licenses in use from servers in the GHS_LMHOST environment variable. This menu item uses the legacy licstat command line tool. Generate Report Generate a license report from a log file on disk. This menu item uses the legacy wlmrpt command line tool on Windows, or elmrpt on UNIX (see License Manager Reports with WlmRpt on page 321 or License Manager Reports with elmrpt on page 334). Shortcut Menus When you right-click an Available License Manager entry, a context-sensitive shortcut menu will open. The menu items available will differ depending on the type of license manager. If the selected license manager is a license manager device, the shortcut menu will contain the following items: Open Browser-based Configuration Opens the device s web interface, which gives you browser-based access to configuration settings. For more information, see License Manager Device Web Interface on page 277. This item is the same as selecting Tools Open Browser Configuration in the Configure dialog box (see Configuration Tools Menu on page 269). 266 MULTI: Editing Files and Configuring the IDE

The MULTI License Administrator Window Check for New License Select this item to contact the Green Hills Software web site and search for an updated license for this device. If one is found, a dialog box will open with the message: A new license is available. Would you like to save the license file, or upload it to the device (this will restart the license manager)? and the following buttons below: Save, Upload, Save and Upload, andcancel. This item is the same as selecting Tools Check for New License in the Configure dialog box (see Configuration Tools Menu on page 269). Generate Report Select this item to generate a report for this device from a log file on disk. Start Logging Select this item to start logging license manager activity. A File Chooser will open. Specify the log file, then click Save. The file you have specified will appear in the Log File field of the Configure dialog box. To change the log file, first Stop Logging, thenstart Logging and specify a new log file. This item is the same as selecting Logging Start Logging in the Configure dialog box (see Logging Menu on page 269). Stop Logging Select this item to stop the license manager activity log. This option is only available when logging is currently enabled (Start Logging has previously been selected). This item is the same as the Logging Stop Logging selection in the Configure dialog box (see Logging Menu on page 269). View Log Select this item to open the license log. This item is the same as selecting Logging View Log in the Configure dialog box (see Logging Menu on page 269). Green Hills Software, Inc. 267

11. License Administration with the MULTI License Administrator Legacy Shortcut Menu If the selected license manager is a legacy license server, the shortcut menu will contain the following items: View Available Licenses Select this item to view a list of licenses that the selected legacy server can grant. View Licenses In Use Select this item to view a list of licenses that the selected legacy server has granted. Configure Dialog Box The Configure dialog box displays configuration information about license manager devices. To open the Configure dialog box, select a device in the list click Configure, or double-click the device name. This dialog box is only available for license manager devices. The Configure dialog box displays the following information about the selected device: LM Server Code This hexadecimal number uniquely identifies the license server hardware. If new licenses are installed on the server or device, they are configured to run specifically on only this hardware, as identified by its unique hostid. When requesting new licenses, this hostid must be specified as part of the request. This number is displayed for reference purposes only; it cannot be changed by the user. Host Name The host name of license manager device. IP Address The IP address of the license manager device. Netmask The netmask used by the license manager device. Default Gateway The gateway used by the license manager device. 268 MULTI: Editing Files and Configuring the IDE

Configure Dialog Box Log File The filename and path of the log file for this device, if one exists. To set or change the log file, select Logging Start Logging (see Logging Menu on page 269). If logging has already been started, you must Stop Logging before you can set a new log file. Configuration Tools Menu The Configuration dialog box Tools menu contains the following items: Check for New License Select this item to contact the Green Hills Software web site and search for an updated license for this device. If one is found, a dialog box will open with the message: A new license is available. Would you like to save the license file, or upload it to the device (this will restart the license manager)? and the following buttons below: Save, Upload, Save and Upload, andcancel. Open Browser Configuration Opens the device s web interface, which gives you browser-based access to configuration settings. For more information, see License Manager Device Web Interface on page 277. Change Network Settings Opens a dialog box that you can use to change network settings for the IP Address, Netmask and Default Gateway. When done, click OK. Logging Menu The Configuration dialog box Logging menu contains the following items: Start Logging Select this item to start logging license manager activity. A File Chooser will open. Specify the log file, then click Save. The file you have specified will appear in the Log File field. To change the log file, first Stop Logging, thenstart Logging and specify a new log file. Green Hills Software, Inc. 269

11. License Administration with the MULTI License Administrator Stop Logging Select this item to stop the license manager activity log. This option is only available when logging is currently enabled (Start Logging has previously been selected). View Log Select this item to open the license log. Click Update in the log view window to refresh the log display. Environment Variables Certain license administration settings can be controlled by way of environment variables. Note To set environment variables on Windows XP/2000/NT: 1. From the desktop, right-click My Computer and select Properties. 2. From the Properties window, click the Advanced tab, then click Environment Variables. 3. The Environment Variables dialog box will open. In System Variables, find the variable you need to modify and click Edit, or click New to set a new variable. For Windows 98/ME, add the environment variable to the AUTOEXEC.BAT file. Separate multiple server names with a comma, a colon, or a semicolon. The following environment variables can be used to control your connection to GHSlm or ElanLM license managers: GHS_LM_CONNECTION_RETRY Specifies the number of times that the client will attempt to connect to the license server before quitting. By default, MULTI will attempt to obtain a license for a few seconds before quitting. See also GHS_LM_CONNECTION_RETRY_TIME, below. GHS_LM_CONNECTION_RETRY_TIME Specifies the period of time to elapse between attempts to connect to the server. The default value is 2. See also GHS_LM_CONNECTION_RETRY, above. 270 MULTI: Editing Files and Configuring the IDE

Environment Variables GHS_LMDEBUG Specifies the level of debugging information to be generated. This variable can be set to one of the following values: 5 Verbose 11 Maximum GHS_LMHOST Specifies the names of your license servers and the method by which licenses should be requested. This variable can be set in one of the following ways: Search In Order lm1[,lm2 ] Search Randomly #lm1[,lm2 ] For Windows 2000 clients using ElanLM, the host name or IP address of the license servers must be preceded by an @ symbol. For example, if the license server s name is global_serv, theghs_lmhost environment variable must be set to @global_serv. GHS_LMINFO_DIR Specifies a directory in which to create the.lmi file, (to contain debugging output) if GHS_LMDEBUG or GHS_LMSHOW is set. GHS_LMREFRESH Specifies in seconds how frequently the client must reestablish contact with the server to refresh its license. This variable may be set to any integer between 1 and 150. The default setting is 45. GHS_LMSHOW Enables verbose output. GHS_LMWHICH Specifies the type of license that the client will attempt to obtain first. This variable can be set to one of the following values: ghs [default] GHSlm license server. elan The legacy ElanLM license server. Green Hills Software, Inc. 271

11. License Administration with the MULTI License Administrator GHSlm Environment Variables The following environment variables can only be used to control your connection to the new GHSlm license manager: GHS_LMDELAY Specifies the maximum acceptable time to elapse (in seconds) before receiving a response from a server once a connection has been successfully established. This number should account for the overall transit speed of Ethernet communication on your network. The default is 5. GHS_LM_EXPECTED_MAC Specifies the MAC address to use when validating licenses against the Ethernet hardware.this can be used to tell the tools to (for example) not use an Ethernet adapter that is commonly removed from the system. The specified value must match the Ethernet address of an installed adapter. The default is to use the first adapter in the system. GHS_LMPORT Specifies the port on which license requests are sent. The default is to use port 2009. For this variable to take effect, you must also change the port on your server. In the MULTI License Administrator, you can set this by selecting License Configure Server on Local Machine and specifying a value for TCP Port (see Server Settings Dialog Box on page 261). ElanLM Environment Variables The following environment variables can only be used to control your connection to the ElanLM legacy license manager: Note On UNIX, when a client requests a license, but none are available on the server, the client either returns an error to the user or enters the license server s queue to wait until a license is available. In general, interactive applications (that is, MULTI, debug servers, simulators) do not queue for a license, but non-interactive applications (that is, the compilers) do queue for licenses. The queuing mechanism has several parameters that affect its behavior, most of which can be controlled by using environment variables. 272 MULTI: Editing Files and Configuring the IDE

Environment Variables GHS_LMQ_GIVEUP Specifies the number of seconds to spend in the queue waiting for a license before reporting that no licenses are available and exiting with an error. The default value is 1200 (20 minutes). If this variable is set to 0, the client will not enter the queue if a license is not granted immediately, the application exits with an error message. A value of -1 instructs the client to continue to wait until a license is available. GHS_LMQ_POLL Determines the base rate (in seconds) of how often the application polls the license server for a license. Use this base rate in conjunction with the GHS_LMQ_METHOD environment variable (described below). If not specified, the default poll base rate is 5 seconds. GHS_LMQ_METHOD Use in conjunction with GHS_LMQ_POLL to provide control of how frequently the application polls the license server. This automatically prevents the application from wasting resources by continuously polling, which increases network traffic and consumes other related resources. This variable can be set to one of the following values: 0 constant (poll every 5 seconds). 1 [default] double each time (wait for 5 seconds, then wait 10 seconds, then 20, etc.) 2 increases linearly (wait for 5 seconds, then wait 10 seconds, then 15, then 20, etc.) Green Hills Software, Inc. 273

11. License Administration with the MULTI License Administrator 274 MULTI: Editing Files and Configuring the IDE

Chapter 12 Green Hills License Manager Device This Chapter Contains: Connecting the License Manager Device to the Network License Manager Device Web Interface Client Configuration Redundant License Manager Devices

12. Green Hills License Manager Device Green Hills license manager software manages the use of Green Hills Software licensed products on the network. License manager software can run natively on a PC or UNIX workstation, or on a Green Hills License Manager Device (LMD). The Green Hills license manager device is a physical device that is connected to the network to serve license requests. The use of a license manager device makes it easier to use Green Hills software. Typically, the device is included as part of the delivery of Green Hills product with licenses preinstalled, so the software can be used as soon as the device is connected to the network. Traditional host-based license servers require installation and configuration of licenses, which costs time in the critical starting point of a project when developers need to get up and running quickly. In addition, if a host computer that is used as a license server is replaced, the license manager software has to be moved to the new computer, and the licenses transferred. A dedicated license manager device, eliminates the need for these license transfers. This chapter provides information that will be useful primarily to system administrators who are administering the Green Hills license manager device. End users may also find some of this information valuable, particularly the status reporting available from the license manager device s web interface. Topics covered include: Configuration of the license manager device Logging of license manager communication License manager status reporting Upgrading the license manager (to take on a new set of licenses, for example) Connecting the License Manager Device to the Network The license manager device must be connected to the network, powered on, and have its network configuration established properly in order for the installed licenses to be usable. The license manager device is factory configured to use DHCP to obtain its IP address and network configuration. If the license manager device is unable to obtain its network configuration from a DHCP server within five seconds of power up, then it uses the following private class C address: 192.168.1.2 276 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface The IP address of the license manager device can also be set with MULTI License Administrator, the host-based license administration interface (see Accessing MULTI License Administrator on page 277). Accessing MULTI License Administrator MULTI License Administrator is a stand-alone program that you can use for administration and configuration of user licenses. MULTI License Administrator can be opened from the Launcher bar by selecting Utilities License Administrator. MULTI License Administrator can also be launched from a command line: UNIX The executable is mlmadmin. Windows The executable is mlmadmin.exe. Since the device is not reachable with a standard TCP/IP connection until the network configuration has been established properly for your network, this program uses network broadcasts (address 255.255.255.255) to communicate with the license manager device. License Manager Device Web Interface The license manager device contains a web server that provides a convenient and useful set of web pages for interacting with the license manager. Once the device has been connected to the network and its network configuration has been established, a web browser can be used to access the web interface. The URL to access the web page through a browser is simply the IP address of the device. For example, if the IP address of the device is 192.168.100.200, use the following browser URL: http://192.168.100.200 The web interface is divided into four main sections as seen in the main selection bar: Program see Status Page on page 278. Configure see Configuration Page on page 281. License see License Page on page 286. Green Hills Software, Inc. 277

12. Green Hills License Manager Device Help see Help Page on page 291. Status Page The Status page is the default web page that is displayed when the browser connects to the license manager device. This page automatically refreshes every ten seconds. If the license manager is not running, then the page will display: Green Hills License Manager: OFF Otherwise, the heading will be: Green Hills License Manager: ON and a table listing all licensed products will be displayed as shown below: This table contains the following columns (see the pages indicated for more information): Program on page 279. Licenses in Use on page 279. High Water Mark on page 280. Maximum Licenses onpage280. 278 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface Program This is the name of the licensed executable, such as multi (MULTI Development Environment) or ecomppc (PowerPC compiler). In some cases, the license corresponds to a feature that does not map to a single executable, for example timemachine. Sometimes, instead of an ASCII name, a number will display in this column with the link (name?) next to it. The number is the product code, and it indicates that the license manager has a license for a program that was created after the license manager device was installed. As a result, the program name is not in the device s name database. To create a product name association for this code, click (name?). A form will open which you can use to assign an executable name to correspond to the product code. This assignment is not required for normal use of managed licenses, however it is necessary if a commuter nodelock lease will be required for the product (see Obtain Commuter Nodelock Lease on page 287). The name-to-code correspondence entries are stored in volatile memory. If the device is power cycled, the name-to-code correspondence must be reentered. Licenses in Use This is the number of licenses for the corresponding program that are currently checked out or in use. If the value matches the number of Maximum Licenses, no more licenses for the product are available for use. If Licenses in Use is greater than zero, the link (who?) appears next to the displayed value. 1. Click (who?) to display a list of how licenses for this product are being used. 2. A new page will open with an entry for each licensed user of the program. For example, if user dave has a license for MULTI, then dave will be one entry in the list. Leased licenses are also indicated. When redundant license manager devices are in use (see Redundant License Manager Devices on page 294), the number of entries in the list may not match the actual number of licenses in use. This is because when a device grants a license, the remaining redundant devices in the cluster will indicate the license Green Hills Software, Inc. 279

12. Green Hills License Manager Device as checked out, but only the device handling the user s request directly will have an entry in its list of Licenses in Use. High Water Mark This field indicates the maximum number of licenses of the program that have ever been checked out simultaneously since the device was powered on. This value is reset each time the device is powered on. This field is useful for determining the maximum usage that a particular program has over time. Most Green Hills products are licensed on a named user basis, with a license permanently checked out for a user the first time they use a product. As a result, the High Water Mark and Licenses in Use values are usually the same. Maximum Licenses This is the number of licenses installed for the corresponding product. For example, if the maximum licenses for MULTI is 10, the license manager will allow a maximum of ten users of MULTI. 280 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface Configuration Page The Configuration page presents a form for setting a variety of license manager options: This form contains the following fields, text and check boxes (see the pages indicated for more information): TCP Service Port on page 282. Log to Device-Resident File on page 282. IP Address Filter on page 282. Description on page 283. Verbose Logging on page 283. Debug Mode on page 283. Change User Lists on page 284. The configuration page also displays two important numbers for reference: LM host id on page 286. License Serial Number on page 286. Green Hills Software, Inc. 281

12. Green Hills License Manager Device In order for any of the configuration settings you enter on this page to take effect, the license manager device must be restarted. See License Page on page 286 for more information. TCP Service Port Green Hills software products obtain licenses from the license manager device using a TCP connection. By default, the device listens on TCP port 2009. This default can be changed by specifying a different port in this field. In addition to this server configuration, Green Hills software running on the host computer must be told to use the alternate port. This is done by setting the GHS_LMPORT environment variable to the same port number. Log to Device-Resident File Every significant licensing event, such as obtaining a license, releasing a license, etc, can be logged by the license manager. It is recommended that you use MULTI License Administrator to connect to the license manager device so the log can be generated on your host computer system. For more information, consult Chapter 11, License Administration with the MULTI License Administrator. The alternative is to log to a RAM-based file resident on the device itself, but since RAM on the device is limited, the history that can be logged in this manner is limited. To log to a local RAM file, enter a filename (no directory specifiers are allowed) in this field. IP Address Filter By default, the license manager device will respond to any licensing request it receives, regardless of the source of the request on the network. In some cases, the system administrator may desire to limit access to a device to a particular subset of the network topology. This can be accomplished by assigning a non-zero dotted decimal IP address in this field. The IPv4 address is made up of four octets, each separated by a decimal point. If an octet of the IP address filter address is equal to 0 (zero), then any value for 282 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface that octet in the client s IP address is allowed. If an octet of the IP address filter is non-zero, the corresponding octet of the source IP address must match exactly. For example, if the IP address filter is 192.168.100.0, then any client on the 192.168.100 subnet,suchas192.168.100.10, can access the license manager. Requests from other subnets, such as 192.168.101.10 will be denied. Description This is a human-readable string used to identify this device when MULTI License Administrator lists available license servers on the network. The description has no use other than identification. If a description is not used, the license manager device can still be uniquely identified by its IP address, Ethernet hardware address, or hostid. A description may be useful when a network has multiple license manager devices or servers in use, with each one serving a particular group of users. For example, you could set the description to The Tools Group or Firmware Development, or any description up to 64 characters in length. Verbose Logging When logging is enabled, only significant licensing events are recorded. Selecting this check box will cause the license manager to log more events, some of which may be useful in visualizing the activity of the license manager. Debug Mode When this option is selected, license manager logging is enabled and the log output is sent to the device s RS-232 serial port. The license manager log can be displayed by connecting a standard serial emulation program, such mterminal, at 9600 baud. (For information about mterminal, see MULTI: Debugging.) Generally, Debug Mode should not be required, since the log can be read over the network using MULTI License Administrator. Green Hills Software, Inc. 283

12. Green Hills License Manager Device Change Admin Password Some pages of the web interface are are password protected. To change the administrative password: Click Change Admin Password. You will be prompted to enter the current login name and password. (The login name is admin.) Enter a new password. Passwords are case sensitive. The minimum length is 6 characters, and the maximum is 16. Re-enter the new password to verify. Change User Lists When the license manager device is first powered up with named user licenses installed, no user list will be assigned. A licensed product can be used prior to the assignment of user lists. User lists will auto-populate, that is, the first users who use a licensed product will be automatically added to the user list for that product. Once a user is added to a user list, whether by auto-population or by manual setting, the only way to remove or change that entry is to use the Change User Lists web page. 1. Select Change User Lists to open the web page. 2. The operation of this web page is straightforward. The first column lists licensed Program names. The second column lists Licensed Users for the corresponding programs. 284 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface 3. Click an item in the Program column to display the User List page for that program: 4. This page displays the User detail for the specified program. One User field appears for each license available. 5. Type a user name into the text field to assign a valid user to the list. 6. After adding or changing users for this program, click OK. 7. The User List page will refresh and reopen. The changes you made will display in the table. 8. When you are finished making changes, click Save at the bottom of the page to save user list changes into permanent storage. Green Hills Software, Inc. 285

12. Green Hills License Manager Device Note For security purposes, a maximum of three changes (three clicks of Save) are allowed in any 24 hour period when the license device is running. If a fourth Save to the User List page is attempted, a message will display indicating that the maximum number of daily changes to the user list has been exceeded, and the user list changes will not be saved. 9. The license manager device must be restarted for new user lists to take effect. Select License Restart License Server to restart the device. LM host id This hexadecimal number uniquely identifies the license manager device hardware. If new licenses are installed on the license manager device, they are configured to run specifically on only this single device, as identified by its unique LM host id (see License Page on page 286 for information about uploading a new license key file). When requesting new licenses, this LM host id must be specified as part of the request. This number is displayed for reference purposes only; it cannot be changed by the user. License Serial Number This number uniquely describes the license key file that is currently installed on the license manager device. When requesting new licenses or communicating with Green Hills technical support regarding any license management topic, this serial number must be provided in order for Green Hills to cross reference the installed licenses with other information, such as the customer s name, purchase order number, etc. With this information, Green Hills can verify what types of licenses are installed and be better able to service your request. This number is displayed for reference purposes only; it cannot be changed by the user. License Page The License page contains the following links (see the pages indicated for more information): Obtain Commuter Nodelock Lease on page 287. 286 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface Show List of Licensing Files on page 289. Upload and Install License on page 290. Restart License Server on page 291. Obtain Commuter Nodelock Lease Many developers have an occasional requirement to use their Green Hills software away from the office. For example, they may want software installed onto a laptop to take into the field to debug a problem. Green Hills has introduced the concept of a temporary commuter license. With a commuter license: A user can check out a license from the license manager and have this license converted into a temporary commuter license for their laptop. Because the remote license has a time limit, it is referred to as a lease. The remote license will only run on a specific target machine, which is called a nodelock. Commuter licenses preserve the customer s investment in Green Hills software by allowing a licensed user to take full advantage of the software even when working remotely without purchasing separate licenses for this purpose. 1. To obtain a commuter nodelock lease, select the Obtain commuter nodelock lease link. The Obtain Commuter Lease page will open with a form for you to complete: Green Hills Software, Inc. 287

12. Green Hills License Manager Device 2. Enter the following information: User Name The user s login name. Host Code The number that describes the target machine (e.g. the laptop) that will be running the software remotely. To determine the appropriate value for the host code, run the command servecode -g on the target machine (the servecode program is available from the top level of the Green Hills software installation which must first be installed on the target machine). The result of this command will be a hexadecimal number similar to the following: 0x1e2ed92 Using this example, you would enter 0x1e2ed92 in the form s Host Code field (do not include any spaces in the number). MULTI License Administrator can also be used to display the host code (see Accessing MULTI License Administrator on page 277). Length of Lease in Days This is the number of days the remote machine will be licensed for. It is important to note that once a lease request is submitted, one license (for all licensed products) will be checked out from the license manager for the duration of the specified period. Obtaining a commuter lease for a particular user means that this user s license on the network will be disabled until the term of the lease expires. For security reasons, it is not possible to check a lease back in to recover a license before the expiration date. 3. When the information has been entered correctly on the form, click Submit to activate the lease and generate the license key for the target machine. Information similar to the following will be displayed in the browser: Click to save license file: config0.lck 4. Depending on your browser, you can save the file by right-clicking Save Link As or Save Target As. On some browsers, simply clicking the link will open a file chooser that you can use to to select the location for downloading the file to your local disk. 5. After saving the license key to your computer s hard drive, transfer the file to the target machine, placing it in the top level directory containing the Green Hills tools installation. 288 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface 6. To use this license, run the following command from the directory where your tools are installed: update -f config0.lck -n all Alternatively, use MULTI License Administrator to install the license (see Accessing MULTI License Administrator on page 277). 7. Once the lease expires, the managed license is automatically added back to the pool of licenses available from the license manager and the temporary nodelock on the target machine expires simultaneously. No action is required by the user to return a leased license. Once a lease expires, another lease for the same target machine can be generated. Only one nodelock lease is permitted per target machine. Also note, leases are recorded in nonvolatile memory, so the lease will be reserved until the user-specified expiration occurs even if the license manager is restarted or the device power cycled. Show List of Licensing Files If you generate a lease license, and for some reason do not save it to the target machine, you can save it at a later time. When you select Show List of Licensing Files, a list of the device-resident license key files will be displayed, similar to the following: Click to save a license file: config.lck config0.lck config.lck is the master license file for the licenses managed by the device and is typically preinstalled by Green Hills Software. License files that contain a number (e.g. config0.lck, config1.lck, etc.) correspond to commuter licenses created with the commuter nodelock lease feature. The only use of these license key files is for installation of temporary nodelock licenses for the commuter machine. To save license files: 1. Select the license file you want to save and click its link. 2. A Save As dialog box opens. Specify the file to Save As, thenclickok. Green Hills Software, Inc. 289

12. Green Hills License Manager Device Up to ten commuter lease license files may be created and saved on the device before being downloaded and used. After config9.lck is used, the file config0.lck will be reused for the next lease license key file. Therefore, if more than ten commuter leases are simultaneously required, the license keys must be downloaded before they are overwritten. Once a commuter lease is created, the license manager has an independent permanent record of the lease until it expires. Upload and Install License In some cases, the license key that is preinstalled by Green Hills on the license manager device will need to be field upgraded. For example, if a customer purchases additional licenses that will be managed by an existing license manager device, a new license key must be obtained from Green Hills software and installed on the device. Only one license key file can be installed in the license manager device. When the new key is installed, the previous key (and its licenses) become void. The new key will contain enough licenses to meet the new customer usage requirement. Do not attempt to use this link to install anything other than a license provided by Green Hills for this purpose. To upload a new license key: 1. Select Upload and Install License. A form will be displayed which you can use to enter the name of the license file: 2. Click Browse to select the file using a standard file chooser. 3. Once the correct license key file is selected, click Load to transfer the file to the license manager device. 290 MULTI: Editing Files and Configuring the IDE

License Manager Device Web Interface 4. The key will automatically be installed and saved into nonvolatile storage. 5. In order for the new licenses to take effect, the license manager device must be restarted. The above instructions assume that you have already obtained a valid license key file from Green Hills Software via email or other means. If your host computer has access to the internet, you can obtain new licenses from the Green Hills web site and have them automatically installed on the device with the MULTI License Administrator selection: Check for New License (see Accessing MULTI License Administrator on page 277). If selected and a valid license is found, you can choose to upload and install this license directly onto the device. Restart License Server Select Restart License Server to restart the license manager software running on the device. If new licenses are uploaded, you must restart the license manager before new licenses can be used. Restarting the license manager is also required for changes made on the Configuration page to take effect (see Configuration Page on page 281). The license manager can also be restarted to clear the current status information and reclaim outstanding licenses (except for leases). Power cycling the license manager device is another way to to force the license manager to restart. Note A license manager restart or device power cycle may result in users encountering some down time. It is best to consult the Status page (see Status Page on page 278) to determine who the current users are and notify them before initiating a license manager restart. Help Page Select Help to open this chapter in your browser. Green Hills Software, Inc. 291

12. Green Hills License Manager Device Client Configuration Client TCP Port If the license manager device is configured to use a TCP port other than the default port of 2009, users must ensure that client software programs connect to the new port. This is achieved by setting the environment variable GHS_LMPORT. For example, on UNIX, using C shell: setenv GHS_LMPORT 2004 Consult your system administrator if you are not sure how to set environment variables. Specifying a License Manager Device When a licensed Green Hills software program runs, it will attempt to obtain a license from a license manager using a TCP connection. For the most efficient operation, the program must know the IP address of the license manager device. You can specify the device s IP address by setting the environment variable GHS_LMHOST. For example, on UNIX: setenv GHS_LMHOST 192.168.100.10 Note If you are not sure what the license device s IP address is, you can use MULTI License Administrator to perform a broadcast to locate license manager devices on the network, then display them in a list. (see Accessing MULTI License Administrator onpage277). If the program is unable to obtain a license, you can set the environment variable GHS_LMDEBUG to 10 or higher. This will cause the Green Hills software program to output some diagnostic information regarding its attempt to communicate with the license manager device. If GHS_LMHOST is not explicitly set, the client application sends a UDP broadcast message over the network in an attempt to find a license manager. If a license manager device receives the broadcast, it will respond, and the TCP connection for licensing will be established. This means that if the user s host computer is within broadcast range of the installed license manager, and a DHCP 292 MULTI: Editing Files and Configuring the IDE

Client Configuration server is running on the network, then no IP address knowledge or configuration is necessary by either users or system administrators; the license manager device will obtain its IP address and network configuration automatically from the DHCP server, and Green Hills Software programs will find the server via broadcast. The device simply needs to be plugged into the network via Ethernet and powered on, and it can immediately begin serving licenses to users. Despite the ease of use of the license broadcast, for maximum efficiency, the license manager device s IP address should be explicitly set with the GHS_LMHOST variable. Broadcasting for every license request may result in slower round-trip license manager communication on some systems. Specifying Multiple License Manager Devices In some installations, more than one license manager device will be used. The most common scenario would be when redundant license manager devices are being employed. Multiple license manager devices are specified by including a comma separated list. For example: setenv GHS_LMHOST 192.168.100.10,192.168.100.11,192.168.100.12 When multiple devices are specified in this manner, client programs attempt to connect to the license manager devices in the order listed. In the above example, if 192.168.100.10 is available on the network, the client will connect to it, and the other devices will not be contacted at all. Random Selection of License Manager Devices In a multiple license manager device configuration, such as a redundant cluster, it may be helpful to have clients connect to a randomly selected device. This will implement a rudimentary form of load balancing. To configure clients to select randomly from a list of multiple license manager devices, precede the comma separated list with the special # character. For example: setenv GHS_LMHOST #192.168.100.10,192.168.100.11,192.168.100.12 Green Hills Software, Inc. 293

12. Green Hills License Manager Device The # character is a comment character for many shells. If placing this setenv command into a shell initialization script, this character must be escaped. For example: setenv GHS_LMHOST \#192.168.100.10,192.168.100.11,192.168.100.12 or setenv GHS_LMHOST #192.168.100.10,192.168.100.11,192.168.100.12 If the client fails to connect to the randomly selected license server, the client follows the list in left to right order and attempts communication with the next address in the list (skipping the previously randomly selected entry that already failed). Using the example entry above, if 192.168.100.11 is randomly selected but the client fails to connect to that address, 192.168.100.10 will be attempted next. If that address fails, 192.168.100.12 will be contacted. Specifying the License Manager Type The GHS_LMWHICH environment variable is a client setting that specifies what type of license to look for first. Clients that obtain their licenses from a license manager device should have this environment variable set to: GHS_LMWHICH=ghs If you use MULTI License Administrator, click the Use Selected LM button to automatically set GHS_LMWHICH to the correct value. You can also set GHS_LMWHICH manually on the client machine. Consult your system administrator if you are not sure how to set environment variables. Redundant License Manager Devices Redundant Server Theory of Operation Multiple license manager devices can be installed on a user s network in order to implement a redundant server cluster. License manager devices are preconfigured for use within a redundant cluster. Once configured, the device cannot be used in a stand-alone configuration. When a redundant license manager device cluster is running, licenses can be served by any of the devices in the cluster. License grants and releases are check-pointed between the 294 MULTI: Editing Files and Configuring the IDE

Redundant License Manager Devices redundant devices, so that the pool of licenses is virtually served by all the license manager devices, as opposed to dividing the available licenses evenly amongst the devices. Redundant license manager devices use UDP broadcasts to detect peer servers and checkpoint license events between each other. Because of the use of broadcasts, peer servers must be within broadcast range of each other. If a redundant license manager device goes down, the remaining devices in the cluster will continue to serve licenses. As a security consideration, the remaining devices will continue to operate only as long as a majority of the devices are still running. For example, if there are three devices in a cluster, one of the devices can fail without affecting a user s ability to obtain licenses, but at least two of the devices must be running for the cluster to continue to serve licenses. Similarly, in a cluster of five devices, two of the devices can go down without affecting users. If a license manager device goes down, it can later be added back to the cluster simply by powering it on. When a redundant cluster is available, users can set the GHS_LMHOST environment variable to any of the available devices. A suggested method is to list all of the license manager devices. For example, if a cluster of three redundant license manager devices have the IP addresses 192.168.100.10, 192.168.100.11, and192.168.100.12, then the GHS_LMHOST variable can be set to the comma separated list of all three. For example, using UNIX C shell: setenv GHS_LMHOST 192.168.100.10,192.168.100.11,192.168.100.12 Green Hills software applications will attempt to use the first address in the list (192.168.100.10). If this device is unavailable, then the application will attempt to use the next license manager device (192.168.100.11). If this device is unavailable, the application will attempt to use 192.168.100.12. Green Hills Software, Inc. 295

12. Green Hills License Manager Device 296 MULTI: Editing Files and Configuring the IDE

Chapter 13 GHSlm: Green Hills License Manager This Chapter Contains: GHSlm License Server Installation for Windows GHSlm License Server Installation for UNIX GHSlm License Administration Utilities

13. GHSlm: Green Hills License Manager This chapter describes the installation and administration of the Green Hills License Manager (GHSlm) server and software. This is Green Hills Software s recommended licensing software and is available in host-based license servers and the Green Hills License Manager Device (see Chapter 12, Green Hills License Manager Device ). In this chapter: Windows refers to Windows graphical user interface (GUI). Command line refers both to the Windows DOS prompt and to UNIX command line; differences are noted when applicable. Note Important Notes on Using GHSlm: The license manager is usually configured to bind to TCP port 2009. If this causes a conflict, use the MULTI Licensing Wizard to configure the server to use a different port. If you use a non-standard port, you will also need to set the GHS_LMPORT environment variable on client machines to configure them to use the correct port (see Install or Configure License Server on page 260). In order to run Green Hills Software products, you must obtain and install a valid license. Information about requesting and installing licenses can be found in the License Menu on page 265. In a Windows environment, the GHSlm license server can only be run on machines with an NT based operating systems installed (such as Windows NT, 2000, and XP). Use of Windows 9x/ME machines as GHSlm license servers is not supported. The license server must not be running when licenses are installed. See GHSlm License Server Startup and Shutdown for Windows on page 300 for instructions on starting and stopping the GHSlm license server. Some license types are stored in the executables themselves. If you receive a patched executable from Green Hills, you may need to update it with your licenses before you can use it. For instructions, see the Example in Installing Licenses with update on page 310. 298 MULTI: Editing Files and Configuring the IDE

GHSlm License Server Installation for Windows GHSlm License Server Installation for Windows This section provides information about installing the License Server software, and how to obtain and install a license key on a Windows machine. GHSlm software is installed by default with the rest of the tools. In order to activate the license server, you need to register it as a service with the operating system. Note In a Windows environment, the GHSlm license server can only be run on machines with an NT based operating systems installed (such as Windows NT, 2000, and XP). Use of Windows 9x/ME machines as GHSlm license servers is not supported. Installing GHSlm License Server Software The following installation instructions are for installing GHSlm License Server software on a Windows machine in a floating-license environment. It is recommended that you exit all running programs before performing the installation.! Warning Do not install Green Hills Software products into directories that contain spaces in their pathnames. To install GHSlm license server software: 1. Install the Green Hills Tools as described in MULTI: Getting Started. 2. From the MULTI Launcher, select Utilities License Administrator to open MULTI License Administrator. (For more information, see Opening themulti License Administrator on page 258.) 3. Select Install a Green Hills license server on this machine (see Install or Configure License Server on page 260). This installs the server with a default configuration. See Server Settings Dialog Box on page 261 if you need to change the server s configuration. 4. If desired, you can request and install licenses as described in Chapter 11, License Administration with the MULTI License Administrator. If you choose not to install licenses at this time, you can request and install licenses later, however clients will not be able to use the server until licenses have been installed. Green Hills Software, Inc. 299

13. GHSlm: Green Hills License Manager You can also install GHSlm from a command line, using the following instructions: 1. Open a command prompt and cd to the directory where MULTI is installed. 2. Use the wrap_svc program to register lm as a service, and schedule it to run when the system starts up by entering the following command: wrap_svc -m auto register Note Before using wrap_svc to change the properties of the license server, make sure that any MULTI License Administrator windows and the Services applet in the Windows Control Panel are closed on the machine. Otherwise, your changes may fail to take effect. For more information about about wrap_svc, see Controlling the License Server with wrap_svc on page 306. GHSlm License Server Startup and Shutdown for Windows If the GHSlm License Server software is installed according to the instructions above, the license server will automatically run whenever the system is booted and shutdown when the system is brought down. If there is a need to start or stop the license server manually, you can use one of the following methods: Click Start/Stop in the Server Settings dialog box (see Server Settings Dialog Box on page 261. Use the Services applet in the Windows Control Panel. TheServices applet does not function correctly if the MULTI License Administrator Server Settings dialog box is open. Use the wrap_svc command as follows: wrap_svc start wrap_svc stop Before using wrap_svc to change the properties of the license server, make sure that any MULTI License Administrator windows and the Services applet in the Windows Control Panel are closed on the machine. Otherwise, your changes may fail to take effect. 300 MULTI: Editing Files and Configuring the IDE

GHSlm License Server Installation for UNIX GHSlm License Server Installation for UNIX This section provides information about installation and licensing on a UNIX system. Installing GHSlm License Manager Software on UNIX By default, GHSlm software is installed with the tools. You should only need to configure and launch the license manager software. GHSlm License Server Startup for UNIX and Linux The GHSlm license server executable is named lm. It is located in the directory that contains the Green Hills distribution. To start the license server, simply run this executable. Because the license server must be up and running before any of the client programs will work, you may want to modify the startup scripts on the server to launch lm at boot time. Please consult your OS documentation for information about how to accomplish this. If you have any problems, please contact Green Hills Technical Support. For example, a bare-bones script for Solaris might exist in a file named /etc/rc2.d/s99ghs_lm with the contents: Green Hills Software, Inc. 301

13. GHSlm: Green Hills License Manager #!bin/sh LM_DIR="/usr/ghs/licensing" # This file will be loaded by the server, with default # values for log file, verbosity, etc. In MULTI 4.x, # the mlmadmin utility can be used to modify the config # file. It can always be edited by a text editor, # although it is only read when the server is started. # This file is defined only for the operator s reference; # the path and file name to this file is hard coded into the lm # executable. Changing this value will not enable lm to use a # config file from a different location. LM_CONFIG_FILE="$LM_DIR/lmconfig.txt" case "$1" in start ) cd $LM_DIR./lm ;; stop ) *) esac exit 0 /usr/bin/pkill -x -u 0 lm ;; echo "Usage: $0 { start stop }" exit 1 ;; Configuring the GHSlm License Manager Software GHSlm is configured with MULTI License Administrator. For details, see Install or Configure License Server on page 260. 302 MULTI: Editing Files and Configuring the IDE

GHSlm License Administration Utilities GHSlm License Administration Utilities This section provides information about the administrator commands available for the Green Hills License Manager. Except when noted otherwise, these administrator commands are available for Windows and UNIX hosts. mlmadmin Administrator program used for installing license keys, listing users, and other administrative functions. For more information, see Chapter 11, License Administration with the MULTI License Administrator. glicusers Utility for named-user licenses, which manages the user list restrictions on the server. For more information, see Managing User Lists with glicusers on page 304. find_ghs_licenses Lists licenses and license servers installed on the local network. This utility processes a license server log file and prints a comma delimited summary of the license usage by product and date, which is suitable for importing into a spreadsheet for graphing and further analysis. For more information, see Listing Licenses with find_ghs_licenses on page 307. lic_log_summary A Python script that serves as a reference implementation of a log summarizing tool. This utility processes a license server log file and prints a comma-delimited summary of license usage by product and date, suitable for importing into a spreadsheet for graphing and further analysis. For more information, see Log Summary with lic_log_summary on page 308. update Low-level utility for installing licenses. For more information, see Installing Licenses with update on page 310. wrap_svc Windows only Wrapper executable which allows the GHSlm License Server to act as a Windows service. Windows services can be launched automatically at system startup, and can be controlled through the Services applet in the Windows Control Panel. For more information, see Controlling the License Server with wrap_svc on page 306. Green Hills Software, Inc. 303

13. GHSlm: Green Hills License Manager Managing User Lists with glicusers When the license server is first started with named user licenses installed, no user list is assigned. A licensed product cannot be used prior to the assignment of user lists, although you may assign an empty user list. In the event that the number of licenses available for a particular licensed product exceeds the number of users named in that product s user list, the user list will auto-populate. That is, users who use a licensed product will automatically be added to the user list for that product if they are not already on that list. Once a user is added to a user list, whether by auto-population or by manual setting, the only way to remove or change that entry is to use the glicusers utility. Note User lists are stored in a file named userlist.txt. Modifying this file via means other than glicusers will render your license server unusable. You should always implement user list changes with glicusers. Note For security purposes, a maximum of three changes (three runs of glicusers) are allowed in any 24-hour period. If a fourth change to the user lists is attempted, a message will display indicating that the maximum number of daily changes to the user list has been exceeded, and the user list changes will not be saved. If this policy hampers your development efforts, please contact Green Hills technical support. Note The server must be restarted before changes will take effect. On some host platforms, the server must be stopped before glicusers will run successfully. The utility is run from the command line as follows: glicusers [commands] The following commands can be used with the glicusers utility: -h Display usage instructions. 304 MULTI: Editing Files and Configuring the IDE

GHSlm License Administration Utilities -r code Apply the reset code code, which allows you to change the user lists more than 3 times in a 24-hour period. Be very careful with this option, since applying an invalid code will not raise an error and will render your license server unusable. If you need a reset code, contact Green Hills Technical Support. user_list_file Replace the current user list with the specified list. Normally, you copy userlist.txt to a new file, edit it with a text editor, then use this command to effect the changes on the server. feature [[-a -d ]] [user] Modify the user list for licensed product feature, by adding (-a) or deleting (-d) the specified user user. This option may be repeated to effect multiple changes at once. Example 1. Setting Up Initial User Lists After installing named-user licenses into a new license server, you need to initialize the user lists by running the glicusers command. The glicusers utility may print some warnings and prompt for some verifications. An example follows. > glicusers You MUST stop the license server before running this program. Otherwise your changes may be lost. Would you like to continue? [n] y User lists initialized. If user lists have never been installed, you receive a message stating, User lists intialized, as shown above. If user lists exist and you run the glicusers command, you receive a message stating, No changes specified. Note Initializing the user lists with glicusers counts as one of the three changes allowed to the user lists in a 24-hour period. Youmayruntheglicusers command again to modify the user list. See the next example. Green Hills Software, Inc. 305

13. GHSlm: Green Hills License Manager Example 2. Modifying User Lists Suppose you want to remove the users sam and bob from the list of PowerPC C++ compiler users. Additionally, you want to add jon to both the list of PowerPC C++ compiler users and the list of MULTI users. You could use the following command: glicusers ecomppc -d sam -d bob -a jon multi -a jon For help, run glicusers -h. Controlling the License Server with wrap_svc The wrap_svc tool allows you to register the GHSlm License Server as a Windows service, and control the service once it is registered. The tool is launched from the command line as follows: wrap_svc [options ][action ] Note Before using wrap_svc to change the properties of the license server, please make sure that any MULTI License Administrator windows and the Services applet in the Windows Control Panel are closed on the machine. Otherwise, your changes may fail to take effect. The following options can be used with wrap_svc: -n name Tells wrap_svc to act on the service registered with this name. The default name is ghs_lm. -e executable Register this executable as the license server. The default is lm.exe. -m mode Set the startup mode to mode. The default is manual Supported modes are: auto the service starts automatically at boot. manual the service must be started manually. disabled the service is marked as disabled. 306 MULTI: Editing Files and Configuring the IDE

GHSlm License Administration Utilities The following actions can be used with wrap_svc: print Print the current service registration information. register Register (or update) the registration information. restart Restart the service. start Start the service. stop Stop the service. unregister Unregister the service. Example 3. Registering the License Server for Automatic Startup To register the GHSlm License Server as a service and have it start up automatically when the machine boots, enter the command: wrap_svc -m auto register Example 4. Starting the License Server To start the GHSlm License Server after it is registered, enter the command: wrap_svc start Listing Licenses with find_ghs_licenses The find_ghs_licenses tool lists licenses installed on the local network, including servers that you are not currently using. The tool is launched from the command line as follows: find_ghs_licenses [options ] By default, the tool will contact the default servers and list information about them. For more information about setting the default servers, see Chapter 11, License Administration with the MULTI License Administrator. Green Hills Software, Inc. 307

13. GHSlm: Green Hills License Manager The following options can be used with the find_ghs_licenses command: -b -x Broadcast to find servers. Do not start with the default servers. Implies -b. Example 5. Using find_ghs_licenses To list information about licenses on the default servers, enter the command: find_ghs_licenses This generates output similar to: Server TARPON: 2009 (169.254.139.247): ecomppc (2901): 10 installed, 2 in use, 7 hwm This indicates that the server named tarpon, listening on port 2009, has10 licenses for ecomppc (the PowerPC C/C++ compiler) installed. Of those 10, 2 are currently in use. Since the server was started, the most licenses that have been in use at any time (hwm thehigh water mark) is 7. Log Summary with lic_log_summary The lic_log_summary utility is a Python script that serves as a reference implementation of a log summarizing tool. This utility processes a license server log file and produces a summary of the license usage by product and date. The output is in a comma-separated values format, which can easily be imported into spreadsheet and database applications for advanced reporting and graphing capabilities. With this data, it should be easy to produce reports in different formats to suit your needs The utility is run from the command line as follows: lic_log_summary.py [options ][products ] The following arguments can be used with the lic_log_summary utility: --help Print usage information. 308 MULTI: Editing Files and Configuring the IDE

GHSlm License Administration Utilities -m Total usage by month, rather than by day -ghs Assume the log file is in GHSlm format (default). -elan Assume the log file is in Elan format. -f file Read the log file fromfile, rather than stdin. products Only display information about the specified products. If no products are specified, all products will be included. Green Hills Software, Inc. 309

13. GHSlm: Green Hills License Manager Example 6. Using lic_log_summary The command: lic_log_summary.py -m -elan -f ghs_elmd.log will display a summary of license usage from the Elan formatted log file named ghs_elmd.log, with usage totalled by month and product. Note This utility is written in the Python language, and requires a Python interpreter to run. Python is freely available from the Python Website (www.python.org), which also includes excellent documentation on Python. The utility is provided as a script, so that its source code can be examined and modified to suit the needs of the end user. It should be simple to study the script and implement the same concepts in other languages if desired. Installing Licenses with update The update command is used to install licenses. Normally, this task is performed with MULTI License Administrator (see Chapter 11, License Administration with the MULTI License Administrator ). However, there are a few cases where you may want to run update directly. The command line format is: update [options ][executables all] Note update must always be run with the current working directory set to the directory where the update executable and the release as a whole reside. For example, if the release is installed in /usr/ghs/arm4.0.7/solaris2 you must cd into that directory before launching update. Do not launch update from a different directory by specifying an absolute path on the command line. Note Exercise care when running update. If run incorrectly, it can render the Green Hills tools unusable. The examples given in this manual are safe to run, but you refrain from running update in any other way unless instructed by a Green Hills representative. 310 MULTI: Editing Files and Configuring the IDE

GHSlm License Administration Utilities The following options are the most commonly used with update. For security reasons, not all options are listed. -n Re-installs existing licenses into new executables. This is most commonly used when a patched executable is dropped into an existing installation. -na Re-installs existing licenses into new executables and updates all executables related to the listed executables, if possible. -f filename Specifies the name of the file containing the existing licenses. By default, update will use the file config.lck. (If you do not have a file named config.lck in your Green Hills directory, see Example 7 on page 311 for instructions.) executables all Updates the executables listed. Updates all executables in the current directory. Example 7. Installing Licenses from a Different File If you want to install licenses from a different file, or your Green Hills directory does not contain a file named config.lck, execute the following a command: update -f file_with_ghs_licenses.lck -na all Example 8. Installing Existing Licenses into New Executables If you receive a patched executable from Green Hills, you may need to update it with your existing licenses before it will work. To accomplish this, copy the new executable into your Green Hills directory and execute the following command: update -na all Green Hills Software, Inc. 311

13. GHSlm: Green Hills License Manager 312 MULTI: Editing Files and Configuring the IDE

ElanLM: Legacy License Manager Chapter 14 This Chapter Contains: Important Notes on Using ElanLM ElanLM License Server Installation for Windows ElanLM License Server Startup for Windows ElanLM License Administration with Windows Utilities ElanLM License Server Installation for UNIX ElanLM License Server Startup for UNIX License Administration with Command Line Utilities Resource Files Troubleshooting

14. ElanLM: Legacy License Manager This chapter describes the installation and administration of the Green Hills Legacy License Manager (ElanLM) server and software. Users that do not specifically require the use of ElanLM should use the GHSlm licensing technology instead. More information about GHSlm can be found in Chapter 13, GHSlm: Green Hills License Manager In this chapter: Windows refers to Windows graphical user interface (GUI) Command line refers both to the Windows DOS prompt and to UNIX command line; differences are noted when applicable. Important Notes on Using ElanLM In order to run Green Hills Software products, you must obtain and install a valid license. These steps can be performed with MULTI License Administrator. For information, see License Menu on page 265 in Chapter 11, License Administration with the MULTI License Administrator. In order to use the utilities for ElanLM on Windows, you must install the Legacy Licensing Software as described in ElanLM License Server Installation for Windows on page 315. MULTI License Administrator expects certain tools to be installed when working with ElanLM servers, and may generate an error if they are not installed. On UNIX hosts, these utilities are installed with all distributions and do not need to be installed separately. When installing floating licenses, the floating license directory must be a local directory. For security reasons, the license server will not load licenses from a network directory. When installing floating licenses, the license installer may report that the license server is down. The license server must be launched before the client machines can access the available licenses. For more information about launching the license server and setting it to launch automatically at startup, see ElanLM License Server Startup for Windows on page 315, or ElanLM License Server Startup for UNIX on page 323. 314 MULTI: Editing Files and Configuring the IDE

ElanLM License Server Installation for Windows ElanLM License Server Installation for Windows This section provides information about installing ElanLM License Server software, and obtaining and installing a license key on a Windows machine. Installing ElanLM License Server Software The following installation instructions are for installing ElanLM License Server software on a Windows machine in a floating-license environment. It is recommend that you exit all running programs before performing the installation. To install ElanLM License Server software: 1. Insert the Green Hills CD. If the tools install auto-runs, close it. 2. Use Windows Explorer to explore the CD drive. 3. Open the licensing folder. 4. Open the legacy folder. 5. Double-click setup.exe to launch the Legacy (Elan) License Utilities Wizard. 6. Click Next to through the remaining installation screens. If the machine you are working on will act as a license server, click Customize on thesetup Options screen. When the screen appears asking what type of license to install, select This machine will act as a license server. If you will be using dongle-locked licenses, you can install dongle-drivers with the legacy software. ElanLM License Server Startup for Windows In Windows, the ElanLM license server is launched from the Control Panel: 1. Select Start Settings Control Panel. 2. In the Control Panel, open ElanLM (Green Hills). TheElan License Manager dialog box will open. On Windows XP/2000/NT, you must be a member of the administrators group to perform this step. Green Hills Software, Inc. 315

14. ElanLM: Legacy License Manager 3. In the Startup area of the dialog box, select one of the following options: Manual The license server will not start automatically when Windows is restarted. Automatic Automatically launches the license server using the most recent settings when Windows is restarted. Disabled (Windows XP/2000/NT only) Disables the license server. 4. Click Settings to enter Startup settings in a dialog box (see Startup Settings on page 316). If the license server is currently running, these settings are displayed in read-only mode. If the license server is not running, any changes you make on this dialog box are saved and used the next time the license server is launched. 5. After verifying or changing settings, click OK. 6. To start the license server, click Launch. After the license server starts, the label of the Launch button changes to Stop. Setup is complete. To determine if the license server is running open the ElanLM (Green Hills) dialog box from the Control Panel. The License Manager dialog box displays a message above Launch/Stop indicating whether or not the license server is running. Startup Settings The following Startup options can be set in the Settings dialog box: Debug Mode Activates debug mode and flushes the log file after each message. The default behavior of the license server is to flush the log file after each packet is processed; however, there may be many messages per packet, depending on the Verbosity level (see below). When you use debug mode, the message DEBUG mode is on prints to the log file. Key Directory Loads all keys found in the specified key directory or set of directories. Multiple directories can be specified as a colon-separated list of directory names. If no key directory is specified, the default key directory is used. 316 MULTI: Editing Files and Configuring the IDE

ElanLM License Server Startup for Windows Log File Name Creates a log file and writes all relevant information to that file. If the file already exists, this option appends the new information to the end of the file. The specified filename must be a complete pathname. Using a log file is recommended because it provides a way of tracking problems should they occur. You must have a log file in order to use Wlmrpt to create a report. Log File Size Limit Setsthesizelimit for the log file. When the size reaches the maximum, the log file is moved to file.old and the current log file is truncated. The default unit is in bytes. It may also be specified in kilobytes or megabytes. We recommend that you set a limit on the size of the log file to 1 MB. For efficiency, the log file size is actually checked only every 100 lines; consequently, the log file may grow beyond the limit slightly before it is backed up and truncated. Resource File Applies the specifications from the resource file. Resource files provide a means to implement highly customized features such as domain restriction, license reservation and exclusion, and held license periods. You can either use resource files provided by Green Hills Software or create your own. For a complete description, see Resource Files on page 339. If the resource file is modified, the license server automatically re-reads it. Start Time Sets the start time (in seconds). This is the period after a system crash that the license server waits for clients to reconnect. The time period gives existing clients a chance to reconnect before new clients can connect. The default is 180 seconds. Zombie Timeout Sets the zombie period (in seconds). If a client does not communicate with the license server within this time period, the license server assumes the client is dead and retrieves its licenses. The default zombie interval is usually 3 minutes. Note that the license server cleans up zombies every 60 seconds, so it may take up to 1 minute more for the licenses to be returned. The zombie time-out must be 180 seconds or more. Green Hills Software, Inc. 317

14. ElanLM: Legacy License Manager Verbosity Sets the verbosity of the messages printed to the log file. When a level is selected, all levels less than or equal to the level are printed. Levels 5 and higher are considered debugging levels. The license server defaults to level 3. The levels are: 1 Only error messages. 2 License failures. 3 License activity. 4 Client connects and disconnects. 5 Message for every packet received. 6 Message for every packet sent. 7 More client and zombie information. 8 Information about key and resource file. 9 Everything. ElanLM License Administration with Windows Utilities The following license administration utilities are available from the Windows Start menu. To launch these utilities, choose Start Programs Green Hills Software Legacy (Elan) Licensing Utilities, and then choose the desired utility. Some ElanLM administration utilities are accessible through through the Legacy Tools menu in MULTI License Administrator. For more information, see Legacy Tools Menu on page 266. Find Available Licenses Helps you locate licenses that are available to the Windows machine. For more information, see Find Available Licenses on page 319. Install Licenses Legacy license installation Do not use. To install licenses, use MULTI License Administrator instead (see License Menu on page 265 in Chapter 11, License Administration with the MULTI License Administrator ). 318 MULTI: Editing Files and Configuring the IDE

ElanLM License Administration with Windows Utilities License Request Generator Legacy license request generation Do not use. To request licenses, use MULTI License Administrator instead (see License Menu on page 265 in Chapter 11, License Administration with the MULTI License Administrator ). WlmAdmin This utility is deprecated. Please use MULTI License Administrator instead (see Chapter 11, License Administration with the MULTI License Administrator ). WlmCntrl This utility is deprecated. Please use Legacy Tools View Available Licenses in MULTI License Administrator instead (see Legacy Tools Menu on page 266). WlmQuery This utility is deprecated. Please use Legacy Tools View Available Licenses in MULTI License Administrator instead (see Legacy Tools Menu on page 266). WlmRpt Reports on license availability and license activity. For more information, see License Manager Reports with WlmRpt on page 321. Note You can administer Windows-hosted license servers using the administrator commands in License Administration with Command Line Utilities on page 328. However, for ease of use, Green Hills Software recommends that you use MULTI License Administrator or the Windows utilities found in this section. Find Available Licenses This utility finds all the licenses currently available to a Windows machine. It performs the following functions: Lists all the computer-locked and dongle-locked licenses installed on the machine. Scans all the servers listed in GHS_LMHOST and lists the licenses installed on them. Broadcasts to find additional servers on the network and lists the licenses installed on those servers. Green Hills Software, Inc. 319

14. ElanLM: Legacy License Manager Opens the Find GHS Licenses dialog box: The dialog box displays the following information for each machine (the current machine and each license server): License Packs Provides information about the.key files used to install licenses. For each license pack, the dialog box lists the server, the installation date, and the authorization id for the.key file. This information can be used to verify that all the.key files have been installed. Installed Licenses Lists all the individual licenses that are installed. For each licensed feature, the type of license and the expiration date are listed. For floating licenses, additional information is provided, such as how many licenses are installed, how many are in use, and any restrictions on the license s use. You can expand a licensed feature to list the total number of licenses available on that server, each individual installation for that feature (in case you have installed more than one license pack), and which users are currently using a license. The dialog box includes the following buttons: Reload Keys When you select a license server, the Reload Keys button becomes available. It will send a message to the selected license server, telling it to reload all of the keys in its license directories. This is useful if recently loaded licenses are not showing up in the dialog box. 320 MULTI: Editing Files and Configuring the IDE

ElanLM License Administration with Windows Utilities Kill Client When you select a line indicating which user is using a license, the Kill Client button replaces the Reload Keys button. Click Kill Client to tell the license server to reclaim the license used by the selected user and kill their client session. The user will need to restart MULTI in order to continue. Refresh Refreshes the information about available licenses. Save as Text Saves the information about available licenses to a text file. License Manager Reports with WlmRpt This utility produces a report of licenses available or license activity of a license server based on the information saved in its log file. 1. When you launch Wlmrpt, you must specify the log file from which to create reports. 2. The Report Generator dialog box will open. Define the report parameters as follows: Report Select the type of report you want. If you choose Periodic, settheperiod by which you want to generate the reports (month, day, or hour). Report Type Specify the format of the report, either Numerical or Graphical (histogram). For more information, see Report Types on page 322. Date Range This setting is optional. Set a Start Date and End Date in Report Range. 3. Click Generate. 4. The report generates to a new window. To print the report to the default printer, click Send to Printer. Click Back to Main Panel to return to the Report Generator dialog box. Green Hills Software, Inc. 321

14. ElanLM: Legacy License Manager Report Types There are two types of reports to select from: Numerical Numeric reports include the following fields: Feature The licensed program s alias if one exists, otherwise the program s name. Total Requests The total number of license requests for the feature during the time period. Total InUse The maximum peak number of licenses that were in use concurrently during the time period. Over Softlim If a soft limit has been applied to the feature, this is the number of licenses in use over the soft limit during the time period. Number Issued The number of licenses successfully issued during the time period. Number Denied The number of licenses denied, most likely due to the maximum number already being in use during this time period. Percent Denied The percentage of licenses denied out of the total number of requests for the period. Total Time Used The total time that the feature was checked out during the period displayed in hours:minutes:seconds Graphical (Histogram) A graphical report that displays two lines for each date as follows: On the first line, the number of successful requests is represented by a series of plus signs (+), and the number of denied requests is represented by a series of minus signs (-). These symbols are followed by the number of successful and denied requests, separated with a plus sign (+). For example, 54 + 4 identifies 54 successful requests and 4 denied requests. The total number of requests is the sum of these two numbers. The second line displays the peak concurrent usage. The open circles (o) indicate usage under the soft limit, and asterisks (*) indicate usage over the soft limit. This line is followed by the in-use count under the soft limit and the in-use count over the soft limit, separated by a plus sign (+). For example, 26 + 0 indicates 26 under the soft limit and 0 over the soft limit. The total concurrent usage is the sum of these two numbers. 322 MULTI: Editing Files and Configuring the IDE

ElanLM License Server Installation for UNIX ElanLM License Server Installation for UNIX This section provides information about ElanLM installation and licensing on aunixsystem. Installing ElanLM License Manager Software Perform the following procedure only on machines that will function as license servers. Note The license manager is usually configured to bind to UDP port 8171. If this causes a conflict, please contact Green Hills Technical Support. To run the installation script: 1. CD to the directory where Green Hills products are installed and run./ghs_install.sh 2. A series of questions guide you through the installation and provide options for editing the initialization (init) scripts. 3. Once installation is complete, the License Request Generator launches automatically. ElanLM License Server Startup for UNIX This section describes how to start and stop the ElanLM license server and how to use the available startup options. The License Manager application must be running on the machine designated as the license server for floating license clients to obtain licenses. The License Manger installation script provides several options for either manual or automatic startup of the license server. Green Hills recommends configuring the license server to launch automatically at system startup. The easiest way to do this is to run the ghs_install.sh script with root permissions. Indicate the appropriate type of initialization script (SYSV or BSD). The ghs_install.sh script creates the Sghs_elmd script, which configures the starting and stopping of the license server. If you do not have root permissions Green Hills Software, Inc. 323

14. ElanLM: Legacy License Manager when you run ghs_install.sh or if you instruct ghs_install.sh not to modify the system startup scripts, you can later manually install the Sghs_elmd script in the system startup script directory. On supported UNIX host operating systems, the Sghs_elmd script can typically be installed in one the following directories: Solaris /etc/rc2.d HP-UX /sbin/rc2.d There are some conventions regarding the filename of the script and the installation directory. For more information, refer to your operating system s manual. To change the settings of the license server: 1. Edit the Sghs_elmd script. This can be done to change settings specified when ghs_install.sh wasrun,ortomodifytheghs_elmd settings. 2. After modifying Sghs_elmd, install the new script in the system startup directory (as described above) and execute the commands: Sghs_elmd stop Sghs_elmd start If you do not have the appropriate permissions, or if you have other questions, please contact your system administrator or Green Hills technical support. UNIX Options for ghs_elmd The ghs_elmd command launches the license server. Normally, this command is called through the Sghs_elmd script created by ghs_install.sh. If you desire, you can write the command into your startup script or run it from the command line. Use the ghs_elmd command as follows: ghs_elmd [options ] 324 MULTI: Editing Files and Configuring the IDE

ElanLM License Server Startup for UNIX The following table provides the options that can be set for ghs_elmd: -D Activates debug mode and flushes the log file after each message. The default behavior of the license server is to flush the log file after each packet is processed; however, there may be many messages per packet, depending on the verbosity level (see the -v option to change verbosity). When you use debug mode, the message DEBUG mode is on prints to the log file. -e path Loads all keys found in a specified key directory or set of directories where path is the path to the key directory. If no key directory is specified, the default key directory is used. Multiple directories can be specified as a colon-separated list of directory names. For example: ghs_elmd -e /local/elan:/local/express:/usr/lib/elm -f Runs the license server in the foreground. The license server usually runs in the background. It forks a child process and detaches from the terminal, and the parent exits. For example, using this option, you can run ghs_elmd from inittab, instead of /etc/rc.local or /etc/rc2.d. -i Prints the Green Hills License Manager release number and the vendor ID. After the information prints, the program exits. Note that your vendor ID is the same for ghs_elmd and elmadmin. Green Hills Software, Inc. 325

14. ElanLM: Legacy License Manager -l file Creates a log file and writes all relevant information to that file where file is a complete pathname. If the file already exists, this option appends the new information to the end of the file. The specified filename must be a complete pathname. Using a log file is recommended because it provides a way of tracking problems, should they occur. Additionally, use of elmrpt (see License Manager Reports with elmrpt on page 334) requires a log file. You can trim the file automatically by using the -m option or by using a nightly command spawned from crontab. The following command will keep the log file under control with the nightly crontab scheme (where somehost is the host name of the license server): cp /usr/adm/elm.log /usr/adm/elm.log.old ELMHOST=@somehost elmadmin -z -m size Sets the size limit for the log file, where size is an integer or floating point number. When the size reaches the maximum, the log file is moved to file.old and the current log file is truncated. The default unit is in bytes, but it can be specified in kilobytes or megabytes by suffixing a k or an m to the size, respectively. We recommend that you set a limit on the size of the log file to 1 MB. For efficiency, the log file size is actually checked only every 100 lines; consequently, the log file may grow beyond the limit slightly before it is backed up and truncated. -n Forces use of System V native interprocess communication. This option is used for local communication for systems without a network. It is applicable on small UNIX systems such as SCO and Interactive UNIX without TCP/IP installed. When using this option, you must set GHS_LMHOST to LOCAL. On System V, the default interprocess communication queue is small and adequate for about two client processes communicating concurrently with the license server. The license server attempts to increase the queue size, but since only root can raise the IPC queue size, ghs_elmd must be run as super-user to be effective. -p n Changes the port address from the default or from one specified by the system services file, where n is the new port address. For example, this option can be used if there is a conflict in port addresses and the user does not have permission to alter the system port services file. 326 MULTI: Editing Files and Configuring the IDE

ElanLM License Server Startup for UNIX -r file Applies the specifications from the resource file named file. Resource files provide a means to implement highly customized features such as domain restriction, license reservation and exclusion, and held license periods. You can either use resource files provided by Green Hills Software or create your own. For a complete description, see Resource Files on page 339. If the resource file is modified, the license server automatically re-reads it. -s n Sets the startup time (in seconds). The start time is the period after a system crash that the license server waits for clients to reconnect. The time period gives existing clients a chance to reconnect before new clients can connect. The default is 180 seconds. -v n Sets the verbosity of the messages printed to the log file. When a level is selected, all levels less than or equal to the level are printed. Levels 5 and higher are considered debugging levels. The license server defaults to level 3. The levels are: 1 Only error messages. 2 License failures. 3 License activity. 4 Client connects and disconnects. 5 Message for every packet received. 6 Message for every packet sent. 7 More client and zombie information. 8 Information about key and resource file. 9 Everything. -x Activates log file tags, which are secure checksum marks. -z n Sets the zombie period (in seconds). If a client does not communicate with the license server within this time period, the license server assumes the client is dead and retrieves its licenses. The default zombie interval is usually 3 minutes. Note that the license server cleans up zombies every 60 seconds, so it may take up to 1 minute more for the licenses to be returned. The zombie time-out must be 180 seconds or more. Green Hills Software, Inc. 327

14. ElanLM: Legacy License Manager License Administration with Command Line Utilities This section lists the administrator commands available for the Green Hills License Manager. Unless noted otherwise, these administrator commands are available for Windows and UNIX hosts. Tip These commands accept the -? option, which displays a brief explanation of command usage and a summary of associated optional flags. The options available to each command are detailed in subsequent sections of this chapter. ghs_elmd UNIX only Starts the license server. The license server must be running in order for floating licenses to be distributed from the license server to the clients. For more information, see UNIX Options for ghs_elmd on page 324. elmadmin Administrator program used for installing license keys, listing users, and other administrative functions. For more information, see Administrative Control with elmadmin on page 329. elmalert Sends alerts when licenses become available or are close to expiration. For more information, see License Manager Alerts with elmalert on page 332. elmrpt Reports from one or more license server log file about license availability and activity. For more information, see License Manager Reports with elmrpt on page 334. elmusage Reports a snapshot of current license activity and prints to the standard output. Updated every ten seconds. For more information, see License Activity Report with elmusage on page 337. elmver Version information for the Green Hills License Manager. For more information, see Version Information with elmver on page 337. licfind Finds licenses available to a Windows machine. For more information, see Find Available Licenses on page 319. Windows only 328 MULTI: Editing Files and Configuring the IDE

License Administration with Command Line Utilities lic_log_summary A Python script that serves as a reference implementation of a log summarizing tool. This utility processes a license server log file and prints a comma-delimited summary of license usage by product and date, suitable for importing into a spreadsheet for graphing and further analysis. For more information, see Log Summary with lic_log_summary on page 338. Administrative Control with elmadmin The elmadmin command invokes a license administrator program. It provides functionality for controlling the log file, running license activity queries, controlling the license server, and other administrative functions. This command can be entered in either a Windows or UNIX command line in the following format: elmadmin [options ][features alias feature=alias ] The following table provides descriptions of the elmadmin options: -b cid Bury the client with client ID (CID) cid and mark the client as dead. To bury a client machine means to return all licenses used by that client. A buried client can continue to run until the next communication with the license server. All subsequent client communications to the license server return an error. To display the CID, enter elmadmin -l. -c An alternative method of installing a license key. You should first try running the installation shell script provided to you by Green Hills Software (see Installing ElanLM License Manager Software on page 323). To change the default key directory, use the -e keydir option, where keydir specifies a directory other than the default. For example, the following command line creates the license key in the directory \local\my_app: elmadmin -c -e \local\my_app The named directory must already exist; the elmadmin -e command does not create it. By default, each time a new license is installed, the license server is notified. When you are installing a large number of keys at once, you can suppress this notification by using the -p. Green Hills Software, Inc. 329

14. ElanLM: Legacy License Manager -C -d Green Hills products no longer use this option. Dumps the contents of the license server database to the log file. -e keydir Places the license keys in a key directory other than the default. Use in conjunction with the -c option. -h -i -k Expands the listing of license information to include each client s hold time and the shared license count. Use in conjunction with the -l option. Prints the release number of the elmadmin command and the version of the Green Hills License Manager Application Library with which it was compiled. Kills the license server. 330 MULTI: Editing Files and Configuring the IDE

License Administration with Command Line Utilities -l Lists the current users and outstanding licenses available for all features known to all license servers on the network. Known features are those used since the license server was started, which is usually the last time the system was rebooted. If you name one or more features on the command line, the listing returns only the named features. This option lists license packs individually. Example 1. Example Listing The following example shows a listing generated with the elmadmin -l command: CID LID PACK User Feature Group Started D 1 1 02.0 young@qback football offense Feb 3 16:03 S 3 2 02.0 warner@qback football offense Feb 3 13:35 S 4 2 02.0 brooks@qback football offense Feb 3 11:36 H 5 3 02.0 dilfer@qback football offense Feb 3 12:34 football [98], pack 02.0: 50 licenses, 4 in use; installed Feb-2-2001 Expires Jun-01-2001 The value in the first column indicates the status of the client. S indicates that the client has a shared license for the listed feature. H indicates that the client is a held client. Held means that the license server holds this client s license for a period of time after client exits the license server. The hold period is specified in the resource file. If the user starts the application again before the hold period ends, the held license is assigned to the user. For more information, see Resource Files on page 339 To include the hold period in the query output, use the -h option. This produces an expanded listing to include each client s period.the -h option also returns the shared license count, which is the number of clients that are currently sharing the license for the indicated feature. The CID column lists the client ID. Each client application is assigned a unique CID. The LID column lists the license ID. Each client usually has a unique LID for each licensed feature, however when a license is shared, the LID is shared, as it in the users warner and brooks in the above example. -p Prevents ping. Use this option with the -c option. Useful when installing a large number of keys at once. -q Queries and prints environment information for debugging purposes. The query output includes the current host name and its network address, the current port and license server name, the GHS ID, and the host code. Green Hills Software, Inc. 331

14. ElanLM: Legacy License Manager -r -s Green Hills products no longer require that you use this option. Use the installation shell script instead. Searches for all license servers using server address resolution and prints their names. If a feature name appears on the command line, the hosts responding with this feature are printed. -v n -x -z Controls the license server log verbosity, where n is the verbosity level. For more information, see the -v option in UNIX Options for ghs_elmd on page 324. Suppresses the copyright notice. By default, each time elmadmin is run, the system prints a copyright notice. Zeros out the log file. Alternatively, the limit log file size option of the license server (ghs_elmd -m size) can be used to automatically control the size of the log file. Truncating the log file by other means is ineffective because the license server keeps the log file open at all times. The next license server log file to write uses the old file pointer, filling the file to the original length. Consequently, you must use elmadmin -z to zero out the log file or use ghs_elmd -m size to truncate the file. For more information about ghs_elmd, see UNIX Options for ghs_elmd on page 324. License Manager Alerts with elmalert The elmalert command provides notification when licenses become available or are close to expiration. By default, elmalert sends notification messages to the screen or by email when each feature specified on the command line is available. Use the elmalert command if the licensed application does not offer license queuing or if it is more convenient for the user to receive notification this way. This command can be entered in either a Windows or UNIX command line in the following format: elmalert [option ][features] 332 MULTI: Editing Files and Configuring the IDE

License Administration with Command Line Utilities The following table provides descriptions of the elmalert options: -a If multiple features are named on the command line, notification is sent when all the licenses specified meet the requested condition. Without the -a option, notification occurs for each feature individually. -b n Used with the -f option, checks every n seconds instead of the default 60 seconds. -e dir -f Specifies a key directory other than the default. Runs the command until the condition is met, instead of checking for the condition once, then exiting. Once you are notified about a feature, the feature is removed from the checklist. When you have been notified of all feature licenses, the elmalert command exits. -h host Specifies the host name that supports SMTP (Simple Mail Transfer Protocol) mail-forwarding. Use with -m option. If unspecified, the current host is used. -m Sends mail to the user name used to invoke the command or to the user set with the -u option. This option works only on TCP/IP systems with an SMTP (Simple Mail Transfer Protocol) service (see option -h). On Windows, you must specify the host and user with the -h and -u options. -o n Monitors occupancy. Sends notification if the number of licenses in use divided by the total number available reaches or exceeds n percent. For example, -o 80 warns when license usage has reached 80 percent or higher. Similarly, -o 100 announces that no more licenses are available. If a feature has a soft limit, this limit is used in the calculation. -p Prints information to the screen (stdout) when the license(s) become available or approach expiration. Also notifies by mail if you use the -m option. The -m, -p, and -v options work together. If none of these options are specified, the default -p option is used. -u user -v Sets the recipient to user for the -m (mail) option. Sets verbose mode. Print information about the status of the license(s). Green Hills Software, Inc. 333

14. ElanLM: Legacy License Manager -x days Prints notification if the feature will expire within the specified number of days. Also sends notification by mail if used with the -m option. [features] Feature or list of features, that alerts are set for. Example 2. Using elmalert To send Milo mail when a license for the feature alias ReportGraph becomes available: elmalert -f -m -u milo ReportGraph To send Bill mail when the license for feature 75 is within two weeks of expiration: elmalert -m -u Bill -x 14 75 License Manager Reports with elmrpt The elmrpt produces reports of licenses activity or license availability. The report data can come from one or more license server log files. Note that elmrpt must have direct access to the license server s log file (or a copy). This command can be entered in a either Windows or UNIX command line in the following format: elmrpt [options ][logfiles logdirs] 334 MULTI: Editing Files and Configuring the IDE

License Administration with Command Line Utilities The following table provides descriptions of the elmrpt options: -d start_date - end_date Limits reporting for dates between start_date and end_date, inclusively. For example: elmrpt -d "95-Feb-3-95-Feb-10 12:30" logs.old elmrpt -d "95/3/15-95/4/15 5:00" logs.old To include the last available date in the log file, use only elmrpt -d start_date (that is, omit the hyphen and the end_date). start_date and end_date can be entered in either of two formats: 95-Feb-3 12:30:00 95/2/3 12:30:00 In either format, the days, hours, minutes, and seconds default to zero if the value is missing. -f feature Lists activity for a specified feature, where feature is either the name or alias of a feature. Use multiple -f options to display activity for more than one feature. -h Prints a usage histogram instead of numerical report (see Report Types on page 322). By default, histogram reports print at a screen width of 78. To adjust the width, use the -w n option. -i -l Prints the release number of elmrpt and the version of the Green Hills License Manager library with which it is compiled, then exits. Generates a summary of available licenses, along with the number of tokens, soft limit, start date, expiration date, and key file name. No other options are valid with -l. Green Hills Software, Inc. 335

14. ElanLM: Legacy License Manager -m n Ignores commands that execute for less than the time specified by n. Toseta minimum duration for commands that will be included in the report, use elmrpt -m n [units] Commands that execute for less than the time specified by n are ignored. Specify the unit of time by following n with s (seconds), m (minutes), h (hours), d (days), w (weeks). The default unit is seconds. By assigning a low value, such as 5 or 10 seconds, you can eliminate phantom statistics, which are instances of commands that the Green Hills License Manager checks out but fails to execute. You can also use this option to eliminate short application sessions from your statistics. For example, -m1m displays applications that have run for one minute or more and -m1h displays applications that have run for one hour or more. -t timeunit Creates a report of the total license activity for a particular time unit, where timeunit is month, day, hour, minute, second. (A unique abbreviation, such as min, is also accepted.) For example, elmrpt -d "95/3/15-95/4/15 5:30" -t hour -u category Prints a detailed report per user. The category can contain one or more of the following qualifiers: u (user name) or h (host name), in any combination of one to three letters. For example, -uuh provides results displayed for each distinct user on a given host. -w n Adjusts the line width of histogram reports, where n is the desired display width. The default is 78. This option only operates in conjunction with the -h option. [logfiles logdirs] If you are not using the default log file, you must specify the log file name. On some systems, you may need to specify a log file that is not currently in use. These arguments specify license server log filenames (logfiles) ordirectories (logdirs) separated by spaces. When any of the arguments is a directory, elmrpt reads data from all log files in that directory. The elmrpt command ignores files that are not license server log files. If you omit the logfile name from the command, elmrpt uses the default log file. 336 MULTI: Editing Files and Configuring the IDE

License Administration with Command Line Utilities License Activity Report with elmusage The elmusage command reports a snapshot of current license activity and prints to standard out. The statistics are then updated every ten seconds. For each feature in use,elmusage lists: Quantity of licenses currently in use. Total number of licenses available. If the feature has a soft license count, that license count is printed in the total column and suffixed with S. Occupancy percentage (the number of licenses in use divided by the number of available licenses). A high percentage indicates that more licenses are needed. If occupancy reaches 100 percent, a series of asterisks (*) are printed in the right column. If the license count is unlimited, unlim is printed and occupancy is always zero. The elmusage command can be entered in either a Windows or UNIX command line in the following format: elmusage [options ] [features] The following table provides descriptions of the elmusage options: -b n -i Changes the interval to n seconds. The default value is 10. Displays version information. features Limits the report to the specified features. Version Information with elmver The elmver command scans specified files for the Green Hills License Manager version information. This command can be entered in a either Windows or UNIX command line in the following format: elmver [-v ][command_name] -v Sets verbose mode, which displays additional version information. Green Hills Software, Inc. 337

14. ElanLM: Legacy License Manager command_name The command that you want version information about. For example, if you want version information for elmadmin: elmver elmadmin.exe The output would be similar to: elmadmin.exe: Elan License Manager release 5.0.1040 Log Summary with lic_log_summary The lic_log_summary utility is a Python script that serves as a reference implementation of a log summarizing tool. This utility processes a license server log file and produces a summary of the license usage by product and date. The output is in a comma-separated values format, which can easily be imported into spreadsheet and database applications for advanced reporting and graphing capabilities. With this data, it should be easy to produce reports in different formats to suit your needs The utility is run from the command line as follows: lic_log_summary.py [options ][products ] The following arguments can be used with the lic_log_summary utility: --help -m Print usage information. Total usage by month, rather than by day -ghs Assume the log file is in GHSlm format (default). -elan Assume the log file is in Elan format. -f file Read the log file from file, rather than stdin. 338 MULTI: Editing Files and Configuring the IDE

Resource Files products Only display information about the specified products. If no products are specified, all products will be included. Example 3. Using lic_log_summary The command: Resource Files lic_log_summary.py -m -elan -f ghs_elmd.log will display a summary of license usage from the Elan formatted log file named ghs_elmd.log, with usage totalled by month and product. Note This utility is written in the Python language, and requires a Python interpreter to run. Python is freely available from the Python Website (www.python.org), which also includes excellent documentation on Python. The utility is provided as a script, so that its source code can be examined and modified to suit the needs of the end user. It should be simple to study the script and implement the same concepts in other languages if desired. Resource files contains Green Hills License Manager related resource information for one or more features. You can use resource files supplied by Green Hills or create your own. Use a resource file to do some or all of the following: Filter out requests from foreign systems (Domain Restriction). Reserve licenses for specific individuals, groups, or machines (Reserved Licenses). Exclude licenses from specific individuals, groups, or machines (Restricted Licenses). Hold a particular license for a specified period after a system crash (Held Licenses). Each line of a resource file contains a single definition. A number sign (#) at the beginning of any line is treated as a comment (the remainder of the line is ignored). Green Hills Software, Inc. 339

14. ElanLM: Legacy License Manager To use a resource file, the license server must be started with the Resource File or ghs_elmd -r option. For more information, see Resource File in Startup Settings on page 316 or the -r option in ElanLM License Server Startup for UNIX on page 323. Restricting the Domain By default, the Green Hills License Manager accepts requests from any IP address. With a resource file, you can restrict the license manager to accept requests from only those addresses that conform to your specifications. You can limit packet requests to machines defined by an IPACCEPT mask. Specify the mask in a resource file as follows: %IPACCEPT mask where mask consists of four octets, separated by periods (.). Each octet may be one of the following expressions, or a comma-separated list of expressions: N An integer between 0 and 255. N-M An integer range in which both N and M are between 0 and 255. N is always less than M. For example, 200-255 * Any integer. THIS The current license server s IP octet value is inserted in the position designated by THIS. For example, if the host address is 192.100.42.16, then THIS.*.*.* isthesameas192.*.*.* and THIS.THIS.THIS.* is the same as 192.100.42.*. Example 1. Limit Server Requests If your company owns a Class-A network, but is also on the Internet, you may want to limit license server requests from only those on your Class-A network domain. The following resource line: %IPACCEPT THIS.*.*.* limits requests to clients on the same Class-A network as the license server. 340 MULTI: Editing Files and Configuring the IDE

Resource Files Likewise, the resource line, %IPACCEPT THIS.100,200-224,226.*.* limits requests to clients that are on the same Class-A network and are from Class-B sub-networks 100, 200 through 224, and226. Reserving, Excluding, and Holding Licenses Feature licenses can be reserved for individual users or client machines using a resource file. Individual users and client machines can also be excluded from using specified features. Reserved and excluded licenses are indicated in the resource file using the format: feature:group:client1,...,clientn:k:h The variables are set as follows: feature Feature name or alias, a maximum of 32 characters. group Group name, a maximum of 20 characters. This is the name you want this group of clients to be called. This group name is displayed in a listing generated by the elmadmin -l command. This is not related to the system group. client k User login names or host names. Host names are preceded by the @ sign. For example, in the entry godzilla@tokyo, godzilla is a user name, and tokyo is a host name. Separate client names by commas. An empty group list includes everyone, which is mainly useful for setting the hold period. (Often used with k also set to zero.) The number of licenses reserved for the group. To exclude a group from using feature, usethewordexclude. Lines with EXCLUDE must precede reserved lines in the resource file. To specify a hold time for a group, use0. To set a default hold period for everyone, useanemptygroup and set to 0. The hold time is ignored for lines excluding licenses. Green Hills Software, Inc. 341

14. ElanLM: Legacy License Manager h Sets the hold period, in seconds, for all members of this group. Held licenses are a form of reserving licenses for active users. When a client terminates, all currently licensed features are held for h seconds. If the same user on the same host runs the application again, held licenses are granted to that user. The hold period is determined from the resource file as follows: If the license requested comes from the reserved license pool for a group, it has the group s hold period. If the license requested comes from the free license pool, the hold period in the first line that matches the feature and group member is used. Therefore, the order in the resource file may be important (see the example). Lines with EXCLUDE must precede lines for reserved licenses. If both host names and user names are used, the first match of host or user name, from left to right and top to bottom, is used. A default hold period must be indicated last. You can establish a minimum hold period within a client, which might be greater than the value specified in the resource file. The maximum number of characters per line is 512. Example 2. Resource File The following is an example of a resource file: # Accept requests from this Class-C network only. %IPACCEPT THIS.THIS.THIS.* # Our reserved and excluded licenses... 99:mother-in-law:endora,@cauldron:EXCLUDE:0 1045:wordproc:john,paul,george,ringo:3:600 cyberpunk:hackers:gibson,stephenson,simmons:3:120 poetsys:lab:@byron.mars.com,@shelley.mars.com:1:0 # Everyone else using 99 has default hold period of 60 sec 99:default::0:60 In this resource file: An IPACCEPT mask specifies that only requests from the local Class-C network will be accepted. The user endora, or anyone logged on to the machine cauldron, is excluded from checking out any licenses for feature 99. 342 MULTI: Editing Files and Configuring the IDE

Resource Files Three licenses for feature 1045 have been reserved for four members of the word processing group, wordproc. The login names of those four members are john, paul, george, andringo. Three licenses of cyberpunk have been reserved for the members of the group hackers. One license for poetsys has been reserved for anyone on the machines byron.mars.com or shelley.mars.com. The user endora or anyone logged on to the machine cauldron do not have a hold period. Users john, paul, george, andringo have a hold period of 600 seconds. Users gibson, stephenson, and simmons have a hold period of 120 seconds. Anyone on the computers byron.mars.com or shelley.mars.com has no hold period. Everyone else has a 60-second hold period by default. Green Hills Software, Inc. 343

14. ElanLM: Legacy License Manager Troubleshooting For more troubleshooting help, see the FAQ pages at the Green Hills Software Licensing Web site at license.ghs.com. License Server Not Responding ( Unable to Get License for... ) 1. Ensure that the license server is running. On the machine where the license manager is supposed to be running: For Solaris 2.x and other System V UNIX: $ ps -fe grep ghs_elmd grep -v grep root 26696 1 0 18:01:27? 0:00 ghs_elmd $ For BSD-style UNIX: $ ps auxww grep ghs_elmd grep -v grep root 1392 0.0 1.4 116 396? S 18:33 0:00./ghs_elmd $ For Windows: On the local machine, check the Windows Task Manager for a process called ghs_elmd. 2. Ensure that the correct licenses are installed. Run the elmusage command, which returns a snapshot of current license activity. This command respects the GHS_LMHOST environment variable, so to check the usage on the host lm_host, setghs_lmhost to @lm_host and run elmusage. Run the elmadmin -l command, which lists the current users and outstanding licenses available for all features known to all license servers on the network. This command ignores GHS_LMHOST, but reports significant detail about the license in use and available on all reachable license servers. 3. Run License Manager diagnostics. a. Set the ELMDEBUG environment variable to generate the diagnostics and direct them to a log file. setenv ELMDEBUG 1,log_file_name 344 MULTI: Editing Files and Configuring the IDE

Troubleshooting b. Run the command that is experiencing license manager failures. If it is a long-running command (e.g., a GUI command), limit the number of diagnostic messages by quitting after a short period of time. c. Examine the log file named in the ELMDEBUG variable. The following is an annotated example of a correctly operating program obtaining a floating license: In the following log file entry, /usr/green/keys is a default. This may appear even if your keys are installed in a different directory, or if there is no license manager on this host. 98-Dec-17 21:25:09: GHS License Manager 5.0.6 [VID ab345d] on UNIX 98-Dec-17 21:25:09: elm_connect(0, "", x0.0.0.0, "2901", "/usr/green/keys", x0, 0, n) The ELMRETRIES environment variable specifies how many times the client will attempt to connect to the license server (total of ELMRETRIES+1 attempts). ELMTIMEOUT is the total time-out for all attempts. 98-Dec-17 21:25:09: ELMTIMEOUT = 15 seconds, ELMRETRIES = 2 In the following log file entry, the file not found (Unable to open file) is a check for computer/dongle-locked licenses. If you do not have any computer-locked or dongle-locked licenses, then this is an expected message: 98-Dec-17 21:25:09: broadcast_to_host "localhost" 98-Dec-17 21:25:09: Can t broadcast to "/usr/green/keys/2901.lic" hosts: Unable to open file The remainder of the log file: 98-Dec-17 21:25:09: broadcasting... 98-Dec-17 21:25:09: Found 2 nets. 98-Dec-17 21:25:09: Name="lo0" 98-Dec-17 21:25:09: loopback 98-Dec-17 21:25:09: Name="hme0" 98-Dec-17 21:25:09: sending to 192.168.2.255 98-Dec-17 21:25:09: SAR timeout=15 98-Dec-17 21:25:09: ELMTIMEOUT = 15 seconds, ELMRETRIES = 2 98-Dec-17 21:25:09: RECEIVED PACKET from server 98-Dec-17 21:25:09: server: YES_LICENSES(268435455); cut timeout to 2 seconds. Green Hills Software, Inc. 345

14. ElanLM: Legacy License Manager 98-Dec-17 21:25:09: sending packet #2 RQ I 98-Dec-17 21:25:09: Receive: Wait 5 sec for packet... 98-Dec-17 21:25:09: Packet #2 I RP K received. 98-Dec-17 21:25:09: get_peers 1 servers 98-Dec-17 21:25:09: server model set to single 98-Dec-17 21:25:09: sending packet #3 RQ V 98-Dec-17 21:25:09: Receive: Wait 0 sec for packet... 98-Dec-17 21:25:09: Alive: Dead daemon 98-Dec-17 21:25:09: resending packet #3 RQ V 98-Dec-17 21:25:09: sending packet #4 RQ G 98-Dec-17 21:25:09: Receive: Wait 5 sec for packet... 98-Dec-17 21:25:09: Packet #3 V RP K received. 98-Dec-17 21:25:09: Receive: Wait 5 sec for packet... 98-Dec-17 21:25:09: Packet #3 V RP K received. 98-Dec-17 21:25:09: Receive: Wait 5 sec for packet... 98-Dec-17 21:25:09: Packet #4 G RP K received. 98-Dec-17 21:25:09: sending packet #5 RQ U 98-Dec-17 21:25:09: Receive: Wait 5 sec for packet... 98-Dec-17 21:25:09: Packet #5 U RP K received. 98-Dec-17 21:25:09: sending packet #6 RQ p 98-Dec-17 21:25:09: Receive: Wait 5 sec for packet... 98-Dec-17 21:25:09: Packet #6 p RP K received. 98-Dec-17 21:25:09: sending packet #7 RQ i 98-Dec-17 21:25:09: Receive: Wait 5 sec for packet... 98-Dec-17 21:25:09: Packet #7 i RP K received. 98-Dec-17 21:25:10: sending packet #8 RQ B 98-Dec-17 21:25:10: Receive: Wait 2 sec for packet... 98-Dec-17 21:25:10: Packet #8 B RP K received. 4. Check the license server s log file. The following highlights from a log file point out some of the normal things that you can ignore when debugging. (Some line-breaks have been added in order to fit the page). 98-Dec-17 21:41:53: GHS License Manager 5.0.6 [VID ab345d] on UNIX 98-Dec-17 21:41:53: slm_hostid: no VENDORHOSTID 98-Dec-17 21:41:53: slm_hostid: no dongle serial number: Security devices are not enabled 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: slm_ether failed: Bad file number 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: no DISK ID 98-Dec-17 21:41:53: slm_hostid: no DISK ID 98-Dec-17 21:41:53: Warning: Unable to obtain HostID #1 (VENDORHOSTID) on "clienthost": Error. 98-Dec-17 21:41:53: Warning: Unable to obtain HostID #2 (DONGLESERIALNUM) on "clienthost": Security devices are not enabled. 346 MULTI: Editing Files and Configuring the IDE

Troubleshooting 98-Dec-17 21:41:53: Warning: Unable to obtain HostID #4 (HOSTNAME+ETHER) on "clienthost": Error. 98-Dec-17 21:41:53: Warning: Unable to obtain HostID #5 (HOSTNAME+DISKID(8)) on "clienthost": Error. 98-Dec-17 21:41:53: Warning: Unable to obtain HostID #6 (DISKID(8)) on "clienthost": Error. Notice that every HostID failed except 3; however, only one needs to succeed. 98-Dec-17 21:41:53: GHS License Manager - Copyright 1997 Elan Computer Group, Inc. 98-Dec-17 21:41:53: GHS_ELMD 5.0.6 started on clienthost (clienthost80080110). 98-Dec-17 21:41:53: Vendor ID = ab345d. 98-Dec-17 21:41:53: PID = 17551. 98-Dec-17 21:41:53: Port = 8171. 98-Dec-17 21:41:53: Log file = /usr/green/ghs_elmd.log. 98-Dec-17 21:41:53: Key path = /usr/green/keys:/usr/green/keys189. 98-Dec-17 21:41:53: Keyaccept = 310. 98-Dec-17 21:41:53: Resource file =. 98-Dec-17 21:41:53: Message level = 3. 98-Dec-17 21:41:53: Max log file size = 10485760 bytes. 98-Dec-17 21:41:53: slm_hostid: IPADDR="c0a80217" 98-Dec-17 21:41:53: slm_hostid: HOSTID="c0a80217" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="80080110" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" Green Hills Software, Inc. 347

14. ElanLM: Legacy License Manager 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: slm_hostid: gethostname returns "clienthost" 98-Dec-17 21:41:53: slm_hostid: HOST="clienthost" 98-Dec-17 21:41:53: slm_hostid: IDPROM="80080110" 98-Dec-17 21:41:53: slm_hostid: HOSTID="clienthost80080110" 98-Dec-17 21:41:53: Initialization period = 5 seconds. 98-Dec-17 21:41:53: Peer registered: "clienthost" clienthost80080110 c0a80217 192.168.2.23 192.168.2.23. Here, we start reading license files and loading keys. At this time, Green Hill customers will not generally get a collection file (but one shows up in the listing below.) They usually get individual keys. 98-Dec-17 21:41:53: Exploding collection file /usr/green/keys/clienthost.col. 98-Dec-17 21:41:53: Installing Pack 10 from collection file. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/10.lic (maps) U tokens [MINIKEY]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/2201.l01 (ccommip) U tokens starts Aug 2 00:00:00 1998, EXPIRED Nov 1 23:59:59 1998 [STDKEY 062802369]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/2901.l01 (ccomppc) U tokens [STDKEY 067224298]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l05 (pbr1) 2 tokens expires Jan 1 23:59:59 2004 [STDKEY 903640701]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l01 (pbr188) 2 tokens expires Jan 1 23:59:59 2000 [STDKEY 903639938]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l02 (pbr189) 2 tokens expires Jan 1 23:59:59 2001 [STDKEY 903640504]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l03 (pbr20) 2 tokens expires Jan 1 23:59:59 2002 [STDKEY 903640554]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l04 (pbrboth) 2 tokens expires Jan 1 23:59:59 2003 [STDKEY 903640584]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l06 (pbr1) 2 tokens expires Jan 1 23:59:59 2004 [STDKEY 903640740]. 348 MULTI: Editing Files and Configuring the IDE

Troubleshooting 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l07 (pbrg189) 2 tokens expires Jan 1 23:59:59 2005 [STDKEY 903640778]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l08 (pbrg1892) 2 tokens expires Jan 1 23:59:59 2005 [STDKEY 903640842]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l09 (pbrg20) 2 tokens expires Jan 1 23:59:59 2005 [STDKEY 903640878]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l10 (pbrgboth) 2 tokens expires Jan 1 23:59:59 2005 [STDKEY 903640922]. 98-Dec-17 21:41:53: Loaded key /usr/green/keys/809.l11 (pbrgboth2) 2 tokens expires Jan 1 23:59:59 2005 [STDKEY 903640983]. Now the license server starts to serve licenses. As you can see, there are two licenses granted and one returned. 98-Dec-17 21:43:04: joeuser@clienthost,clienthost:0.0 [1], pbr189 (809): LID 1 issued, 1 in use. 98-Dec-17 21:43:14: joeuser@clienthost,clienthost:0.0 [1], pbr189 (809): LID 1 returned, 0 in use (used: 0:00:00:10). 98-Dec-17 21:43:26: joeuser@clienthost,clienthost:0.0 [1], pbr189 (809): LID 1 issued, 1 in use. Now the license server shuts down. 98-Dec-17 21:43:50: Received signal 15. GHS_ELMD Terminated. 5. Re-install the license keys. a. Follow the same procedure you performed when installing the keys the first time: On Windows, choose Start Programs Green Hills Software Legacy (Elan) Licensing Utilities Install Licenses. From the command line, run elmadmin -c. You may get error messages stating that the keys are already installed. Ignore these messages for the time being. b. Retry the tool. If the error persists, then try a complete re-installation of the keys: To completely re-install the keys, first ensure that you have the original key files that you want to keep on the machine. These files are usually called key_install.sh for UNIX or license.key for Windows; however, users sometimes rename these files. c. Examine the keys directory or the nodes directory (for the floating license and computer/dongle-locked licenses, respectively). For each key that you want to completely re-install, delete the key file. For example, for MULTI, you would remove 100.l*. To determine which Green Hills Software, Inc. 349

14. ElanLM: Legacy License Manager key file is associated with which product, open the key file and locate the name of the product on approximately the fifth line. If you plan on re-installing all license keys, you can delete all existing key files. d. Use the MULTI License Administrator to re-install the keys. (For more information, see Chapter 11, License Administration with the MULTI License Administrator. 6. Ensure that the license keys are current. Determine this from the output of elmadmin -l or from the license server log file. Generally, this is apparent from the output of the tools. 7. Contact Green Hills Technical Support: Email support@ghs.com or support-ada@ghs.com (USA), or support-nl.ghs.com (Europe) Phone 1-877-GHS-TECH (toll free); 1-805-965-0124; 1-800-789-9695 (Ada users) Be prepared to provide the following: Host platform (e.g., Win32, Solaris, SunOS 4) Version of the tools, (e.g., 1.8.8 PPC, 1.8.9 MIPS) Operating system of the machine on which the license server is running Type of licenses you have (floating or computer/dongle-locked) If your license server is reporting that there is something wrong with your licenses, then it might be helpful to provide a tar or zip archive of your keys directory or or your nodes directory. If You Experience License Server Delays Sometimes local network conditions can affect the speed of the license manager. If your license manager seems to run slowly, consider the following issues: 1. Performance of DNS (or other name resolution) DNS results are usually cached, but in some circumstances, a poor configuration or other problem in DNS can slow everything down. 350 MULTI: Editing Files and Configuring the IDE

Troubleshooting For the License Manager, DNS is mainly used when finding the servers. If you are using the GHS_LMHOST environment variable, then the tool may need to search for the host prior to connecting to it. Using network addresses rather than host names may resolve this problem. For example, if your GHS_LMHOST variable is currently set to @your.server.com and the address for your.server.com is 10.2.1.4, change GHS_LMHOST variable to 10.2.1.4. This prevents DNS lookup every time a licensed tool launches. 2. Are some hosts responding better than others? Suppose you have two license servers and one is named lm1 and the other is named lm2. There are several cases to consider regarding the system environment variable: GHS_LMHOST=@lm1,lm2 Both license servers are contacted before you check out a license. If one of these servers in unavailable, then there is a delay while the tool times out contacting it. This is one of the most reliable settings. It can be slow when network conditions are bad, but it is more likely to get a license if one is available. GHS_LMHOST=lm1,lm2 The tools broadcast to lm1 and lm2, explicitly. This results in a few broadcast packets for every tool invocation. Depending on your network setup, this may or may not be acceptable. Using this method, the first machine to respond with available license is selected, and the other machines are ignored. GHS_LMHOST=@lm1 The tools connect directly to lm1. This is not as reliable as GHS_LMHOST=@lm1,lm2, because if lm1 is unreachable, it will not try lm2; however, it is often much faster. If occasional transient license failures are acceptable, this setting is often the best choice to reduce broadcast traffic. Green Hills Software, Inc. 351

14. ElanLM: Legacy License Manager NIS or Other Directory Services On UNIX machines, the license manager uses the services database to determine the port at which to run. The license server uses getservbyname() to look up the port for ghs_elmd. Most versions of UNIX have a file called /etc/services, which lists the name or port number of each known service. In most default configurations, this file is the only source searched for service information. Many systems and sites use NIS, NIS+ or some other directory service to supplement or replace the /etc/services file. For example, Solaris frequently uses /etc/services during boot, but if NIS is started, /etc/services is replaced by an NIS map. The license server expects either to get a port from the services database or that the lookup will fail (in a reasonable amount of time). After such a failure, the license server uses the default port (udp port 8171). If your system takes a long time to return a failure from getservbyname, then all licensed tools attempting communication with the license server must wait for that failure prior to continuing. Try solving this problem by modifying the services database (e.g., NIS, NIS+) to return faster or by adding ghs_elmd to the services database. For many UNIX systems, another solution is to add the following line to /etc/services: ghs_elmd 8171/udp However, if you are using a service like NIS, this line would have to be added to the source for the NIS map. Other directory services usually have a central location where a similar change could be made. Generally, such changes should be done by a network administrator since they affect all machines in a domain. If your system takes a long time to return a failure from getservbyname, then all licensed tools attempting communication with the license server must wait for that failure prior to continuing. Try solving this problem by modifying the services database (e.g., NIS, NIS+)toreturnfasterorbyaddingghs_elmd to the services database. 352 MULTI: Editing Files and Configuring the IDE

Troubleshooting Unable to Write File Typically, the Unable to write file error occurs because the key directory (i.e., /usr/green/keys) is not writable by the user running the license server. If the license manager is running as a privileged user, (root on UNIX, or Administrator on Windows), then usually it would have access to any file on the system; however, this is not true when remote file systems are involved. If the license manager cannot access remote file systems, do one of the following: Install the license server software and its key directories to a local disk. Ask the remote administrator to change the export permissions on the remote file system so that the license server can access it. (On NFS, pay particular attention to the root squash option.) (UNIX) Run the license server under a user id that has access to the remote file system. Most likely, this solution requires that you also change the ownership of the files installed in the license manager directory. One method to change ownership is to run the following commands as a privileged user on the machine where the disks are physically located: /user/green/keys chown -R USER. chmod u+w. where the keys directory is /user/green/keys, and the user who will run the license server is USER. If you make any changes to the license server setup, then be sure to restart the license server so that the changes can take effect. Green Hills Software, Inc. 353

14. ElanLM: Legacy License Manager 354 MULTI: Editing Files and Configuring the IDE

Part V Appendices

Editor Commands Appendix A This Appendix Contains: Navigation Commands File Commands Undo/Redo Commands Clipboard Commands Text Deletion Commands Selection Commands Continue Selection Commands Search Commands Auto-Completion Commands Block Commands Indentation Commands Insert Commands Tools Commands Tag Commands Version Control Commands Configuration Commands Drag-and-Drop Commands Help Commands Mode Commands if Conditional Commands Miscellaneous Commands Deprecated Commands

A. Editor Commands Most of the commands listed in this chapter are bound to Editor GUI menu items, keyboard shortcuts, and/or mouse buttons. This command reference is provided so you can customize the Editor to help you work more efficiently. If you do not want to use the mouse when you are editing, you can bind any command to a keystroke combination. If you find that you are often performing a particular sequence of actions, you can combine the commands for these actions into a single keystroke, key sequence, mouse button combination, GUI button, or menu item. For more information about binding commands to menu choices, keystrokes, mouse clicks, and buttons, see Chapter 8, Configuring and Customizing MULTI. For a list of all default key and mouse bindings, see Appendix D. Note You can also issue these commands manually by selecting Tools Execute Editor Commands and entering them in the text box. However, since most of these commands are bound to menu choices, keystrokes, mouse clicks, and/or buttons, there should be little need to enter commands in this way. Navigation Commands The cursor is the point in the open file where new text appears in response to keystrokes, and is denoted by a flashing vertical bar between two characters. These commands change the location of the cursor, scrolling the open file as necessary to keep the cursor within the Editor s window. None of these commands modify the contents of the open file. Column [column_number] Moves the cursor to the specified column in the current line. If no parameter is specified, this command opens a dialog box for you to specify the column to which the cursor should be moved. By default, this command is bound to: Column menu item (see The View Menu on page 61). Down Moves the cursor down one line. By default, this command is bound to: DownArrow Ctrl + J 358 MULTI: Editing Files and Configuring the IDE

Navigation Commands DownSome Moves the cursor down by n lines, where n defaults to 5, but may be changed via the Ctrl-cursor jump size field, located in Config Options Editor tab. For information about changing the configuration options, see Chapter 9, Configuration Options. By default, this command is bound to: Ctrl + DownArrow EditLine Displays the Goto Line: prompt, which allows you to move to a specific line by typing in the line number and pressing Enter. SeealsotheGoto and LineD commands below. By default, this command is bound to: Ctrl + G EOF Moves the cursor to the last column of the last line of the open file (end of file). By default, this command is bound to: Ctrl + End EOL Moves the cursor to the last column of the current line (end of line). By default, this command is bound to: End Ctrl + E FlashCursor Flashes the line the cursor is on. This command also turns insert mode off (see the EnterInsertMode command in Mode Commands on page 391). By default, this command is bound to: Flash Cursor menu item (see The View Menu on page 61) The command NoSelection; FlashCursor is bound to the Esc key. Goto Opens the GoTo dialog box. See Using the GoTo Dialog Box on page 33 for more information. By default, this command is bound to: Goto menu item (see The Edit Menu on page 59) Ctrl + Shift+G Green Hills Software, Inc. 359

A. Editor Commands Left Moves the cursor one character to the left. If the cursor is already in the first column of the line, this command has no effect. LeftSome Moves the cursor to the left by n characters, where n defaults to 5, but may be changed via the Ctrl-cursor jump size field, which is located in Config Options Editor tab. For information about changing the configuration options, see Chapter 9, Configuration Options. LeftU Moves the cursor one character to the left. If the cursor is in the first column of the line, then it will move to the last column of the previous line. If the cursor is already in the first column of the first line of the open file, this command has no effect. By default, this command is bound to: LeftArrow Ctrl + H LineD [line_number] Moves the cursor to the specified line. If no parameter is specified, this command opens a dialog box for you to specify the line to which the cursor should be moved. PageDown Moves the cursor down one screen. By default, this command is bound to: PageDown Ctrl + Shift +N PageUp Moves the cursor up one screen. By default, this command is bound to: PageUp Ctrl+Shift+B Return Moves the cursor to the first column of the next line. 360 MULTI: Editing Files and Configuring the IDE

Navigation Commands ReverseWord Moves the cursor to the beginning of the current word. If the cursor is not currently within a word (a group of consecutive alphanumeric characters), it moves to the beginning of the previous word in the open file. By default, this command is bound to: Ctrl + LeftArrow Right Moves the cursor one character to the right. If the cursor is already in the last column of the line, this command has no effect. RightD Moves the cursor one character to the right. If the cursor is in the last column of the line, then it will move to the first column of the next line. If the cursor is already in the last column of the last line of the open file, this command has no effect. By default, this command is bound to: RightArrow Ctrl + L RightSome Moves the cursor to the right by n characters, where n defaults to 5, but may be changed via the Ctrl-cursor jump size field, which is located in Config Options Editor tab. For information about changing the configuration options, see Chapter 9, Configuration Options. SOF Moves the cursor to the first column of the first line of the open file (startoffile) By default, this command is bound to: Ctrl + Home SOL Moves the cursor to the immediate left of the first non-whitespace character on the line (start of line). If the cursor is already to the left of the first non-whitespace character, then it will move to the first column of the current line. By default, this command is bound to: Ctrl + W SOL1 Moves the cursor immediately to the left of the first non-whitespace character on the line, even if the cursor is currently to the left of the first non-whitespace character. If the line has only whitespace characters, the cursor moves to the end of the line. Green Hills Software, Inc. 361

A. Editor Commands SOL0 Moves the cursor to the first column of the current line (before any indentation) even if the first character is indented. By default, this command is bound to: Home Ctrl + 0 (zero) Up Moves the cursor up one line. By default, this command is bound to: UpArrow Ctrl + K UpSome Moves the cursor up by n lines, where n defaults to 5, but may be changed via the Ctrl+cursor jump size field, located in Config Options Editor tab. For information about changing the configuration options, see Chapter 9, Configuration Options. By default, this command is bound to: Ctrl + UpArrow Word Moves the cursor to the end of the current word. If the cursor is not currently within a word (a group of consecutive alphanumeric characters), it moves to the end of the next word in the open file. By default, this command is bound to: Ctrl + RightArrow File Commands The following commands allow you to open, save, close and discard files. Close Closes the current Editor window. If changes were made to open files, you will be prompted to save the files before closing. By default, this command is bound to: Close Editor menu item (see The File Menu on page 56) Ctrl+Q 362 MULTI: Editing Files and Configuring the IDE

File Commands CyclePush Accesses the previous open file in the Editor s stack. By default, this command is bound to: Previous File menu item (see The View Menu on page 61) Ctrl + Tab CyclePushBack Accesses the next open file in the Editor s stack. By default, this command is bound to: Next File menu item (see The View Menu on page 61) Ctrl + Shift + Tab Done Closes and saves changes to all open files without prompting, then exits the Editor. By default, this command is bound to: Save and Close Toolbar button (see The File Menu on page 56). Ctrl + Shift + Q EditorFlags Opens the Per File Settings dialog box to control settings for the current file. See The Per File Settings Dialog Box on page 63. By default, this command is bound to: Per File Settings menu item (see The View Menu on page 61) FileProperties Displays the language name and other information the Editor is able to obtain about the currently edited file (see The View Menu on page 61 for detail). LoadFile [filename] Opens the given file in either a new Editor window or the current Editor window, depending on the current setting of the OpenFilesInNewBuffers option (see MULTI Editor Options Tab on page 222). If no parameters are specified, this command opens the Edit File dialog box for you to open or create a file. Green Hills Software, Inc. 363

A. Editor Commands LoadFileWithNewEditor [filename] Opens the given file in a new Editor window. If no parameters are specified, this command opens the Edit File dialog box for you to open or create a file. By default, this command is bound to: New Editor menu item (see The File Menu on page 56) Ctrl + N Ctrl+Shift+O NextWindow Moves the cursor into the next Editor window and raises that window to the foreground. Using this command repeatedly will eventually cycle through all of the open Editor windows. OpenFile [filename] Opens the given file in the current Editor window. If no parameters are specified, this command opens the Edit File dialog box for you to open or create a file. By default, this command is bound to: Open menu item (see The File Menu on page 56) Ctrl + O (UNIX) Open (or L7) PageSetup (Windows) Opens the Page Setup dialog box. By default, this command is bound to: Page Setup menu item (see The File Menu on page 56) Print Opens the Print dialog box for you to print the file or current selection. For UNIX, see The Print Setup Dialog Box on page 76. By default, this command is bound to: Print menu item (see The File Menu on page 56) 364 MULTI: Editing Files and Configuring the IDE

File Commands QuerySaveAll Opens the SaveFiles? dialog box that lists all of the currently edited files that are under version control. To choose to save any combination of these files, click the box next to the file s name. To save all of the selected files and type the same comment for all of them, click OK. This is equivalent to saving all of the files at once and entering the same comment for each log. All of the files also have exactly the same date and time in their log entry. By default, this command is bound to: Save All menu item (see The File Menu on page 56) QuerySaveComments Identical to QuerySaveAll, except if comments are turned off for a file under version control, it will still prompt you for a comment. Quit Prompts you to save the changes made to all open files, then quits all MULTI tools (including the legacy Builder and Debugger windows) that are currently running, and from which the Editor is launched. By default, this command is bound to: Exit All menu item (see The File Menu on page 56) Revert Reverts the file to the last saved version, discarding any changes that have not been saved. By default, this command is bound to: Revert to Saved menu item (see The File Menu on page 56) Save Saves the current file. By default, this command is bound to: Save menu item (see The File Menu on page 56) Ctrl + S SaveAll Automatically saves all open files without prompting. SaveAllLog Opens a dialog box that lists all of the currently edited files that are under version control. To choose to save any combination of these files, click the box next to the file s name. To save all of the selected files and type the same comment for all of them, click OK. This is equivalent to saving all of the files at once and entering the same comment for each log. All of the files also have exactly the same date and time in their log entry. Green Hills Software, Inc. 365

A. Editor Commands SaveAs Opens the Save As dialog box. By default, this command is bound to: Save As menu item (see The File Menu on page 56) Ctrl+Shift+S Undo/Redo Commands The following commands allow you to undo, repeat, and cancel other commands and actions that have already executed, or are currently executing. Abort Aborts any ongoing command, such as a search. By default, this command is bound to: Esc Redo Restores the edit that was removed by Undo. By default, this command is bound to: Redo menu item (see The Edit Menu on page 59) Ctrl + Y (UNIX) Again (or L2) RepeatLast Repeats the last edit made to the file. By default, this command is bound to: Repeat Last Edit menu item (see The Edit Menu on page 59) Ctrl +. (Ctrl + period) ShowContextMenu Opens a shortcut (context sensitive) menu at the cursor. This command should only be bound to mouse buttons. By default, this command is bound to: Right-click 366 MULTI: Editing Files and Configuring the IDE

Clipboard Commands Undo Reverses the last change made to the current file. By default, this command is bound to: Undo menu item (see The Edit Menu on page 59) Ctrl + Z (UNIX) Undo (or L4) Clipboard Commands MULTI provides four internal clipboards. Windows Only The first clipboard is the same as the Windows clipboard. Text or data stored there will be available to other Windows applications. UNIX only The contents of the clipboard can be made available to other applications with the clipboard manager. Launch clipboard manager is a configurable option on the Config Options General tab (see General Options Tab on page 183). Green Hills Software, Inc. 367

A. Editor Commands Copyn Copies the selected text to clipboard number n. Any previous contents of the specified clipboard will be lost when any of these commands are issued, but other clipboards will be unaffected. By default, Copy1 is bound to: Copy menu item (see The Edit Menu on page 59) Ctrl + C (UNIX) Copy (or L6) By default, Copy2 is bound to: Ctrl+Shift+C (UNIX) Shift + Copy (or Shift + L6) (UNIX) Copy3 is bound to: Meta + Ctrl + C Ctrl + Copy (or Ctrl + L6) (UNIX) Copy4 is bound to: Meta + Ctrl + Shift + C Ctrl+Shift+Copy (or Ctrl + Shift + L6) Cutn Deletes the selected text and places it on clipboard number n. Any previous contents of the specified clipboard will be lost when any of these commands are issued, but other clipboards will be unaffected. By default, Cut1 is bound to: Cut menu item (see The Edit Menu on page 59) Ctrl + X (UNIX) Cut (or L10) Cut2 is bound to: Ctrl+Shift+X (UNIX) Shift + Cut (or Shift + L10) (UNIX) Cut3 is bound to: Meta + Ctrl + X (UNIX) Ctrl + Cut (or Ctrl + L10) (UNIX) Cut4 is bound to: Meta + Ctrl + Shift + X Ctrl + Shift + Cut (or Ctrl + Shift + L10) 368 MULTI: Editing Files and Configuring the IDE

Clipboard Commands NoSelection; ContinueSelection; Left; Cut2; Left; Paste2; Right Transposes the previous two characters. By default, this command is bound to: Ctrl + Shift + T Pasten Inserts text from clipboard number n. By default, Paste1 is bound to: Paste menu item (see The Edit Menu on page 59) Ctrl + V (UNIX) Paste (or L8) Paste2 is bound to: Ctrl + Shift + V (UNIX) Shift + Paste (or Shift + L8) (UNIX) Paste3 is bound to: Meta + Ctrl + V (UNIX) Ctrl + Paste (or Ctrl + L8) (UNIX) Paste4 is bound to: Meta + Ctrl + Shift + V (UNIX) Ctrl + Shift + Paste (or Ctrl + Shift + L8) RectCopy1 Copies a rectangular subsection of the current selection to clipboard number 1. Only this clipboard is available for rectangular selections. For more information, see Working with Columns on page 38. By default, this command is bound to: Rect Copy menu item (see The Block Menu on page 65) RectCut1 Deletes a rectangular subsection of the current selection, and copies it to clipboard number 1. Only this clipboard is available for rectangular selections. For more information, see Working with Columns on page 38. By default, this command is bound to: Rect Cut menu item (see The Block Menu on page 65) Green Hills Software, Inc. 369

A. Editor Commands RectPaste1 Pastes a clipboard selection created with RectCopy1 or RectCut1 to the current location. Only one clipboard is available for rectangular selections. For more information, see Working with Columns on page 38. By default, this command is bound to: Rect Paste menu item (see The Block Menu on page 65) Ctrl + V Text Deletion Commands The following commands delete text in the open file, either at the cursor or in the primary selection. Once text is deleted by these commands, it can only be recovered with the Undo command. See Undo/Redo Commands on page 366 for more information. Backspace Deletes the text in the current primary selection and cancels the primary selection. If there is no selection, then this command deletes the character immediately before the cursor. By default, this command is bound to: Backspace key Delete Deletes the text in the current primary selection and cancels the primary selection. If there is no primary selection, then this command does nothing. By default, this command is bound to: Delete Ctrl + D if <noselection> { ContinueSelection; ReverseWord }; Backspace Deletes the previous word. By default, this command is bound to: Ctrl + Backspace if <noselection> { ContinueSelection; SOL }; Cut2 Cuts to the beginning of the line. By default, this command is bound to: Ctrl + U 370 MULTI: Editing Files and Configuring the IDE

Selection Commands if <noselection> { ContinueSelection; Word }; Delete Deletes the next word. By default, this command is bound to: Ctrl + Delete SelectToLines; Cut2 Cuts an entire line to clipboard number 2. By default, this command is bound to: Ctrl + M Selection Commands The current selection is a highlighted area of the text in the open file. When text is selected, many commands operate differently upon the selected text than they ordinarily would. These differences are documented in the individual command descriptions. The MULTI Editor supports two selections: The primary selection, which is created by dragging over text with the left mouse button, can be manipulated by many commands, such as the Clipboard commands, Indentation commands, and Drag-and-Drop commands. The primary selection is replaced by any typed or inserted text, and is canceled by any Navigation command. One end of the primary selection, the cursor-end, is always at the cursor s current location, and may be either the start or the end of the selection. The secondary selection, which is created by dragging over text with the middle mouse button (the behavior is controlled by configuration option AllowMiddleClick, whose default setting is on for UNIX and off for Windows, see MULTI Editor Options Tab on page 222 for detail), can be replaced using either the SecondarySelectionReplace or SecondarySelectionReplaceClip commands. When the middle button is released, SecondarySelectionReplace is executed. Any other non-selection Editor command or keystroke will cancel a secondary selection if it exists. Selection commands can be used to create or cancel these two types of selections. Commands that do not explicitly mention the secondary selection operate on the primary selection only. With the exception of the SecondarySelectionReplace and SecondarySelectionReplaceClipcommands, none of the commands in this section will modify the contents of the open file in any way. Green Hills Software, Inc. 371

A. Editor Commands ContinueSelection Extends or shrinks the current selection with the next navigation command, depending on the cursor s position. By default, this command is bound to: Shift The ContinueSelection command or Shift key can be combined with other navigation keys or keyboard shortcuts to extend or shrink the selection. See Continue Selection Commands on page 374 for details. NoSelection Moves the cursor to the beginning of the current primary selection and cancels the selection. If there is no primary selection, this command has no effect. SecondarySelectAll, SecondarySelectLine, SecondarySelectWord These commands have the same behavior as their primary selection counterparts, except that they operate on the secondary selection. SecondarySelectionAdjust, SecondarySelectionExtend, SecondarySelectionStart These commands have the same behavior as their primary selection counterparts, except that they operate on the secondary selection. SecondarySelectionReplace Deletes the text in the secondary selection, and replaces it with a copy of the text in the primary selection. This command also cancels the secondary selection. SecondarySelectionReplaceClip Deletes the text in the secondary selection, and replaces it with a copy of the text in the clipboard. This command also cancels the secondary selection. For more information about the clipboard, see Clipboard Commands on page 367. SelectAll Selects the entire open file. By default, this command is bound to: Select All menu item (see The Edit Menu on page 59) Ctrl + A Quadruple-Left-click SelectionAdjust, SelectionExtend, SelectionGrab These commands create and manipulate selections in a way that is dependent upon the mouse. To be useful, these commands should be bound to mouse buttons and used in conjunction with one another. For a sense of how these commands are used, see Default Mouse Bindings on page 418. 372 MULTI: Editing Files and Configuring the IDE

Selection Commands SelectionStart Starts a new primary selection. By default, this command is bound to: Left-click SelectLine Selects the current line, including any indentation, and moves the cursor to the end of the line. By default, this command is bound to: Triple-Left-click SelectMatch If the character immediately after the cursor is a paired character, suchasa parenthesis, square bracket, quote, or curly brace, this command selects the corresponding paired character. If the cursor is not in front of a paired character, or if there is no match, this command will cause a beep and have no further effect. SelectToLines Extends the current selection so that it completely includes the first and last lines of the current selection. The new selection will begin at the first column of the first line of the current selection and will end at the last column of the last line of the current selection. If there is no current selection, this command will select the current line, exactly like the command SelectLine. SelectToMatch Extends the selection to include the nearest paired characters that enclose the current selection and all text between them. If the cursor is not between paired characters, this command selects the nearest paired characters on either side of the cursor. By default, this command is bound to: Match menu item (see The View Menu on page 61) Shift + Right-click SelectWord Selects the current word and moves the cursor to the end of the word. By default, this command is bound to: Double-Left-click SOLSecondary Starts the secondary selection at the first column of the current line, and changes the secondary selection to zero length. That is, the secondary selection will contain no characters. Green Hills Software, Inc. 373

A. Editor Commands Continue Selection Commands The ContinueSelection command can be combined with other navigation commands to extend the current selection. ContinueSelection; Down Extends the selection down one line. By default, this command is bound to: Shift + DownArrow ContinueSelection; DownSome Extends the selection down a number of lines. By default, this command is bound to: Ctrl + Shift + DownArrow ContinueSelection; EOL Extends the selection to the end of the line. By default, this command is bound to: Shift + End Ctrl+Shift+E ContinueSelection; LeftU Extends the selection left one character. By default, this command is bound to: Shift + LeftArrow ContinueSelection; PageDown Extends the selection down one page. By default, this command is bound to: Ctrl + Shift + PageDown ContinueSelection; PageUp Extends the selection up one page. By default, this command is bound to: Shift + PageUp ContinueSelection; Return Extends the selection to the beginning of the next line. (UNIX) By default, this command is bound to: Ctrl + Shift +Enter 374 MULTI: Editing Files and Configuring the IDE

Search Commands ContinueSelection; ReverseWord Extends the selection to the beginning of the current word. If the cursor is not currently in a word, the selection is extended to the beginning of the previous word. By default, this command is bound to: Ctrl + Shift + LeftArrow ContinueSelection; RightD Extends the selection right one character. By default, this command is bound to: Shift + RightArrow ContinueSelection; SOL0 Extends the selection to the beginning of the line. By default, this command is bound to: Shift + Home ContinueSelection; Up Extends the selection up one line. By default, this command is bound to: Shift + UpArrow ContinueSelection; UpSome Extends the selection up a number of lines. By default, this command is bound to: Ctrl + Shift + UpArrow ContinueSelection; Word Extends the selection to the end of the current word. If the cursor is not currently in a word, the selection is extended to the end of the next word. By default, this command is bound to: Ctrl + Shift + RightArrow Search Commands The MULTI Editor supports two ways to search the open file for text. See Searching in the Editor on page 25 for more information about search options. Green Hills Software, Inc. 375

A. Editor Commands BackISearch (A capital i precedes Search. ) Starts an incremental search that proceeds backward from the current location. See Incremental Searching on page 26 for more information. By default, this command is bound to: Ctrl + B (UNIX) By default, BackISearch; Search is bound to: Shift + Find (or Shift + L9) ISearch (This command starts with a capital i. ) Starts an incremental search that proceeds forward from the current location. See Incremental Searching on page 26 for more information. By default, this command is bound to: Ctrl + F Search Opens the Search dialog box, which allows you to specify interactive search criteria. See Interactive Searching Using the Search Dialog Box on page 27 for more information. By default, this command is bound to: Find menu item (see The Edit Menu on page 59) Ctrl+Shift+F (UNIX) Find (or L9) StopSearch Stops an incremental or interactive search. The most recently matched or partially matched text will remain selected. See Incremental Searching on page 26 for more information. By default, this command is bound to: Esc TruncateSearch Restarts the incremental search at the current location. See Incremental Searching on page 26 for more information. 376 MULTI: Editing Files and Configuring the IDE

Auto-Completion Commands Auto-Completion Commands The MULTI Editor provides the following commands for auto-completion. These commands function even when auto-completion is disabled. AcceptAcString Accepts the string auto-completed by MULTI Editor. The auto-completed string not confirmed yet will be deleted by MULTI Editor when you click the mouse, type in a character or press some arrow keys etc, depending on the key-stroke configuration for MULTI Editor. By default, AcceptAcString; MoveToEndOfSelectionAndUnselect is bound to: Tab End RightArrow AutoCompleteList Opens a pop-up menu to show the strings from system which can complete the text at the cursor. If you select a string from the pop-up menu, the string will be used to complete the text at the cursor. If there is only one such string, the text at the cursor will be auto-completed with the string and the auto-completed string will be automatically accepted. The maximum number of strings listed is determined by the following entry in the corresponding language definition file: max_match = num where num is the maximum number matches to display. The default is 10. By default, this command is bound to: Ctrl + / AutoCompletePrototypeList Opens a pop-up menu to show the function prototypes (up to the number configured by option max_match in the corresponding.gsc file) which match the function name at the cursor. If you select one entry from the pop-up menu, the corresponding function name will be used to complete the text at the cursor. By default, this command is bound to: Ctrl + Green Hills Software, Inc. 377

A. Editor Commands DeleteUnconfirmedAcString Deletes the string which is auto-completed by MULTI Editor but not accepted yet. MoveToEndOfSelectionAndUnselect Moves the cursor to the end of the selected text and clears the selection on the text. There is no affect if there is no selection. By default, AcceptAcString; MoveToEndOfSelectionAndUnselect is bound to: Tab End RightArrow NextAutoCompleteString Auto-completes the characters with the next string that matches the pattern. By default, this command is bound to: Ctrl + ] PrevAutoCompleteString Auto-completes the characters with the previous string that matches the pattern. By default, this command is bound to: Ctrl + [ Block Commands The following commands modify text in the current primary selection in convenient ways. Although they are designed to operate on selected text, most of these commands have some default behavior that occurs even when there is no selection. CommentBlock Inserts language specific characters to signify that the selected text is a comment and not code. See Working with Comments on page 37 for more information. By default, this command is bound to: Comment menu item (see The Block Menu on page 65) Ctrl + * 378 MULTI: Editing Files and Configuring the IDE

Indentation Commands JoinLines Joins two lines of text by replacing the new line character from the end of the current line and all initial whitespace on the next line with a single space. By default, this command is bound to: Join Lines menu item (see The Block Menu on page 65) Ctrl + P LowerCaseBlock Changes all the characters in the current selection to lowercase. By default, this command is bound to: LowerCase menu item (see The Block Menu on page 65) Ctrl + (Ctrl + minus) UnCommentBlock Removes comment style characters from the selected text to make it active code. The selected text must begin with comment-start symbols and end with comment-stop symbols. See Working with Comments on page 37 for more information. By default, this command is bound to: UnComment menu item (see The Block Menu on page 65) Ctrl + Shift + U UpperCaseBlock Changes all the characters in the current selection to uppercase. By default, this command is bound to: UpperCase menu item (see The Block Menu on page 65) Ctrl + + (Ctrl + plus) Indentation Commands Indentation is whitespace at the beginning of each line, which may be used to denote the hierarchical structure of your code more clearly, thus making it more readable. For more information about indents, see Indenting Code on page 35. Green Hills Software, Inc. 379

A. Editor Commands AutoIndent This command is only available for C, C++, and Ada. Several configuration options affect the operation of AutoIndent (see MULTI Editor Options Tab on page 222). By default, this command is bound to: Auto Indent menu item (see The Block Menu on page 65) Ctrl + 2 AutoIndentImplicit Performs the same function as AutoIndent, except that it can be turned off by setting the configuration option AIimplicitindent to Off. By default, this command is bound to: Implicit Auto Indent check box (see MULTI Editor Options Tab on page 222) AutoIndentOrTab Performs the same function as AutoIndent, except that if the current file is in a language not supported by AutoIndent, a Tab is inserted instead. By default, this command is bound to: Tab Indent Adds an indent at the beginning of the current line or selection. By default, this command is bound to: Indent menu item (see The Block Menu on page 65) Ctrl + i Unindent Removes an indent from the beginning of the current line or selection. By default, this command is bound to: Unindent menu item (see The Block Menu on page 65) Ctrl + Shift + i Insert Commands These commands add text to the open file at the cursor s current position. 380 MULTI: Editing Files and Configuring the IDE

Insert Commands "any_string" Inserts the string between the double quotation marks into the open file at the cursor s current position. The current selection, if any, is replaced with the text between the quotes. Standard C quoting sequences (for example, \n, \t, \\) are allowed. Beep Sounds an audible tone. Date Inserts the date and time into the open file at the cursor s current position. By default, this command is bound to the menu item: Insert Date (see The Tools Menu on page 67). InsertFile Opens the Insert dialog box, which allows you to select a file to be inserted at the current line. The contents of the selected file are placed on the line above the cursor. By default, this command is bound to: Insert File menu item (see The Block Menu on page 65) InsertNewline Inserts a newline (\n) character into the open file at the cursor s current position. The current selection, if any, is replaced with the newline. By default, InsertNewline;AutoIndent is bound to: Enter By default, EOL; InsertNewLine is bound to: Ctrl + Shift + R Tab Inserts a tab (\t) character into the open file at the cursor s current position. The current selection, if any, is replaced with the tab. ToggleErrorView Toggles error view mode, which is off for normal Editor windows. The error view mode allows tag commands to operate properly for output windows. See Tag Commands on page 383 for more information. UserName Inserts the current user name (in lowercase) into the open file at the cursor s current position. Green Hills Software, Inc. 381

A. Editor Commands Tools Commands The Editor provides several file utilities that perform such functions as merging, comparing, and executing shell commands. The following commands provide access to those tools.! command This is the same as ExecuteCmd above. CommandToWindow command; (UNIX only) Sends the given command to the shell. The parameter must end with a semicolon (;). If no parameters are specified, this command opens the Command to Window dialog box. By default, this command is bound to: Command to Window menu item (see The Tools Menu on page 67) DiffFiles Opens the Diff Files dialog box, which allows you to find and display the differences between two files. For more information, see Comparing Files on page 44. By default, this command is bound to: Diff Files menu item (see The Tools Menu on page 67) ExecuteCmd [command;] (UNIX only) Sends the given command to the shell as a command and inserts the output into the open file. The parameter must end with a semicolon (;). If no parameters are specified for this command, it opens the Shell Command to exe dialog box. By default, this command is bound to: Execute Shell Command menu item (see The Tools Menu on page 67) Grep Opens the Search in Files dialog box, which allows you to search for an expression in all open files. See Searching in Files on page 31 for a description of this window and how to use it. By default, this command is bound to: Search in Files menu item (see The Tools Menu on page 67) Make (UNIX) Opens the Thing to make? dialog box. By default, this command is bound to: Make menu item (see The Tools Menu on page 67) 382 MULTI: Editing Files and Configuring the IDE

Tag Commands MergeFiles Opens the Merge dialog box to merge two or three files. See Merging Files on page 40 for more information. By default, this command is bound to: Merge Files menu item (see The Tools Menu on page 67) Minibuffer Opens the Execute Editor Commands dialog box, which allows you to enter commands. By default, this command is bound to: Execute Editor Commands menu item (see The Tools Menu on page 67) Notepad Opens a small Editor window on a scratch file. By default, this command is bound to: Notepad menu item (see The Tools Menu on page 67) Ctrl + Shift + Right-click Shell [command;] Sends the given command to the shell as a command. The parameter must end with a semi-colon (;). The output is sent to the console from which MULTI was launched. This command does not modify the open file. If no parameters are specified, this command opens the Shell Command to exe dialog box. WGUtils Opens the Utility Program Launcher dialog box, which allows you to launch utilities. By default, this command is bound to: Launch Utility Programs menu item (see The Tools Menu on page 67) Tag Commands (UNIX) The MULTI Editor can search tag databases to find the locations of tags (such as procedure names). You can use the various tag commands to quickly jump to and edit these locations. Tag databases are created by programs such as ctags. See Using Tags in Your Files on page 35 for more information. Green Hills Software, Inc. 383

A. Editor Commands AppendTagFile Appends the entries from the specified tag file into the tag database for later queries. By default, this command is bound to: Append TagFile menu item (see The Tools Menu on page 67) ErrorOrTag Finds the next file/line number combination of an output window and opens the file in a new Editor window at the indicated line number. When the next item is found, the cursor moves to it, so that subsequent uses of this command will open different locations each time. The output window searched is determined in the following ways: If the current window is an output window, then it will be searched. If the current window is not an output window, then the last output window searched by this command will be searched again. If the current window is not an output window, and there is no output window last searched by this command, then the latest output window will be searched. If no output window exists, then this command generates an error. NewTag If the window is an output window, this command will examine the line where the cursor is located. If the line contains a file/line number combination, then the file will be opened in another Editor window at the indicated line number. Otherwise, ifthelinedoes not contain a file/line number combination, then this command does nothing. If the window is not an output window, this command will take the currently selected text and use it as a tag name to search for in the currently loaded tag database. If the tag is found, the tag location will be edited in a new Editor window. If no text is selected, this command does nothing. By default, the command SelectWord; NewTag is bound to: Ctrl + T 384 MULTI: Editing Files and Configuring the IDE

Version Control Commands OpenTag If the window is an output window, this command will examine the line where the cursor is located. If the line contains a file/line number combination, then the file will be opened in a new Editor window at the indicated line number. Otherwise, ifthelinedoes not contain a file/line number combination, then this command does nothing. If the window is not an output window, this command will take the currently selected text and use it as a tag name to search for in the currently loaded tag database. If the tag is found, the tag location will be edited in the same Editor window (the new file will be pushed onto the file stack, if necessary). If the currently selected text is a paired character (such as a parenthesis or curly brace), the corresponding paired character will be selected. If no text is selected, this command does nothing. ResetTags Resets the tag file to the default, tags. By default, this command is bound to: Reset Tags menu item (see The Tools Menu on page 67) SpecialTag If the window is an output window, this command will examine the line where the cursor is located. If the line contains a file/line number combination, then the file will be opened in a new Editor window at the indicated line number. If the line does not contain a file/line number combination, this command does nothing. If the window is not an output window, this command does nothing. Version Control Commands The following commands are used with version control: AllowAutoCheckout Enables auto checkout from version control. This only affects buffers that are under version control. By default, this command is bound to: Auto Checkout menu item (see The Version Menu on page 70) CheckIn Checks the file into version control, prompting you for comments. By default, this command is bound to: Check In menu item (see The Version Menu on page 70) Green Hills Software, Inc. 385

A. Editor Commands CheckOut Checks the file out of version control. By default, this command is bound to: Check Out menu item (see The Version Menu on page 70) Discard Discards the current checkout. By default, this command is bound to: Discard Changes menu item (see The Version Menu on page 70) MvcBuffer Opens a dialog box that prompts you for an MVC command. For more information, see Appendix B. PlaceUnderVC Places the current file under version control. By default, this command is bound to: Place Under VC menu item (see The Version Menu on page 70) PreventAutoCheckout The opposite of AllowAutoCheckout. By default, this command is bound to: Auto Checkout menu item (see The Version Menu on page 70) QuerySaveCheckinAll Saves the changes you have made to all the files you have checked out, makes the files read only in MULTI, and removes the lock from the files. You will be asked for comments to be saved in the log file along with your changes. By default, this command is bound to: Check In All menu item (see The Version Menu on page 70) RevertDate Displays a dialog box which allows you to enter a version date. By default, this command is bound to: Revert to Date menu item (see The Version Menu on page 70) RevertHistory Opens a dialog box which allows you to select a version to revert the file to. By default, this command is bound to: Revert to History menu item (see The Version Menu on page 70) 386 MULTI: Editing Files and Configuring the IDE

Configuration Commands RevertToBackup Reverts the current file to the backup file. This is only valid if Editor backups are enabled in the configuration options (off by default). See Chapter 8, Configuring and Customizing MULTI for more information. RevertVersion Opens a dialog box to enter a version number to load into the Editor. By default, this command is bound to: Revert to Version menu item (see The Version Menu on page 70) ShowHistory Opens a dialog box that displays the version control history. By default, this command is bound to: Show History menu item (see The Version Menu on page 70) Ctrl + Shift + H ShowLastEdit Finds the version of the current file that changed the selected text. This command functions the same as the GUI menu item (see The Version Menu on page 70). By default, this command is bound to: Show Last Edit menu item (see The Version Menu on page 70) Ctrl + Shift + L ShowView Displays the user s current view. Note: This command is only supported when using ClearCase. VCBuffer Opens a dialog box that prompts you for a version control command. The full name of the current file is appended at the end of the command. Configuration Commands The MULTI Editor s appearance and behavior can be configured heavily beyond the defaults. With these commands, you can specify values for any of the MULTI Editor s options. Green Hills Software, Inc. 387

A. Editor Commands ClearConfig Prompts before clearing the default configuration file. By default, this command is bound to: Clear Default Configuration menu item (see The Config Menu on page 72). ConfigOptions Opens the Options dialog box. By default, this command is bound to: Options menu item (see The Config Menu on page 72) configure Format: configure [config_item=value] Format: configure [config_item:value] Format: configure [config_itemvalue] Changes the value of a MULTI configuration option. The command configure? displays a list of all items you can configure. The config_item canbeseparatedfromvalue by either an equal sign (=), a colon (:), or a whitespace ( ). For example, to change the tab size to 9, enter: configure tabsize=9 LoadConfigFromFile Opens the Load Configuration from what file? dialog box. By default, this command is bound to: Load Configuration menu item (see The Version Menu on page 70) SaveConfig Saves the current configuration options in a file in the default location. By default, this command is bound to: Save Configuration as Default menu item (see The Config Menu on page 72). SaveConfigToFile Opens the Save Configuration to what file? dialog box. By default, this command is bound to: Save Configuration menu item (see The Version Menu on page 70) 388 MULTI: Editing Files and Configuring the IDE

Drag-and-Drop Commands Drag-and-Drop Commands The Editor supports drag-and-drop actions such as moving text in an open file, and (in Windows) dragging files from Windows Explorer to editors to open them. The drag-and-drop feature is controlled by configuration option DragAndDrop, which is on by default (see MULTI Editor Options Tab on page 222 for detail). The following commands perform various functions associated with this drag-and-drop behavior. Since they are all dependent upon the location of the mouse pointer, these commands are generally useful only when bound to mouse buttons and actions (see Default Mouse Bindings on page 418). SelectionDrop This command completes the drag-and-drop or drag-and-drop-add operation. Legal drag spots are anywhere in the Editor text pane, except on the current selection, and are indicated by the mouse cursor changing into the drop (or drop-add) cursor. Illegal drop spots are indicated by the no mouse cursor. Note: This command will be executed whenever the left mouse button is released during a drag-and-drop or a drag-and-drop-add operation. SelectionStartDrag Starts a drag-and-drop operation using the text of the primary selection. When the mouse moves over a legal drop spot, the cursor will change into the drop cursor, so you can drop the text to the new location. At the completion of the drag-and-drop operation, the text of the primary selection will be deleted from its original location, and pasted to the drop location. If there is no primary selection, this command has no effect. Note: This command must be followed by a SelectionDrop command. By default, this command is bound to: Left-click Green Hills Software, Inc. 389

A. Editor Commands SelectionStartDragAdd Starts a drag-and-drop-add operation using the text of the primary selection. When the mouse is over a legal drop spot, the cursor will change into the drop-add cursor, so you can copy the text to a new location. At the completion of the drag-and-drop-add operation, the text will be copied to the drop location. If there is no primary selection, this command has no effect. To execute this command, left-click and drag selected text, while holding down the Ctrl key. If you press Ctrl any time during a normal drag-and-drop operation, the operation will turn into a drag-and-drop-add operation. Note: This command must be followed by a SelectionDrop command. By default, this command is bound to: Ctrl + Left-click Help Commands The following commands access the MULTI Editor s help features. About Opens the About dialog box. By default, this command is bound to: About MULTI menu item (see The Help Menu on page 73) BugReport Launches the gbugrpt utility program. By default, this command is bound to: Troubleshooting Info menu item (see The Help Menu on page 73). Help Opens MULTI s online help system. By default, this command is bound to: Editor Help menu item (see The Help Menu on page 73) F1 Identify Waits until you execute another command, either by key presses or mouse clicks, and then displays help for that command instead of executing the command. By default, this command is bound to: Identify menu item (see The Help Menu on page 73) 390 MULTI: Editing Files and Configuring the IDE

Mode Commands Mode Commands The following commands change the Editor s mode. AlterMode [mode number] This command is typically only bound to keys, and can be used to create bindings for sequences of key combinations, instead of just single-stroke key combinations. For more information about binding commands to keys, see the keybind command in Customizing Keys and Mouse Clicks on page 169. The AlterMode command switches the Editor to any of 10 modes, called Edit0 through Edit9. In each mode, keystrokes cab have different behaviors depending on what bindings have been set for that particular mode. This is useful because any given key combination can have up to 10 meanings, depending on whether or not it was preceded by a key that is bound to the AlterMode command. Usually, you use the keybind command to bind a command to a key with modifiers, such as Ctrl or Shift keys. However, with AlterMode you can bind commands to a key sequence. The keybind command requires the specification of an editing mode. When you press the key in that mode, the given command executes. Keys bound to commands in the MULTI Editor are usually bound with the mode set to Edit (which refers to the same mode as Edit0). However, if this command is specified and the mode is set to Edit1 Edit9, the next key press in the Editor will execute the command that it is bound to the new mode. For example: keybind "x" Control@Edit=AlterMode Edit2 keybind "s" Control@Edit2=SaveFile With this command, pressing Ctrl + X in the Editor changes the Editor mode to Edit2 for the next key press. Then pressing Ctrl + S in the Editor saves the current file, because the Editor is now in Edit2 mode. Any command issued while in an alternate mode will switch the mode back to Edit0, the default mode. EnterInsertMode Puts the Editor into insert mode, so you can enter literal keystrokes into your file, even if the keys are bound to commands. For example, suppose you customized the Editor so that every time you press d, the cursor moves down one line. This makes it impossible to type the letter d in the file. When you turn on insert mode and press d, theletterd appears in the file, and the cursor does not move down one line. Insert mode may be turned off by the FlashCursor command (see FlashCursor in Navigation Commands on page 358). Green Hills Software, Inc. 391

A. Editor Commands Quote Forces the character generated by the next key press to be literally entered in the file, even if the key is bound to a command. This is useful for entering characters that have commands bound to them. By default, this command is bound to: Ctrl + \ (backslash) if Conditional Commands Conditional commands are useful for constructing scripts and key bindings that apply to a particular state or mode in the Editor. For example, if commands can be used to make your key bindings respond differently depending on whether the Editor is in insert mode, or text has been selected. The basic construction of a conditional command is: if condition {cmds1} [else{cmds2}] If condition is true, the commands given for cmds1 are executed. If condition is false, cmds2 executes. Specifying the keyword else is optional. If else is included and the condition is not true, then the second command executes. The following table provides valid values for condition. allowmiddleclick This condition is true if configuration option AllowMiddleClick is on (see MULTI Editor Options Tab on page 222 for detail). <beforenonwhite> This condition is true if there is no selection and the cursor is before all non-whitespace characters on the line (i.e., all characters before the cursor are whitespace). <bsearch> This condition is true if the Editor in the progress of searching a text backward. <col=eol> This condition is true if the first selected character or the cursor position (if there is no selection) is at the end (not including) of the last character in the corresponding line. 392 MULTI: Editing Files and Configuring the IDE

if Conditional Commands <col=sol> This condition is true if the first selected character or the cursor position (if there is no selection) is the first column of a line. <fsearch> This condition is true if the Editor in the progress of searching a text forward. <insertmode> This is true if the Editor is in insert mode (see EnterInsertMode in Mode Commands on page 391). <lang=language_name> This condition is true if the language used to syntax color the current source file in the Editor is the one specified. The language name is the name specified in the general section of the corresponding language s syntax configuration file (see The language.gsc Syntax Definition Files on page 48 for detail). <noselection> This condition is true if there is no primary selection. <nosselection> This condition is true if there is no secondary selection. <searching> This condition is true if an incremental search is currently in progress, and false otherwise (see ISearch in Search Commands on page 375). <select num=line> This condition is true if the selection number num aligns on line boundaries. The primary selection is number 0, and the secondary selection is number 1. <wrapsearch> This condition is true if the Editor in the progress of searching a text in a direction and has wrapped at the boundary. Example 1. Conditional Commands if <noselection> {SelectLine}; Cut1 If there is no selection, the entire line is selected. The Cut1 command is always executed. if <noselection> {ContinueSelection; SOL} else {Delete} Green Hills Software, Inc. 393

A. Editor Commands If there is no selection, the current cursor position to the end of the line is selected. If there is a selection, it is deleted. Miscellaneous Commands The following table lists the miscellaneous commands of MULTI Editor: CloseDependentWindows Deletes all cross reference Browse windows. By default, this command is bound to: Close Dependent Windows menu item (see The View Menu on page 61). GenerateXrefInfo For C and C++ files, obtains complete cross reference information based on the project to which the source file belongs. Once cross reference information for the enclosing project is generated, use the RegenerateXrefInfo command. By default, this command is bound to: Generate Cross References menu item (see The View Menu on page 61). LanguageOptions Opens the Language Settings dialog box which lists settings for the selected language. By default, this command is bound to: Per Language Settings menu item (see The View Menu on page 61). MultiBar Opens the MULTI Launcher. RegenerateXrefInfo For C and C++ files, regenerates cross reference information based on the project to which the source file belongs. This command is used after GenerateXrefInfo has already been used to generate cross reference information for the enclosing project. By default, this command is bound to: Regenerate Cross References menu item (see The View Menu on page 61). 394 MULTI: Editing Files and Configuring the IDE

Deprecated Commands SelectLanguage [language_index] Selects the language to use for color syntax and for auto-indenting, etc. language_index is the sequential index (starting from 1) for each language defined in index.gsc (see The index.gsc Configuration File on page 46). Note: The C and C++ syntax highlighting module attempts to gray out any code that is enclosed by the #if 0 preprocessor directive. However, if several such directives are nested, only the outermost one will be highlighted correctly. By default, this command is bound to: Language menu item (See The View Menu on page 61.) ToggleReadOnly Toggles the window permission for the current file between read-only and read/write mode, if possible. This does not affect the file s permission on disk. By default, this command is bound to: Read Only menu item (See The View Menu on page 61.) Deprecated Commands The following commands have been deprecated: AlterLocation Use the AlterMode command instead (see AlterMode in Mode Commands on page 391). CmdPrompt2Wnd Use the CommandtoWindow command instead (see CommandtoWindow in Tools Commands on page 382). CreateLog Use the PlaceUnderVC command instead (see PlaceUnderVC in Version Control Commands on page 385). EditTag Use the OpenTag and NewTag commands instead (see OpenTag and NewTag in Tag Commands on page 383). OpenText Use the OpenFile command instead (see OpenFile in File Commands on page 362). Green Hills Software, Inc. 395

A. Editor Commands 396 MULTI: Editing Files and Configuring the IDE

Appendix B MVC Command Reference

B. MVC Command Reference MULTI Version Control (MVC) is the version control system provided by MULTI. This chapter provides command reference information for MVC. Please see Chapter 6, Using Version Control with MULTI and Using MVC on page 116 for more information about MVC and the version control options available in MULTI. The following are MVC commands (see Entering MVC Commands on page 116 for more information): alias list_of_filenames -v alias [-V version] Allows you to assign an alias to refer to a given version number of the files specified in list_of_filenames. The alias can be used by other MVC commands to refer to that version. Valid aliases must be one word, must begin with a non-digit, and two aliases with the same name cannot be defined for the same file If you do not specify the option -V version, the current version is assumed. For example, if version 5.3 is a working version, you could enter: alias fly.c -v goodone -V 5.3 to specify goodone as the alias for fly.c version 5.3. Later, you can use goodone to specify the version number in any command that takes a version number as an argument. For example: get fly.c -v goodone This command is useful for marking a whole set of source files. For example, if you are ready to release a product and want to mark all the current source files as release, make sure all source files are checked in and then enter: alias list_of_filenames -v release You can continue working on the product, making changes and creating new versions. If you ever need to return to the sources for the release version, you can use: get list_of_filenames -v release Another way to accomplish the same goal is to specify the date of the release: get list_of_filenames -d date However, an alias may be easier to remember than a date. Also see unalias later in this table. 398 MULTI: Editing Files and Configuring the IDE

MVC Command Reference ci list_of_filenames [-v version -d date] delget list_of_filenames [-v version -d date] Changes are checked in and the file becomes read-only. The file must be previously checked out for this command to work. Also see the delta and deledit commands. cio list_of_filenames [-v version -d date] deledit list_of_filenames [-v version -d date] Changes are checked in, but the file remains checked out and can be edited. In effect, this is a check in followed by a check out. The file must be previously checked out for this command to work. Also see the delta and delget commands. co list_of_filenames [-v version -d date] edit list_of_filenames [-v version -d date] Check out the specified files and retrieve copies that you can edit. copyfile list_of_filenames new_directory Copies each file in the list_of_filenames and its accompanying log file to the new_directory. create list_of_filenames [-v version] Creates a log file for each file specified in list_of_filenames. You can specify the starting version number with the option -v version (version numbers start at 1.1 by default). Thelogfileisplacedinthemvc.log directory, which is created if it does not currently exist. The log file has the same name as the source file. deletefile list_of_filenames Deletes the list_of_filenames and their log files. delta list_of_filenames [-v version -d date] Changes are checked in and the file (the user s private copy) is deleted. The file must be previously checked out for this command to work. Also see the delget and deledit commands. Green Hills Software, Inc. 399

B. MVC Command Reference diff filename [-v versiona [-V versionb]] Finds the differences between different versions of the specified file, filename. To specify the versions, use one of the following forms: diff filename Determines the latest changes to filename. MVC finds differences between the source file version retrieved from the log file and the latest version in the log file. If the latest version in the log file is the same as the source file, MVC uses the second latest version instead. If the source file does not exist, then MVC compares the latest version in the log file to the second latest version in the log file. diff filename -v version Compares the latest version of filename against the specified version. MVC considers the source file the latest version. If the source file does not exist, then the latest version in the log file is used. diff filename -v versiona -V versionb Compares versiona of filename to versionb of filename. disp list_of_filenames [-v version -d date] Displays the files specified by list_of_filenames with their version number or date. The version number in which each line was originally created is prepended to the line. fc list_of_filenames [-v version -d date] -s startline [-e endline] Finds the most recent version of the files specified in list_of_filenames that changed a particular piece of text (see Show Last Edit on page 113). startline Specifies the starting line number of the change. endline Specifies the ending line number of the change. If no ending line is specified, then only one line (startline) is used. get list_of_filenames [-v version -d date] Retrieves a read-only copy of the specified file. This does not check out the file and is not affected if someone else checks out the file. This command does not work if you are currently editing a writable copy of the file. movefile list_of_filenames new_directory Moves each file in list_of_filenames and its log file to the new_directory. package [-f packfile] [list_of_filenames] Archives, or packs, the listed files and their corresponding log files and lock files if they exist. The result is placed in the file logs.pak, unless packfile is specified. The package file is in UNIX tar format. 400 MULTI: Editing Files and Configuring the IDE

MVC Command Reference remver list_of_filenames [-v version -d date] Deletes the specified version from MVC. Do not delete versions that start branches or you will not be able to trace the branched copies back to the originator. Once a version is deleted it can never be recovered, so use this command with care. show list_of_filenames [-F ] Displays the content of the log files specified by list_of_filenames. Each version in the log file is displayed with its date, username, and comment. By default, only the first line of the comment is displayed. Use the -F option to display the full comment. unalias list_of_filenames -v alias Removes an alias previously defined with the alias command. To change an alias (for example, if a new release is going to replace an old one), you can use the unalias command to remove the old alias, and then use the alias command again to create the new alias. uncheck list_of_filenames unedit list_of_filenames Checks in files without checking in the changes, so that any changes made are lost. This command only applies to files that have previously been checked out. A read-only copy of the file s latest version is then retrieved. This command is useful if you check out a file and later decide you do not need to make any changes to it. unlock list_of_filenames Forcibly checks in a file, even if the file was checked out by another user. Any changes that were made are checked in. This command is useful when someone inadvertently leaves a file checked out and cannot be contacted to check the file back in. (UNIX) If the file was checked out by another user, then a mail message is sent to that user. unmvc list_of_filenames Removes the files specified in list_of_filenames from MVC. unpackage [-f packfile] [-L directory] [list_of_filenames] Unpacks the files in the specified packfile, orfromlogs.pak if a packfile is not specified. If directory is specified, all the files are unpacked into that directory. If list_of_filenames is specified, only the listed files are unpacked. who list_of_filenames Displays the user and time of check out for each list specified in list_of_filenames. Green Hills Software, Inc. 401

B. MVC Command Reference 402 MULTI: Editing Files and Configuring the IDE

Third-Party Tools Appendix C This Appendix Contains: Third-Party Version Control Systems Third-Party Editors Using the Editor with Third-Party Tools

C. Third-Party Tools This chapter describes how to use various third-party tools with the MULTI Editor. Note For information about using third-party compilers and using the MULTI Debugger with third-party tools, see Appendix D, Using Third-Party Tools with the MULTI Debugger in the MULTI: Debugging book. Third-Party Version Control Systems In addition to supporting the MULTI Version Control system (MVC) (see Integrating with MULTI Version Control (MVC) on page 115), MULTI can be configured to integrate with the following third-party version control systems: ClearCase (see Integrating with ClearCase on page 120). CVS (see Integrating with CVS on page 121.) PVCS (see Integrating with PVCS on page 121). RCS (see Integrating with RCS on page 123). SourceSafe (see Integrating with SourceSafe on page 123). You can also configure MULTI to integrate with other version control systems by defining the commands that correspond to basic version control actions. For information about how to specify these commands for other third-party version control systems, see Integrating with a Custom Version Control System on page 126. Third-Party Editors You can configure MULTI to use another editor in place of MULTI s built-in Editor. To specify an alternate editor, you can either set options using the Other Editor Configuration dialog box or you can use the appropriate configuration options. For instructions on how to specify an alternate editor, see Configure Other Editor Options on page 188. Using the Editor with Third-Party Tools You can configure the Editor to launch third-party tools from buttons or menus. The following Editor commands are useful for this purpose: 404 MULTI: Editing Files and Configuring the IDE

Using the Editor with Third-Party Tools! Takes the current selection in the Editor, if any, and pipes it to the standard input of the specified command. If there is a selection in the Editor, the selection is replaced with the output of the specified command. If there is no selection, the command receives no input, and the output is inserted at the cursor. This is equivalent to the ExecuteCmd command. CommandToWindow Runs a shell command and opens a new Editor window to which the standard output of the command is redirected. Shell Runs a shell command with no input/output redirection. For more information about these commands, see Appendix A. Here is an example configuration file that runs some simple UNIX commands: menu: MyTools { { insert pretty date! date "+%l:%m %p on %B %e, %Y"} { count words CommandToWindow "printf %8s%8s%8s%9s\\\\n lines words chars filename ; wc %FILE"} } menu: EditMenuBar { {&File ->EditFile} {&Edit ->EditEdit} {V&iew ->EditView} {&Block ->EditBlock} {&Tools ->EditTools} {MyTools ->MyTools} {&Version ->EditVersion} {&Config ->Config} {&Windows ->WindowsMenu} {&Help ->EditHelp} } To configure the Editor menus from the GUI, choose Config Options, choose the General tab, and click the Menus button. Green Hills Software, Inc. 405

C. Third-Party Tools 406 MULTI: Editing Files and Configuring the IDE

Default Key and Mouse Bindings Appendix D This Appendix Contains: Default Keyboard Shortcuts Default Mouse Bindings

D. Default Key and Mouse Bindings This chapter lists the default key and mouse bindings. For information about how you can change key and mouse bindings, see Customizing Keys and Mouse Clicks on page 169 in Chapter 8, Configuring and Customizing MULTI. Default Keyboard Shortcuts The following tables list default key bindings. You can create or change your key bindings with the keybind command (see Customizing Keys and Mouse Clicks on page 169). Navigating The following key bindings control cursor movement in MULTI windows or navigation through buffers. For more information about the commands, see Navigation Commands on page 358. UpArrow, Ctrl + K Moves the cursor up one line. By default, these keyboard shortcuts are bound to the Up command. Ctrl + UpArrow Moves the cursor up multiple lines [default is 5]. By default, this keyboard shortcut is bound to the UpSome command. PageUp, Ctrl + Shift + B Moves the cursor up one screen By default, these keyboard shortcuts are bound to the PageUp command. DownArrow, Ctrl + J Moves the cursor down one line. By default, these keyboard shortcuts are bound to the Down command. Ctrl + DownArrow Moves the cursor down multiple lines [default is 5]. By default, these keyboard shortcuts are bound to the DownSome command. PageDown, Ctrl + Shift + N Moves the cursor down one screen By default, these keyboard shortcuts are bound to the PageDown command. 408 MULTI: Editing Files and Configuring the IDE

Default Keyboard Shortcuts LeftArrow, Ctrl + H Moves the cursor left one character. By default, these keyboard shortcuts are bound to the LeftU command. Ctrl + LeftArrow Moves the cursor to the previous word. By default, this keyboard shortcut is bound to the ReverseWord command. Ctrl + W, Ctrl + ^ Moves the cursor to the first non-whitespace character of the line. By default, these keyboard shortcuts are bound to the SOL command. Home, Ctrl + 0 (zero) Moves the cursor to the beginning of the line. By default, these keyboard shortcuts are bound to the SOL0 command. Ctrl + Home Moves the cursor to the beginning of the file. By default, this keyboard shortcut is bound to the SOF command. RightArrow, Ctrl + L Moves the cursor right one character. By default, these keyboard shortcuts are bound to the AcceptAcString; RightD command. Ctrl + RightArrow Moves the cursor to the next word. By default, this keyboard shortcut is bound to the Word command. End, Ctrl + E Moves the cursor to the end of line. By default, these keyboard shortcuts are bound to the AcceptAcString; EOL command. Ctrl + Enter Moves the cursor to the beginning of the next line By default, this keyboard shortcut is bound to the EOL; RightD command. Ctrl + End Moves the cursor to the end of the file. By default, this keyboard shortcut is bound to the EOF command. Green Hills Software, Inc. 409

D. Default Key and Mouse Bindings Ctrl + G Prompts for a new line number to go to. By default, this keyboard shortcut is bound to the EditLine command. Ctrl + Tab Cycles through open file buffers forward. By default, this keyboard shortcut is bound to the CyclePush command. For more information about the command, see File Commands on page 362. Ctrl + Shift + Tab Cycles through open file buffers backward. By default, this keyboard shortcut is bound to the CyclePushBack command. For more information about the command, see File Commands on page 362. Opening, Saving, and Closing The following keyboard shortcuts are used to open, save, and close files. For more information about the commands, see File Commands on page 362. Ctrl + O, (UNIX) Open (or L7) Opens a dialog box to open a file in the current window. By default, this keyboard shortcut is bound to the OpenFile command. Ctrl + N, Ctrl + Shift + O (letter O) Opens a dialog box to open a file in a new window. By default, this keyboard shortcut is bound to the LoadFile command. Ctrl + S Saves the current file. By default, this keyboard shortcut is bound to the Save command. Ctrl +Shift+S Opens a dialog box to save the current file. By default, this keyboard shortcut is bound to the SaveAs command. Ctrl + Shift + Q Saves the current file, then closes the window. By default, this keyboard shortcut is bound to the Done command. 410 MULTI: Editing Files and Configuring the IDE

Default Keyboard Shortcuts Ctrl + Q Closes the current editing window. By default, this keyboard shortcut is bound to the Close command. Undo/Redo The following keyboard shortcuts are used to undo and redo edits. For more information about the commands, see Undo/Redo Commands on page 366. Ctrl + Z, (UNIX) Undo (or L4) Reverts the last edit. By default, these keyboard shortcuts are bound to the Undo command. Ctrl + Y, (UNIX) Again (or L2) Reverts the last undo. By default, these keyboard shortcuts are bound to the Redo command. Cutting, Copying, and Pasting The following keyboard shortcuts are used to copy, cut, and paste text to and from clipboards. For more information about the commands, see Clipboard Commands on page 367. Ctrl + X, (UNIX) Cut (or L10) Cuts the selected text to the clipboard. By default, these keyboard shortcuts are bound to the Cut1 command. Ctrl + Shift + X, (UNIX) Shift + Cut (or Shift + L10) Cuts the selected text to the second buffer. By default, these keyboard shortcuts are bound to the Cut2 command. Meta + Ctrl + X, Ctrl + Cut (Ctrl + L10) Cuts the selected text to the third buffer. By default, these keyboard shortcuts are bound to the Cut3 command. Meta + Ctrl + Shift + X, Ctrl + Shift + Cut (or Ctrl + Shift + L10) Cuts the selected text to the fourth buffer. By default, these keyboard shortcuts are bound to the Cut4 command. UNIX only UNIX only Green Hills Software, Inc. 411

D. Default Key and Mouse Bindings Ctrl + C, (UNIX) Copy (or L6) Copies the selected text to the clipboard. By default, these keyboard shortcuts are bound to the Copy1 command. Ctrl + Shift + C, (UNIX) Shift + Copy (or Shift + L6) Copies the selected text to the second buffer. By default, these keyboard shortcuts are bound to the Copy2 command. Meta + Ctrl + C, Ctrl + Copy (or Ctrl + L6) Copies the selected text to the third buffer. By default, these keyboard shortcuts are bound to the Copy3 command. Meta + Ctrl + Shift + C, Ctrl + Shift + Copy (or Ctrl + Shift + L6) Copies the selected text to the fourth buffer. By default, these keyboard shortcuts are bound to the Copy4 command. Ctrl + V, (UNIX) Paste (or L8) Pastes from the clipboard. By default, these keyboard shortcuts are bound to: if <noselection> { if <select1=lines> { SOL0 } } Paste1. Ctrl + Shift + V, (UNIX) Shift + Paste (or Shift + L8) Pastes from the second buffer. By default, these keyboard shortcuts are bound to: if <noselection> { if <select1=lines> { SOL0 } } Paste2. Meta + Ctrl + V, Ctrl + Paste (or Ctrl + L8) Pastes from the third buffer. By default, these keyboard shortcuts are bound to: if <noselection> { if <select1=lines> { SOL0 } } Paste3. Meta + Ctrl + Shift + V Pastes from the fourth buffer. By default, these keyboard shortcuts are bound to: if <noselection> { if <select1=lines> { SOL0 } } Paste4. UNIX only UNIX only UNIX only UNIX only Deleting Text The following keyboard shortcuts are used to delete text. For more information about the commands, see Text Deletion Commands on page 370. 412 MULTI: Editing Files and Configuring the IDE

Default Keyboard Shortcuts Backspace Deletes the previous character or the selection. By default, this keyboard shortcut is bound to the Backspace command. Ctrl + Backspace Deletes the previous word or the selection. By default, this keyboard shortcut is bound to: if <noselection> { ContinueSelection; ReverseWord }; Backspace. Delete, Ctrl + D Deletes the next character or the selection. By default, these keyboard shortcuts are bound to: if <noselection> { ContinueSelection; RightD }; Delete. Ctrl + Delete Deletes the next word or the selection. By default, this keyboard shortcut is bound to: if <noselection> { ContinueSelection; ReverseWord }; Backspace. Ctrl + U Cuts to the beginning of the current line or the selection. By default, this keyboard shortcut is bound to: if <noselection> { ContinueSelection; SOL }; Cut2. Ctrl + M Cuts the current line or the lines in the selection to the second buffer. By default, this keyboard shortcut is bound to: SelectToLines; Cut2. Ctrl + P Joins the current line with the next or the lines in the selection. By default, this keyboard shortcut is bound to the JoinLines command. Selecting Text The following key bindings control how text is selected. For more information about the commands, see Selection Commands on page 371. Shift + UpArrow Extends the selection up one line. By default, this keyboard shortcut is bound to ContinueSelection; Up. Green Hills Software, Inc. 413

D. Default Key and Mouse Bindings Ctrl + Shift + UpArrow Extends the selection up multiple lines [default is 5]. By default, this keyboard shortcut is bound to: ContinueSelection; PageUp. Shift + PageUp Extends the selection up one screen. By default, this keyboard shortcut is bound to: ContinueSelection; UpSome. Shift + DownArrow Extends the selection down one line. By default, this keyboard shortcut is bound to: ContinueSelection; Down. Ctrl + Shift + DownArrow Extends the selection down multiple lines [default is 5]. By default, this keyboard shortcut is bound to: ContinueSelection; DownSome. Ctrl + Shift + PageDown Extends the selection down one screen. By default, this keyboard shortcut is bound to: ContinueSelection; PageDown. Shift + LeftArrow Extends the selection left one character. By default, this keyboard shortcut is bound to: ContinueSelection; LeftU. Ctrl + Shift + LeftArrow Extends the selection to previous word. By default, this keyboard shortcut is bound to: ContinueSelection; ReverseWord. Shift + Home Extends the selection to beginning of line. By default, this keyboard shortcut is bound to: ContinueSelection; SOL0. Shift + RightArrow Extends the selection right one character. By default, this keyboard shortcut is bound to: ContinueSelection; RightD. Ctrl + Shift + RightArrow Extends the selection to next word. By default, this keyboard shortcut is bound to: ContinueSelection; Word. 414 MULTI: Editing Files and Configuring the IDE

Default Keyboard Shortcuts Shift + End Extends the selection to end of line. By default, these keyboard shortcuts are bound to: ContinueSelection; EOL. Ctrl + Shift + Enter Extends the selection to beginning of next line. By default, this keyboard shortcut is bound to: ContinueSelection; Return. Ctrl + A Selects the entire document. By default, this keyboard shortcut is bound to: SelectAll. Searching The following key bindings are used to control searches. For more information about the commands, see Search Commands on page 375. Ctrl + F Starts or continues an incremental search forward. By default, this keyboard shortcut is bound to the ISearch command. Ctrl +B Starts or continues an incremental search backward. By default, this keyboard shortcut is bound to the BackISearch command. Esc Cancels a search. By default, this keyboard shortcut is bound to the Abort command. Ctrl + Shift + F, (UNIX) Find (or L9) Opens the Search dialog box. By default, these keyboard shortcuts are bound to the Search command. Shift + Find (or Shift + L9) Starts an incremental search, then opens the Search dialog box. By default, these keyboard shortcuts are bound to: BackISearch; Search. UNIX only Green Hills Software, Inc. 415

D. Default Key and Mouse Bindings Auto-Completion The following keyboard shortcuts to perform auto-completion functions, even when auto-completion is disabled. For information about auto-completion commands, see Auto-Completion Commands on page 377 Ctrl + ] Auto-completes the characters with the next string that matches the pattern. By default, this keyboard shortcut is bound to the NextAutoCompleteString command. Ctrl + [ Auto-completes the characters with the previous string that matched the pattern. By default, this keyboard shortcut is bound to the PrevAutoCompleteString command. Ctrl + / Displays a list of matched strings. You can select a string from the list. By default, this keyboard shortcut is bound to the AutoCompleteList command. Ctrl + Displays a list of matched function prototypes. You can select a function prototype from the list. By default, this keyboard shortcut is bound to the AutoCompletePrototypeList command. Tab, End or RightArrow Accepts the string auto-completed by the MULTI Editor, moves the cursor to the end of the selected text, then clears the selection on the text. Indenting Text The following keyboard shortcuts are used to indent your text. For more information about the commands, see Indentation Commands on page 379. Ctrl + i Indents the current line or the selection. By default, this keyboard shortcut is bound to the Indent command. 416 MULTI: Editing Files and Configuring the IDE

Default Keyboard Shortcuts Ctrl + Shift + i Unindents the current line or the selection. By default, this keyboard shortcut is bound to the Unindent command. Tab Auto-indents the current line or the selection. By default, this keyboard shortcut is bound to: if <searching> { Tab } else { if <beforenonwhite> { AutoIndentOrTab } else {if <noselection> {Tab} else {AcceptAcString; MoveToEndOfSelectionAndUnselect} } };. Version Control The following keyboard shortcuts are used to access version control options. For more information about the commands, see Version Control Commands on page 385. Ctrl + Shift + L Shows the last edit to the current selection. By default, this keyboard shortcut is bound to the ShowLastEdit command. Ctrl+Shift+H Opens a version history browser. By default, this keyboard shortcut is bound to the ShowHistory command. Miscellaneous The following are miscellaneous keyboard shortcuts. Ctrl + \ Enters the next key press sequence literally. By default, this keyboard shortcut is bound to the Quote command. Ctrl +. Repeats the last command. By default, this keyboard shortcut is bound to the RepeatLast command. Green Hills Software, Inc. 417

D. Default Key and Mouse Bindings Ctrl + Shift + A When entered in a comment, the comment text will be reformatted to wrap across multiple lines. By default, this keyboard shortcut is bound to: FillParagraph. Ctrl + Shift + R Inserts a new line at the end of the current line. By default, this keyboard shortcut is bound to: EOL; InsertNewLine. Ctrl + Shift + T Transposes the previous two characters. By default, this keyboard shortcut is bound to: NoSelection; ContinueSelection; Left; Cut2; Left; Paste2; Right. Ctrl + T Edits the definition of the procedure containing the cursor when cross reference information is available. By default, this keyboard shortcut is bound to: SelectWord; NewTag. Enter Inserts a new line. By default, this keyboard shortcut is bound to: InsertNewline;AutoIndent. Esc Cancels the current selection and flashes the line containing the cursor. By default, this keyboard shortcut is bound to: NoSelection; FlashCursor. Default Mouse Bindings The following tables list default mouse bindings. While mouse bindings may be assigned to up to five mouse buttons, these tables assume that your mouse has only three buttons: left (button1), middle (button2), and right (button3). For information about changing mouse bindings, see the mouse command, in Customizing Keys and Mouse Clicks on page 169. First (Left) Mouse Button The following are default mouse bindings for the left mouse button (button1). For more information about the commands, see Selection Commands on page 371. 418 MULTI: Editing Files and Configuring the IDE

Default Mouse Bindings [Left-click] Starts new (primary) selection. By default, this mouse action is bound to the SelectionStart command. [Left-click] +Drag Selects text for the primary selection Shift + [Left-click] Extends the primary selection to the mouse pointer. Ctrl + [Left-click] Copies selection when in drag-and-drop mode. [Double Left-click] Selects the current word. By default, this mouse action is bound to the SelectWord command. [Triple Left-click] Selects the current line. By default, this mouse action is bound to the SelectLine command. [Quadruple Left-click] Selects the entire file. By default, this mouse action is bound to the SelectAll command. Second (Middle) Mouse Button The following are default mouse bindings for the middle mouse button (button2). The middle button may not be available, depending on your mouse and the Allow middle click to paste configuration option (for more information see MULTI Editor Options Tab on page 222). [Middle-click] Makes a secondary selection and replaces it with the primary selection. [Double Middle-click] Replaces a current word with the primary selection. [Triple Middle-click] Replaces a current line with the primary selection. Green Hills Software, Inc. 419

D. Default Key and Mouse Bindings [Quadruple Middle-click] Replaces an entire file with the primary selection. Third (Right) Mouse Button The following are default mouse bindings for the right mouse button (button3). [Right-click] Opens the shortcut menu for performing operations on the current object. Ctrl + [Right-click] Edits the definition of the selected procedure when cross reference information is available. Shift + [Right-click] Selects a matching parenthesis. By default, this mouse action is bound to the SelectToMatch command. Shift + [Double Right-click] Selects from the current location to the first matching parenthesis. Ctrl + Shift + [Right-click] Opens a temporary editor for taking notes. By default, this mouse action is bound to the notepad command. 420 MULTI: Editing Files and Configuring the IDE

Index -?, 328 * (asterisk) wildcard character, 29! command, 382 -> (minus greater than) menu command, 168 # (number sign) inserting in comments, 225? wildcard character, 29 (quotation marks-double) command, 381 1, 2, 3, 4, 5, 6, 7, 8 menu item, 57 A Abort command, 366 AbortPlaybackFileOnSeriousError configuration option, 213 About command, 74, 390 About MULTI menu item, 74 AcceptAcString command, 377 Ada paren mode configuration option, 226 AdaContinuationSize configuration option, 228 AdaIndentSize configuration option, 228 Again key (UNIX), 366, 411 AiAdaParenIndentMode configuration option, 226 AiCharsLikeStarInComment configuration option, 225 AiCommentsStayFlushLeft configuration option, 225 AiImplicitIndent configuration option, 224 AiImplicitIndentInComments configuration option, 224 AiParenIndentMode configuration option, 226 AiSwitchInTwo configuration option, 224 AiTouchComments configuration option, 224 alias MVC command, 398 Allow beeping configuration option, 184 Allow middle click to paste configuration option, 222 Allow overtype mode configuration option, 223 AllowAutoCheckout command, 71, 385 AllowExecutionIn... configuration option, 213 AllowExecutionInBpCommand configuration option, 213 AlterLocation Editor command (deprecated), 395 AlterMode Editor command, 391 alternate editor configuration, 188 AlwaysUseMeToFixBuildErrors configuration option, 201 any_string command, 381 AppendTagFile command, 35, 69, 384 menu item, 69 Application configuration option, 195 Application Options tab, 194 to 195 application_name menu item, 73 Ask before halting to set breakpoint configuration option, 203 Green Hills Software, Inc. 421

Index assembly color configuration option, 237 AssertionSyntaxChecking configuration option, 213 AttemptToShowOldVersion... configuration option, 213 Auto Checkout menu item, 71 auto indent Ada, 226 C chars, 225 C paren, 226 comments, 224 comments with multiple lines, 224 implicit, 224 overview, 36 two levels, 224 Auto Indent menu item, 65 auto-complete best match, 52, 61 configuration, 51 enable, 61 first match, 52, 61 function prototypes, 52 keyboard shortcuts, 416 maximum match, 377 maximum number of objects, 61 minimum string, 52 minimum string length, 61 auto-detect version control type, 186 auto-populate user list, 284 AutoCompleteList command, 377 AutoCompletePrototypeList command, 377 AutoConnection configuration option, 202 AutoDWARF2dbo configuration option, 210 AutoEditErrors configuration option, 201 AutoEditWarnings configuration option, 201 AutoGrabHeadFiles configuration option, 229 AutoIndent command, 65, 380 AutoIndentImplicit command, 380 AutoIndentOrTab command, 380 automatic checkout, 113 ClearCase, 191 configuration option, 191, 193 custom version control, 191 MVC (MULTI Version Control), 191 PVCS, 191 RCS, 191 SourceSafe, 191 Automatically dereference pointers configuration option, 207 Automatically open connection files in opened.gpj files configuration option, 202 Automatically open editor on errors configuration option, 201 Automatically save User Methods changes configuration option, 233 Automatically save changed connection files configuration option, 232 Automatically share target connections configuration option, 202 Automatically verify ROM image is up-to-date configuration option, 209 AutoSaveConnectionsInFiles configuration option, 232 AutoSaveUserConnections configuration option, 233 AutoStabs2dbo configuration option, 210 AutoVerifyROMSections configuration option, 209 Available License Managers license administration option, 264 B background color configuration option, 236 BackgroundMode configuration option, 204 422 MULTI: Editing Files and Configuring the IDE

Index BackISearch command, 376 Backspace command, 370 key, 370, 413 Backward radio button, 28 bdotcolor color configuration option, 237 beep command, 381 configuration option, 184 best match auto-completion, 52 binary files editing, 80 under MVC, 115 bindings key, 408 mouse, 418 BlackWhite configuration option, 236 BlinkingCursor configuration option, 197 Block menu, 65 BlockStep configuration option, 207 Both Numbers configuration option, 204 BpSyntaxChecking configuration option, 207 braces, curly {}, 62 brackets, square [], 62 Break Dot configuration option, 237 BreakColor color configuration option, 237 breakpoints configuration, 215 overwrite scripts, 232 save between sessions, 232 warning, 221 Browse References menu item, 19, 24 Browse window, 24 global scope configuration, 215 browser colors, 219 Browser command configuration option, 196 Browser supports -remote command line option configuration option, 197 buffers, 383 copying to, 368 cutting to, 368 pasting from, 369 BugReport command, 390 Build Details window errors, 201 progress, 201 warnings, 201 Build Files configuration option, 234 Build Files Directory configuration option, 234 Builder colors, 239 configuration options, 201 tab, 201 BuilderPosition configuration option (deprecated), 240 BuildFileSet configuration option, 234 Button Font configuration option, 187 buttons attaching a menu to, 166 configuring, 164, 214 displaying icons instead of text for, 183 toolbar, 17 C C chars aligned like * in comments configuration option, 225 -c MVC option, 117 C paren indent mode configuration option, 226 case-sensitive expressions, 214 language setting, 49 searches, 184 searching, 28, 31 change indicator, 19 Change Network Settings license administration option, 269 Green Hills Software, Inc. 423

Index change password, license device, 284 character color configuration option, 238 characters, inserting in Editor, 174 Check for New License license administration option, 267, 269 Check In All menu item, 70 Check syntax of breakpoints when they are set configuration option, 207 CheckIn command, 70, 385 configuration option, 193 menu item, 70 checkout create, 139 files under MVC, 116 modify, 140 status, 134 CheckOut command, 70, 386 configuration option, 192 menu item, 70 Checkout Browser Add menu item, 137 Check In menu item, 137 Check Out menu item, 137 Checkout Editor menu item, 135 Close menu item, 135 Commit menu item, 137 Config menu, 136 Conflicts menu item, 136 Delete menu item, 137 Diff with Local Version menu item, 136 Diff with Remote Version menu item, 136 Edit menu item, 136 File menu, 135 Filename field, 134 Full Rescan menu item, 135 Halt Scan / Update menu item, 135 Local Changes menu item, 136 Local Rescan menu item, 135 Local Version field, 135 Locked By field, 135 menus, 135 No changes menu item, 136 Not under VC menu item, 136 overview, 130 Place Under VC menu item, 137 Remote Changes menu item, 136 Rescan menu item, 137 Revert to Repository menu item, 137 Roots field, 131 Show History menu item, 137 Show menu, 136 starting, 131 Status field, 134 Tag field, 135 Unlock menu item, 137 Update Checkout menu item, 135 Update menu item, 137 Checkout Editor menu item, 135 using, 139 ci MVC command, 399 CID, see client ID cio MVC command, 399 Clear Default Configuration, 159 menu item, 72 ClearButtons configuration option, 214 ClearCase version control automatic checkout, 191 configuration, 110, 186 integration, 120 path, 191 ClearConfig command, 72, 388 ClearEditButtons configuration option, 229 ClearKeys configuration option, 197 ClearMenus configuration option, 197 ClearMice configuration option, 197 ClickPause configuration option, 198 424 MULTI: Editing Files and Configuring the IDE

Index client configuration, 292 GHS_LMDEBUG, 292 GHS_LMHOST, 292 GHS_LMPORT, 292 GHS_LMWHICH, 294 specify license device, 292 specify license manger type, 294 TCP port, 292 client ID, 331 clipboard copying to, 368 cutting to, 59, 368 keyboard shortcuts, 411 manager, 184 pasting from, 369 ClipManLaunch configuration option, 184 close buttons, displaying on toolbar, 184 Close command, 58, 362 Close Dependent Windows menu item, 63 Close Editor menu item, 58 Close File menu item, 58 CloseButtonOnTitlebar configuration option, 184 CloseDependentWindows command, 63, 394 CmdPrompt2Wnd command (deprecated), 395 co MVC command, 399 code, indenting, 35 collection files, 330 Color C++ comments in C configuration option, 238 color chooser, 239 Coloring for multiple debuggers configuration option, 204 Colors choosing, 239 configuration options, 235 tab, 235 ColorSyntax configuration option, 237 Column command, 62, 358 menu item, 62 column of text copying, 38 cutting, 39 pasting, 39 command line configuration file, 161 script file, 160 to 161 Command line arguments configuration option, 189 Command pane height in lines configuration option, 205 Command pane prompt configuration option, 205 Command to Window menu item, 68 commands!, 382 (quotation marks-double), 381 Abort, 366 About, 74, 390 AcceptAcString, 377 AllowAutoCheckout, 71, 385 AlterLocation (deprecated), 395 AlterMode, 391 any_string, 381 AppendTagFile, 35, 69, 384 AutoCompleteList, 377 AutoCompletePrototypeList, 377 AutoIndent, 65, 380 AutoIndentImplicit, 380 AutoIndentOrTab, 380 BackISearch, 376 Backspace, 370 Beep, 381 binding, 358 BugReport, 390 CheckIn, 70, 385 CheckOut, 70, 386 Green Hills Software, Inc. 425

Index ClearConfig, 72, 388 Close, 58, 362 CloseDependentWindows, 63 CmdPrompt2Wnd (deprecated), 395 Column, 62, 358 CommandToWindow, 68, 382 CommentBlock, 65, 378 ConfigOptions, 72, 388 configure, 155, 388 ContinueSelection, 372, 374 to 375 Copy, 60, 368 CreateLog (deprecated), 395 Cut, 59, 368 CyclePush, 62, 363 CyclePushBack, 62, 363 Date, 67, 381 debugbutton, 164 DebugButton, 214 Delete, 60, 370 DeleteUnconfirmedAcString, 378 DiffFiles, 69, 382 Discard, 70, 386 Done, 58, 363 Down, 358 DownSome, 359 editbutton, 164 EditLine, 359 Editor, 358 EditorFlags, 61, 363 EditTag (deprecated), 395 EnterInsertMode, 391 EOF, 359 EOL, 359 ErrorOrTag, 384 ExecuteCmd, 68, 382 FileProperties, 62, 363 FlashCursor, 359 GenerateXrefInfo, 63, 394 Goto, 359 Grep, 67, 382 Help, 73, 390 Identify, 74, 390 identifying for keys or mouse clicks, 390 if, 370 to 371 Indent, 65, 380 InsertFile, 66, 381 InsertNewline, 381 ISearch, 376 issuing manually, 358 JoinLines, 66, 379 LanguageOptions, 61, 394 Left, 360 LeftSome, 360 LeftU, 360 LineD, 360 LoadConfigFromFile, 73, 388 LoadFile, 363 LoadFileWithNewEditor, 56, 364 LowerCaseBlock, 66, 379 Make, 67, 382 MergeFiles, 69, 383 Minibuffer, 69, 383 MoveToEndOfSelection..., 378 MultiBar, 67, 394 MvcBuffer, 386 NewTag, 384 NextAutoCompleteString, 378 NextWindow, 364 NoSelection, 369, 372 Notepad, 68, 383 OpenFile, 56, 364 OpenTag, 385 OpenText (deprecated), 395 PageDown, 360 PageSetup, 57, 364 PageUp, 360 Paste, 60, 369 PlaceUnderVC, 71, 386 PrevAutoCompleteString, 378 PreventAutoCheckout, 71, 386 Print, 57, 364 426 MULTI: Editing Files and Configuring the IDE

Index QuerySaveAll, 57, 365 QuerySaveCheckinAll, 70, 386 QuerySaveComments, 365 Quit, 58, 365 quotation marks-double ( ), 381 Quote, 392 RectCopy1, 66, 369 RectCut1, 66, 369 RectPaste1, 66, 370 Redo, 59, 366 RegenerateXrefInfo, 63, 394 RepeatLast, 59, 366 ResetTags, 69, 385 Return, 360 ReverseWord, 361 Revert, 57, 365 RevertDate, 72, 386 RevertHistory, 71, 386 RevertToBackup, 57, 387 RevertVersion, 72, 387 Right, 361 RightD, 361 RightSome, 361 Save, 56, 365 SaveAll, 365 SaveAllLog, 365 SaveAs, 57, 366 SaveConfig, 72, 388 SaveConfigToFile, 72, 388 Search, 60, 376 SecondarySelectAll, 372 SecondarySelectionAdjust, 372 SecondarySelectionExtend, 372 SecondarySelectionReplace, 372 SecondarySelectionReplaceClip, 372 SecondarySelectionStart, 372 SecondarySelectLine, 372 SecondarySelectWord, 372 SelectAll, 60, 372 SelectionAdjust, 372 SelectionDrop, 389 SelectionExtend, 372 SelectionGrab, 372 SelectionStart, 373 SelectionStartDrag, 389 SelectionStartDragAdd, 390 SelectLanguage, 61, 395 SelectLine, 66, 373 SelectMatch, 373 SelectToLines, 371, 373 SelectToMatch, 62, 373 SelectWord, 373 Shell, 383 ShowContextMenu, 366 ShowHistory, 71, 387 ShowLastEdit, 71, 387 ShowView, 387 SOF, 361 SOL, 361 SOL0, 362 SOL1, 361 SOLSecondary, 373 SpecialTag, 385 StopSearch, 376 strings of, 383 Tab, 381 ToggleErrorView, 381 ToggleReadOnly, 63, 395 TruncateSearch, 376 UnCommentBlock, 65, 379 Undo, 59, 367 Unindent, 65, 380 Up, 362 UpperCaseBlock, 65, 379 UpSome, 362 UserName, 381 VCBuffer, 387 WGUtils, 69, 383 Word, 362 CommandToWindow command, 68, 382 Comment menu item, 19, 65 CommentBlock command, 65, 378 Green Hills Software, Inc. 427

Index comments, 37 color configuration, 238 inserting in code, 37 Comments stick flush left configuration option, 225 commuter license, 287 comparing files, 44 Compatibility configuration option, 195 computer-locked license, 246 Config menu, 45, 72 config.gmb workspace configuration file, 88 ConfigOptions command, 72, 388 configuration alternate editor, 188 commands, see configuration options options, 182 See also configuration options configuration (.cfg) files, 156 to 157 format, 156 loading, 158 user, 157 configuration file global, 158 user, 158 configuration options AbortPlaybackFileOnSeri..., 213 Ada paren mode, 226 AdaContinuationSize, 228 AdaIndentSize, 228 AiAdaParenIndentMode, 226 AiCharsLikeStarInComment, 225 AiCommentsStayFlushLeft, 225 AiImplicitIndent, 224 AiImplicitIndentInComments, 224 AiParenIndentMode, 226 AiSwitchInTwo, 224 AiTouchComments, 224 Allow beeping, 184 AllowExecutionIn..., 213 AllowExecutionInBpCommand, 213 AllowMiddleClick, 222 AllowOvertypeMode, 223 AlwaysUseMeToFixBuildErrors, 201 Application, 195 Ask before halting to set breakpoint, 203 assembly color, 237 AssertionSyntaxChecking, 213 AttemptToShowOldVersion..., 213 AutoConnection, 202 AutoDWARF2dbo, 210 AutoEditErrors, 201 AutoEditWarnings, 201 AutoGrabHeadFiles, 229 Automatic Checkout, 191, 193 Automatically dereference pointers, 207 Automatically open editor on errors, 201 Automatically save User Methods changes, 233 Automatically save changed connection files, 232 Automatically share target connections, 202 AutoOpenConnectionFiles..., 202 AutoSaveConnectionsInFiles, 232 AutoSaveUserConnections, 233 AutoStabs2dbo, 210 AutoVerifyROMSections, 209 background color, 236 BackgroundMode, 204 bdotcolor color, 237 beep, 184 BlackWhite, 236 BlinkingCursor, 197 BlockStep, 207 BpSyntaxChecking, 207 Break Dot color, 237 BreakColor color, 237 BrowserCommand, 196 428 MULTI: Editing Files and Configuring the IDE

Index BrowserUseRemote, 197 Builder, 201 BuilderPosition (deprecated), 240 BuildFilesDir, 234 BuildFileSet, 234 ButtonFont, 187 C chars aligned like * in comments, 225 C paren indent mode, 226 character color, 238 Check In, 193 Check Out, 192 Check syntax of breakpoints when they are set, 207 ClearButtons, 214 ClearEditButtons, 229 clearing, 159 ClearKeys, 197 ClearMenus, 197 ClearMice, 197 ClickPause, 198 ClipManLaunch, 184 CloseButtonOnTitlebar, 184 Color C++ comments in C, 238 Coloring for multiple debuggers, 204 colors, 235 ColorSyntax, 237 Command line arguments, 189 Command pane height in lines, 205 Command pane prompt, 205 comment color, 238 Comments stick flush left, 225 Compatibility, 195 Configure Debugger Buttons, 206 Configure Editor, 185 Configure Editor Buttons, 224 Configure Version Control, 186, 189 ConfigureFile, 198 Connected targets foreground color, 239 ContainerSizeIncrement, 212 Context Arrow color, 237 Continue running script files on error, 207 ContinuePlaybackFileOnError, 207 Control Area color, 236 CppCommentsInC, 238 create, 193 Create backup files when saving, 222 Criteria to decide if a task is in a group, 212 Ctrl+cursor jump size, 223 cursor blinking, 197 customized color, 238 CWindLines, 205 DeadCode color, 238 Debug server timeout in seconds, 211 DebugButtonsLoc, 205 Debugger, 203 Debugger child windows, 205 Debugger Colors, 237 DebugServersDir, 234 DebugServerSet, 234 DeleteDeadTaskFromGroup, 209 DerefPointer, 207 DiffHighlight color, 239 Diffview Colors, 239 Directory memory, 233 Disable activation follows focus, 195 Disable all grouping, 194 Disable all window management, 194 Disable geometry caching, 195 Disable grouping in KDE, 195 DisableCarriageReturnRepeat, 208 DisAsmStyle, 198 Display all numbers/characters as hex, 203 Display close (x) buttons, 184 Display typedef type instead of basic type, 208 DisplayConnectionType..., 202 Do Not Color, 204 Green Hills Software, Inc. 429

Index Docking Distance, 194 Docks to, 195 documentation color, 239 Does not dock to, 196 DontUseVC (deprecated), 240 DownloadWindow, 214 DragAndDrop, 223 EchoCommandsFrom..., 214 EditButton, 230 EditHeight, 227 EditIncrFrequency, 228 EditIndent, 223 Editor, 185, 189 EditorBackups, 222 EditParenMatch, 230 EditPrint2Column, 227 EditSomeSize, 223 EditWidth, 227 Emacs editor, 185 Enter spaces in place of tabs, 223 ExactCase, 184 ExecFilesDir, 234 ExecFileSet, 234 Executables/Binaries:, 234 ExprCaseSensitivity, 214 ExtEditor_Choice, 185 File line numbers, 237 file relative line numbers, 204 FileRelLineBG, 237 FillParagraphColumn, 229 FirstPosition, 206 font, 187 foreground color, 236 FormatStringMaxDepth, 214 FormatStringMaxLength, 215 Generate auto-recover file every... seconds, 228 GenFilesDir, 234 GenFileSet, 234 Geometry, 215 Get, 192 Global Colors, 236 GlobalHeading, 215 GotoHitsBpAtTargetAddress, 215 GrabTimeout, 198 header color, 239 Help, 188 HexMode, 203 History, 215 Horizontal scroll bar, 187 hovervalues, 204 icongeometry, 216 iconifiedbuttons, 183 iconify, 199 Ignore/Run Away, 211 ignoremotion, 199 Implicit auto indent, 224 Implicit auto indent in comments, 224 Increment to maximum container size, 212 Indent comments when indenting multiple lines, 224 Indent size, 223 Initial height in characters, 227 Initial position (XxY), 206 Initial width in characters, 227 interleavedoutput, 216 Interval to refresh Task Manager, 211 KanjiFont, 188 KeepLoaders, 216 keybind, 169, 188 Keys, 188 keyword color, 238 Launch clipboard manager, 184 LeaveTypedef, 208 Legacy Builder Colors, 239 Library Build color, 239 library color, 239 LineNumberMode, 204 LinesNonOverlapped, 216 430 MULTI: Editing Files and Configuring the IDE

Index Load Color Scheme, 235 Location of VC binary, 191 LongjmpStepMode, 211 LowBandWidthToVC (deprecated), 240 Main Font, 187 Match exact case in searches, 184 MaxContainerDisplaySize, 212 Maximize Step Speed, 211 Maximum initial size (WxH), 206 MaxViewSize, 206 MaxWindowSize (deprecated), 241 menu command, 166 MenuDelay, 199 Menus, 188 Method, 196 Minimize Temp Stops, 211 Minimum initial size (WxH), 206 MinViewSize, 206 MinWindowSize (deprecated), 241 moon, 187 More Color Options, 238 More Debugger Options, 206 More Editor Options, 224 Mouse, 188 mouse command, 169 MULTI Editor, 185 MultiIconPreName, 199 MultiWinPreName, 199 No Number, 204 NoBuild color, 239 NoDecoration, 200 number color, 238 object color, 239 On warnings, 201 Online Help Options, 196 OnlineHelpMethod, 188, 196 Open build details window, 201 OpenFilesInNewBuffers, 222 Oracle Help for Java, 196 other color, 239 other editor, 185, 188 OverwriteScriptBreakpoints, 232 PaddedHex, 216 Path to Editor, 189 Per File Settings Defaults, 228 per session, 231 Phase of moon in scroll bar box, 187 PointerColor color, 237 Position of buttons, 205 Previous Version, 193 Print 2 columns in landscape, 227 PrintCommand, 185 PrintReturnValues, 208 Procedure line numbers, 237 procedure relative line numbers, 204 ProcQualifiedLocalimplies..., 216 ProcRelativeLines, 203 ProcRelLineBG, 237 program color, 239 prompt, 205 PromptQuitDebugger, 212 QuietToCmd, 217 RecordCommented..., 217 Remember last connect command used for process, 232 RememberBreakpoints, 232 RememberDirs, 233 RememberWindowPositions, 183 Repeat last command on return key in non-gui (-nodisplay) mode, 208 RequestOSAPackage, 209 Restored breakpoints overwrite breakpoints set by scripts, 232 Reuse Data Explorer, 210 Reuse editor windows, 222 Root of checkout, 191 s (step) and n (next) are blocking by default, 207 Save arguments between sessions, 231 Green Hills Software, Inc. 431

Index Save data explorers between sessions, 231 Save window positions and sizes, 183 SaveCommandHistory, 231 SaveDebuggerWindowPos, 231 SaveDebugServer, 232 SaveRunArguments, 231 SaveViewWindows, 231 saving, 157 script color, 239 ScrollBarWidth, 187 ScrollHLocation, 187 ScrollLocation, 186 SDLNameDisplay, 217 Selection color, 236 SelectionMarginWidth, 228 ServerPollinterval, 211 ServerTimeout, 211 SetBPAtAdrinitWhenExecing, 217 setting, 154 with configure command, 155 with Options dialog box, 155 SharedSymbols, 217 ShellConfirm, 217 Show History, 193 Show locations of variables for print command, 208 Show tooltips, 184 Show variable values in tooltips, 204 ShowAddress, 208 ShowGrepCommand, 200 ShowPosInNoDisplayMode, 208 ShowProgress, 201 ShowTargetWindows, 209 ShowTraceOSAWindows, 218 ShowVersionControl, 235 SilentlyReloadSymbols, 218 SingleLibrary color, 239 source color, 239 SourceFilesDir, 234 SourceFileSet, 234 SourceSafe database location, 191 Spaces per indent for Ada, 228 StartedConnectionFG color, 239 Status message color, 237 Stepping over C++ exception or longjmp, 211 StepToBpIgnores..., 218 string color, 238 SubProgram color, 239 SubProject color, 239 Switch bodies indented two instead of one, 224 synchronous, 200 Syntax Color Settings, 238 Syntax Coloring, 237 TabsAreSpaces, 223 TabSize, 223 TaskMatchCriteria, 212 TBtypeBG, 219 TBtypeFG, 219 TempFileDir, 227 tooltips, 184 TraceAlwaysOn, 221 Translate DWARF debugging information, 210 Translate stabs debugging information, 210 Two color mode, 236 Un Check Out, 192 Under VC, 192 UnifyViewWindows, 210 Use Color Offsets, 204 Use icons for buttons, 183 Use MULTI Editor on errors, 201 Use Preset Colors, 204 Use procedure relative line number (vs. file relative), 203 Use XTerm, 189 UseFileRelLineBG, 237 UseProcRelLineBG, 237 User Directories, 234 432 MULTI: Editing Files and Configuring the IDE

Index UseWMHinting, 200 UseWMPositioning, 200 vc_ci, 193 vc_co, 192 vc_create, 193 vc_get, 192 vc_prevver, 193 vc_show, 193 vc_unco, 192 vc_undervc, 192 vc_who, 193 VerifyHalt, 203 Versctrl_ClearCaseAuto..., 191 Versctrl_ClearCasePath, 191 Versctrl_CustomAutoCheckout, 191, 193 Versctrl_CVSPath, 191 Versctrl_MVCAutoCheckout, 191 Versctrl_PVCSAutoCheckout, 191 Versctrl_RCSAutoCheckout, 191 Versctrl_SourceSafeAuto..., 191 Versctrl_SourceSafeDatabase, 191 Versctrl_SourceSafePath, 191 Versctrl_SourceSafeRoot, 191 Version Control, 186 VersionControlType, 186 Vertical scroll bar, 186 Vi editor, 185 ViewDef, 220 ViewsAreChildrenMode, 205 ViewUnsignedCharAsInt, 204 ViewWindowDefaultToTree, 221 WarnOnBpReplacement, 221 WarnOnCmdAdrLine..., 221 WarpPointer, 185 Web Browser, 196 Who, 193 Window, 195 Window Docking, 188, 194 WordWrap, 228 WrapColumn, 228 Wrapindent, 229 XTerm, 189 configure at startup, 158 buttons, 164, 214 colors, 239 command, 155, 388 during a session, 158 file extensions, 177 indents, 36 MULTI, 72, 154, 157 See also configuration options the MULTI Editor, 45 Configure MULTI License Administrator, 264, 268 Configure Debugger Buttons configuration option, 206 Configure Editor Buttons configuration option, 224 Configure Editor configuration option, 185, 188 Configure Server on Local Machine license administration option, 266 Configure Version Control configuration option, 186, 189 ConfigureFile configuration option, 198 Connected targets configuration option, 239 connection chooser, display connection type, 202 connection method, save, 232 ContainerSizeIncrement configuration option, 212 Context Arrow configuration option, 237 context-sensitive help, 8 Continue running script files on error configuration option, 207 ContinuePlaybackFileOnError configuration option, 207 Green Hills Software, Inc. 433

Index ContinueSelection command, 372, 374 to 375 Control Panel, license server startup, 300 ControlColor color configuration option, 236 conventions, typographical, 10 copy column of text, 38 keyboard shortcuts, 411 Copy command, 60, 368 key (UNIX), 368, 412 menu item, 19, 60 Copy1, Copy2, Copy3, Copy4 commands, 368 copyfile MVC command, 399 CppCommentsInC configuration option, 238 create Debugger command, 116 MVC command, 399 Create configuration option, 193 Create backup files when saving configuration option, 222 Create Checkout, 139 CreateLog command (deprecated), 395 Criteria to decide if a task is in a group configuration option, 212 cross reference, 22 Ctrl key, 390 Ctrl + keyboard shortcut, 66 Ctrl + * keyboard shortcut, 65, 148, 378 Ctrl +. keyboard shortcut, 59, 366, 417 Ctrl + keyboard shortcut, 416 Ctrl + + keyboard shortcut, 65 Ctrl + keyboard shortcut, 379 Ctrl + / keyboard shortcut, 416 Ctrl + ; keyboard shortcut, 36 Ctrl + [ keyboard shortcut, 416 Ctrl + \ keyboard shortcut, 392 Ctrl + ] keyboard shortcut, 416 Ctrl + ^ keyboard shortcut, 409 Ctrl + + keyboard shortcut, 379 Ctrl + \ keyboard shortcut, 417 Ctrl + 0 (zero) keyboard shortcut, 409 Ctrl+cursor jump size configuration option, 223 Ctrl + 0 (zero) keyboard shortcut, 362 Ctrl + 2 keyboard shortcut, 36, 65, 380 Ctrl + A keyboard shortcut, 60, 372, 415 Ctrl + B keyboard shortcut, 26, 376, 415 Ctrl + Backspace keyboard shortcut, 370, 413 Ctrl + C keyboard shortcut, 60, 368, 412 Ctrl + Copy keyboard shortcut (UNIX), 368, 412 Ctrl + Cut keyboard shortcut (UNIX), 368, 411 Ctrl + D keyboard shortcut, 60, 370, 413 Ctrl + Delete keyboard shortcut, 371, 413 Ctrl + DownArrow keyboard shortcut, 359, 408 Ctrl + E keyboard shortcut, 359, 409 Ctrl + End keyboard shortcut, 359, 409 Ctrl + Enter keyboard shortcut, 409 Ctrl + F keyboard shortcut, 26, 60, 376, 415 Ctrl + G keyboard shortcut, 34, 60, 359, 410 Ctrl + H keyboard shortcut, 360, 409 Ctrl + Home keyboard shortcut, 361, 409 Ctrl + i keyboard shortcut, 65, 380, 416 Ctrl + J keyboard shortcut, 358, 408 Ctrl + K keyboard shortcut, 362, 408 Ctrl + L keyboard shortcut, 361, 409 Ctrl + LeftArrow keyboard shortcut, 361, 409 Ctrl + Left-click, 390, 419 Ctrl + M keyboard shortcut, 66, 371, 413 Ctrl + N keyboard shortcut, 56, 364, 410 434 MULTI: Editing Files and Configuring the IDE

Index Ctrl + O keyboard shortcut, 56, 148, 364, 410 Ctrl + P keyboard shortcut, 66, 379, 413 Ctrl + Paste keyboard shortcut (UNIX), 369, 412 Ctrl + Q keyboard shortcut, 58, 148, 362, 411 Ctrl + RightArrow keyboard shortcut, 362, 409 Ctrl + [Right-click] mouse action, 420 Ctrl + S keyboard shortcut, 56, 365, 410 Ctrl + T keyboard shortcut, 384, 418 Ctrl + Tab keyboard shortcut, 62, 363, 410 Ctrl + U keyboard shortcut, 370, 413 Ctrl + UpArrow keyboard shortcut, 362, 408 Ctrl + V keyboard shortcut, 60, 369 to 370, 412 Ctrl + W keyboard shortcut, 361, 409 Ctrl + X keyboard shortcut, 59, 368, 411 Ctrl + Y keyboard shortcut, 59, 366, 411 Ctrl + Z keyboard shortcut, 59, 367, 411 Ctrl + Shift + A keyboard shortcut, 418 Ctrl + Shift + B keyboard shortcut, 360, 408, 415 Ctrl + Shift + C keyboard shortcut, 368, 412 Ctrl + Shift + Copy keyboard shortcut (UNIX), 368, 412 Ctrl + Shift + Cut keyboard shortcut (UNIX), 368, 411 Ctrl + Shift + DownArrow keyboard shortcut, 374, 414 Ctrl + Shift + E keyboard shortcut, 374 Ctrl + Shift + Enter keyboard shortcut, 374, 415 Ctrl + Shift + F keyboard shortcut, 27, 60, 376 Ctrl + Shift + G keyboard shortcut, 33, 60, 359 Ctrl + Shift + H keyboard shortcut, 387, 417 Ctrl + Shift + i keyboard shortcut, 65, 380, 417 Ctrl + Shift + L keyboard shortcut, 387, 417 Ctrl + Shift + LeftArrow keyboard shortcut, 375, 414 Ctrl + Shift + N keyboard shortcut, 360, 408 Ctrl + Shift + O, 148, 364, 410 Ctrl + Shift + P keyboard shortcut, 58 Ctrl + Shift + PageDown keyboard shortcut, 374, 414 Ctrl + Shift + Paste keyboard shortcut (UNIX), 369 Ctrl + Shift + Q keyboard shortcut, 58, 363, 410 Ctrl + Shift + R keyboard shortcut, 381, 418 Ctrl + Shift + RightArrow keyboard shortcut, 375, 414 Ctrl + Shift + [Right-click] mouse action, 420 Ctrl + Shift + S keyboard shortcut, 57, 366, 410 Ctrl + Shift + T keyboard shortcut, 369, 418 Ctrl + Shift + Tab keyboard shortcut, 62, 363, 410 Ctrl + Shift + U keyboard shortcut, 65, 379 Ctrl + Shift + UpArrow keyboard shortcut, 375, 414 Ctrl + Shift + V keyboard shortcut, 369, 412 Ctrl + Shift + X keyboard shortcut, 368, 411 curly braces {}, matching, 62 cursor movement beginning of next line, 360 columns, 62 Green Hills Software, Inc. 435

Index flashing to current line, 62 keyboard shortcuts, 408 when dialog box opens, 185 cursor position, 19 Custom Configuration dialog box, 191 custom version control automatic checkout, 191 configuration, 110, 186 customize GUI, 162 icons, 165 keys, 169 menus, 166 mouse clicks, 169 toolbar buttons, 164 customized color configuration option, 238 cut column of text, 39 keyboard shortcuts, 411 Cut command, 59, 368 key (UNIX), 368, 411 menu item, 19, 59 Cut Lines menu item, 66 Cut1, Cut2, Cut3, Cut4 commands, 368 CVS version control configuration, 109, 186 features, 138 integration, 121, 138 path, 191 CWindLines configuration option, 205 CyclePush command, 62, 363 CyclePushBack command, 62, 363 D -d MVC option, 117, 119 -D MVC option, 120 Data Explorer nested structs, 214 position, 206 save between sessions, 231 value length, 215 window format, 220 window overlap, 216 window size, 206 database location, SourceSafe, 191 Date command, 67, 381 DeadCode color configuration option, 238 Debug Level license administration option, 261 Debug server timeout in seconds configuration option, 211 Debug Servers configuration option, 234 debugbutton command, 164 DebugButton command, 214 DebugButtonsLoc configuration option, 205 Debugger button location, 205 colors, 237 commands, 203 See also Debugger commands configuration options, 203 history, 215 panes, 216 save window position, 231 tab, 203 window size and position, 215 Debugger child windows configuration option, 205 Debugger Colors configuration option, 237 Debugger commands -> (minus greater than) menu command, 168 ConfigureFile, 198 create command, 116 keybind, 188 keybind command, 169 mouse command, 169 436 MULTI: Editing Files and Configuring the IDE

Index DebugServersDir configuration option, 234 DebugServerSet configuration option, 234 Default Gateway license administration option, 268 define new language, 51 deledit MVC command, 399 Delete command, 60, 370 key, 370, 413 keyboard shortcuts, 412 menu item, 60 Delete dead tasks from group configuration option, 209 deletefile MVC command, 399 DeleteUnconfirmedAcString command, 378 deleting text, 60 delget MVC command, 399 delta MVC command, 399 DerefPointer configuration option, 207 device, license manager, 276 Diagnose License Problems license administration option, 265 dialog boxes cursor movement in, 185 diff MVC command, 400 Diff Viewer opening, 144 overview, 144 DiffFiles command, 69, 382 menu item, 44, 69, 144 DiffHighlight color configuration option, 239 Diffview Colors configuration option, 239 Directory memory configuration option, 233 Disable activation follows focus configuration option, 195 Disable all grouping configuration option, 194 Disable all window management configuration option, 194 Disable geometry caching configuration option, 195 Disable grouping in KDE configuration option, 195 disable version control, 108, 186 DisableCarriageReturnRepeat configuration option, 208 DisAsmStyle configuration option, 198 Discard Changes menu item, 70 Discard command, 70, 386 disp MVC command, 400 Display all numbers/characters as hex configuration option, 203 Display close (x) buttons configuration option, 184 Display connection type in Connection Chooser configuration option, 202 Display typedef type instead of basic type configuration option, 208 DNS delays, 350 Do Not Color configuration option, 204 Docking Distance configuration option, 194 Docks to configuration option, 195 document set, 6 documentation color configuration option, 239 Does not dock to configuration option, 196 Done command, 58, 363 dongle, 254 to 255 driver software, 254 installation, 254 locked license, 246 DontUseVC configuration option (deprecated), 240 [Double Left-click] mouse action, 419 Green Hills Software, Inc. 437

Index [Double Middle-click] mouse action, 419 Down command, 358 DownArrow key, 358, 408 DownloadWindow configuration option, 214 DownSome command, 359 size of, 223 Drag and drop text editing configuration option, 223 E EchoCommandsFrom... configuration option, 214 Edit menu, 59 edit MVC command, 399 editbutton command, 164 EditButton configuration option, 230 EditHeight configuration option, 227 EditIncrFrequency configuration option, 228 EditIndent configuration option, 223 EditLine command, 359 Editor auto recover, 228 commands, 358 See also commands configuration option, 185 main window, picture of, 16 margin width, 228 merging three files, 42 merging two files, 41 specifying an alternate, 404 Toolbar, 17 window size, 227 Editor configuration option, 189 Editor Help menu item, 73 Editor menus Block menu, 65 Config menu, 72 Edit menu, 59 File menu, 56 Help menu, 73 Tools menu, 67 Version menu, 70 View menu, 61 Windows menu, 73 EditorBackups configuration option, 222 EditorFlags command, 61, 363 EditParenMatch configuration option, 230 EditPrint2Column configuration option, 227 EditSomeSize configuration option, 223 EditTag command (deprecated), 395 EditWidth configuration option, 227 Either radio button, 28 ElanLM, 314 to 315 automatic startup for Windows, 316 configuration, 261 installation, 260 ElanLM license administration commands lic_log_summary, 329, 338 elmadmin command, 329 options, 329 to 332 overview, 329 elmalert command, 332 options, 333 to 334 overview, 332 elmrpt command, 334 options, 335 to 336 overview, 334 elmusage command, 337 options, 337 overview, 337 elmver command, 337 438 MULTI: Editing Files and Configuring the IDE

Index options, 337 to 338 overview, 337 emacs editor, 189 command line arguments, 189 path, 189 use XTerm, 189 Emacs editor configuration option, 185 End key, 359, 409, 416 EndsLine check box, 29 EndsWord check box, 29 Enter key, 381, 418 Enter spaces in place of tabs configuration option, 223 EnterInsertMode command, 391 environment variables ENVVAR, 271 GHS_LM_..._RETRY_TIME, 270 GHS_LM_CONNECTION_RETRY, 270 GHS_LM_EXPECTED_MAC, 272 GHS_LMDELAY, 272 GHS_LMHOST, 271 GHS_LMINFO_DIR, 271 GHS_LMPORT, 272 GHS_LMQ_GIVEUP, 273 GHS_LMQ_METHOD, 273 GHS_LMQ_POLL, 273 GHS_LMREFRESH, 271 GHS_LMSHOW, 271 GHS_LMWHICH, 271 ENVVAR environment variable, 271 EOF command, 359 EOL command, 359 ErrorOrTag command, 384 errors and warnings always view in MULTI Editor, 201 Esc key, 62, 359, 366, 376, 415, 418 Evaluation License, 265 ExactCase configuration option, 184 ExecFilesDir configuration option, 234 ExecFileSet configuration option, 234 Executables/Binaries Directory configuration option, 234 Execute Editor Commands dialog box, 358, 383 menu item, 69 Execute Shell Command menu item, 68 ExecuteCmd command, 68, 382 Exit All menu item, 58 ExprCaseSensitivity configuration option, 214 ExtEditor_Choice configuration option, 185 ExtEditor_Choice Emacs configuration option, 189 ExtEditor_Choice Other configuration option, 189 ExtEditor_Choice Vi configuration option, 189 ExtEditor_EmacsArgumentFormat configuration option, 189 ExtEditor_EmacsPath configuration option, 189 ExtEditor_EmacsUseXTerm configuration option, 189 ExtEditor_OtherArgumentFormat configuration option, 189 ExtEditor_OtherPath configuration option, 189 ExtEditor_OtherUseXTerm configuration option, 189 ExtEditor_ViArgumentFormat configuration option, 189 ExtEditor_ViPath configuration option, 189 ExtEditor_ViUseXTerm configuration option, 189 F -F MVC option, 401 F1 key, 73, 390 Green Hills Software, Inc. 439

Index F1 key, for help, 8 fc MVC command, 400 file chooser directory memory, 233 showing version control information, 235 user directories, 234 file chooser dialog box (UNIX), 74 file extensions, 46 configuring, 177 File line number configuration option, 237 File menu, 56 File Number configuration option, 204 File Operations shortcut menu, 136 FileProperties command, 62, 363 menu item, 62 FileRelLineBG configuration option, 237 files checking in, 70 checking in all, 70 checking out, 70 checkout automatically, 71 color in browser, 219 comparing, 44 differences between, 382 discarding changes, 70 inserting, 66 keyboard shortcuts, 410 merging, 40 merging three into one, 42 merging two into one, 41 opening from the Builder, 21 opening from the Debugger, 21 switching read/write modes, 63, 395 version control, 71 Fill Paragraph Column configuration option, 229 Find button, 28 key (UNIX), 376, 415 menu item, 27, 60 find licenses, 307 Find then Replace button, 28 find_ghs_licenses license command, 303, 307 first match auto-completion, 52 FirstPosition configuration option, 206 FlashCursor command, 359 menu item, 62 floating license, 246 to 247 floating point number form, 50 font configuration option, 187 foreground color configuration option, 236 FormatStringMaxDepth configuration option, 214 FormatStringMaxLength configuration option, 215 Forward radio button, 28 Full Rescan, 132 function prototypes, 23 auto-complete, 52 automatically grab, 61, 229 display, 53 show, 61 functions, color in browser, 219 G gbugrpt utility, 390 General Files configuration option, 234 General Files Directory configuration option, 234 Generate auto-recover file every... seconds configuration option, 228 Generate Cross References menu item, 19, 25, 63 overview, 25 Generate Report 440 MULTI: Editing Files and Configuring the IDE

Index legacy license administration option, 266 license administration option, 267 GenerateXrefInfo command, 63, 394 GenFilesDir configuration option, 234 GenFileSet configuration option, 234 Geometry configuration option, 215 Get configuration option, 192 get MVC command, 400 ghs_elmd options, 325 to 327 options, list of, 324 overview, 324 ghs_install.sh, 301, 323 GHS_LM_..._RETRY _TIME environment variable, 270 GHS_LM_CONNECTION_RETRY environment variable, 270 GHS_LM_EXPECTED_MAC environment variable, 272 GHS_LMDEBUG environment variable, 292 GHS_LMDELAY environment variable, 272 GHS_LMHOST environment variable, 271, 292, 295 GHS_LMINFO_DIR environment variable, 271 GHS_LMPORT environment variable, 264, 272, 282, 292 GHS_LMQ_GIVEUP environment variable, 273 GHS_LMQ_METHOD environment variable, 273 GHS_LMQ_POLL environment variable, 273 GHS_LMREFRESH environment variable, 271 GHS_LMSHOW environment variable, 271 GHS_LMWHICH environment variable, 271, 294 GHSlm, 298 command line administration, 303 configuration, 260 to 261 installation, 260, 299 Linux startup, 301 UNIX installation, 301 UNIX startup, 301 Windows installation, 299 Windows shutdown, 300 Windows startup, 300 glicusers license command, 303 to 304 global configuration file, 158 script file, 160 Global Colors configuration option, 236 global configuration file, 160 Global Options tab, 194 global script file, 161 GlobalHeading configuration option, 215 Go To Declaration menu item, 19, 24 Go To Definition menu item, 19, 23 GoTo command, 359 dialog box, 33 line number, 34 menu item, 33, 60 GotoHitsBpAtTargetAddress configuration option, 215 grab function prototypes, 52 GrabTimeout configuration option, 198 Green Hills License Manager, 298 grep command, 31, 67, 382 dialog box, see Search in Files licensing, 32 print full command, 200 utility, 67 H header color configuration option, 239 Green Hills Software, Inc. 441

Index help, see online help Help command, 73, 390 configuration option, 188 menu, 73 menu in Editor, 73 Help menu, 8 Hex Editor, 80 bytes per row, 82 Edit menu, 82 File menu, 81 goto line number, 82 incremental search, 82 menu item, 68 opening, 80 print contents, 81 View menu, 82 hex integers, language support, 50 hex values, display, 216 HexMode configuration option, 203 History Browser, 71, 141 branch, 142 comments, 142 current tag, 142 menu, 142 opening, 141 shortcut menu, 143 status, 142 History Browser menu items Checkout Browser, 143 Close, 143 Diff 2 Versions, 143 Diff with Local Version, 142 to 143 Edit Local Version, 143 Refresh History, 143 Revert to, 143 Revert to Selected Version, 143 View, 143 View Selected Version, 143 History configuration option, 215 Home key, 362, 409 Horizontal scroll bar configuration option, 187 host code, 288 Host Name license administration option, 268 hostid, 268, 286 hovervalues configuration option, 204 I icongeometry configuration option, 216 iconifiedbuttons configuration option, 183 iconify configuration option, 199 icons, 17 customizing, 165 displaying for buttons, 183 naming, 199 size in Debugger, 216 Identify command, 74, 390 menu item, 74 identifying boundaries of a block, 38 if command, 370 to 371, 392 if commands, 370 Ignore/Run Away configuration option, 211 ignoremotion configuration option, 199 Implicit auto indent configuration option, 224 Implicit auto indent in comments configuration options, 224 Increment to maximum container size configuration option, 212 incremental search, 25 to 26, 376 indent characters, 37 configure, 36 keyboard shortcuts, 416 text, 35 text, automatically, 36 442 MULTI: Editing Files and Configuring the IDE

Index Indent command, 65, 380 menu item, 19, 65 Indent comments when indenting multiple lines, 224 Indent size configuration option, 223 index.gsc configuration file, 46 Initial height in characters configuration option, 227 Initial position (XxY) configuration option, 206 Initial width in characters configuration option, 227 Insert Date menu item, 67 Insert File menu item, 66 insert mode, 391 InsertFile command, 66, 381 inserting comments in code, 37 literal characters, 174 InsertNewline command, 381 Install License File license administration option, 265 Integrated Development Environment (IDE), see MULTI Integrated Development Environment (IDE) interleavedoutput configuration option, 216 interprocess communication, 326 Interval to refresh Task Manager configuration option, 211 IP Addr Filter license administration option, 261 IP Address license administration option, 268 ISearch command, 376 J JoinLines command, 66, 379 menu item, 66 K Kanji Font configuration option, 188 KeepLoaders configuration option, 216 key bindings, clear all, 197 key file, 286 key sequences binding commands, 391 keybind command, 169, 408 configuration option, 188 keyboard shortcuts auto-complete, 416 clipboard, 411 copy, cut and paste, 411 Ctrl +, 66 Ctrl + (Ctrl + minus), 379 Ctrl + *, 378 Ctrl + +, 65 Ctrl +., 59 Ctrl + ;, 380 Ctrl + \, 392 Ctrl +. (Ctrl + period), 366 Ctrl + + (Ctrl + plus), 379 Ctrl + *, 65 Ctrl + 2, 380 Ctrl + A, 372 Ctrl + C, 60 Ctrl + D, 370 Ctrl + F, 376 Ctrl + G, 60 Ctrl + i, 65 Ctrl + M, 66 Ctrl + N, 56 Ctrl + O, 56 Ctrl + P, 379 Ctrl + Q, 58 Ctrl + S, 365 Ctrl+Shift+F, 60 Ctrl+Shift+G, 60 Ctrl+Shift+i, 380 Ctrl+Shift+Q, 58 Green Hills Software, Inc. 443

Index Ctrl + Shift + S, 366 Ctrl + Shift + Tab, 62 Ctrl + Shift + U, 379 Ctrl + Tab, 363 Ctrl + V, 60, 369 Ctrl + X, 59 Ctrl + Y, 59 Ctrl + Z, 367 Ctrl + 0 (zero), 362 Ctrl + 2, 65 Ctrl + A, 60 Ctrl + B, 376 Ctrl + Backspace, 370 Ctrl + C, 368 Ctrl + D, 60 Ctrl + Delete, 371 Ctrl + DownArrow, 359 Ctrl + E, 359 Ctrl + End, 359 Ctrl + F, 60 Ctrl + G, 359 Ctrl + H, 360 Ctrl + Home, 361 Ctrl + i, 380 Ctrl + J, 358 Ctrl + K, 362 Ctrl + L, 361 Ctrl + LeftArrow, 361 Ctrl + M, 371 Ctrl + N, 364 Ctrl + O, 364 Ctrl + P, 66 Ctrl + Q, 362 Ctrl + RightArrow, 362 Ctrl + S, 56 Ctrl + Shift + B, 360 Ctrl + Shift + C, 368 Ctrl + Shift + DownArrow, 374 Ctrl + Shift + E, 374 Ctrl + Shift + Enter, 374 Ctrl + Shift + F, 376 Ctrl + Shift + G, 359 Ctrl + Shift + H, 387 Ctrl + Shift + i, 65 Ctrl + Shift + L, 387 Ctrl + Shift + LeftArrow, 375 Ctrl + Shift + N, 360 Ctrl + Shift + O, 364 Ctrl + Shift + P, 58 Ctrl + Shift + PageDown, 374 Ctrl + Shift + Q, 363 Ctrl + Shift + R, 381 Ctrl + Shift + RightArrow, 375 Ctrl + Shift + S, 57 Ctrl + Shift + T, 369 Ctrl + Shift + Tab, 363 Ctrl + Shift + U, 65 Ctrl + Shift + UpArrow, 375 Ctrl + Shift + V, 369 Ctrl + Shift + X, 368 Ctrl + T, 384 Ctrl + Tab, 62 Ctrl + U, 370 Ctrl + UpArrow, 362 Ctrl + V, 370 Ctrl + W, 361 Ctrl + X, 368 Ctrl + Y, 366 Ctrl + Z, 59 cursor movement, 408 default, 408 delete, 412 File commands, 410 indent, 416 miscellaneous, 417 navigating, 408 search, 415 Shift + DownArrow, 374 Shift + End, 374 Shift + Home, 375 Shift + LeftArrow, 374 Shift + PageUp, 374 444 MULTI: Editing Files and Configuring the IDE

Index Shift + RightArrow, 375 Shift + UpArrow, 375 text selection, 413 undo / redo, 411 version control, 417 keyboard shortcuts (UNIX) Again, 366 Copy, 368 Ctrl + Copy, 368 Ctrl + Cut, 368 Ctrl + L10, 368 Ctrl + L6, 368 Ctrl + L8, 369 Ctrl + Paste, 369 Ctrl + Shift + Copy, 368 Ctrl + Shift + Cut, 368 Ctrl + Shift + L10, 368 Ctrl + Shift + L6, 368 Ctrl + Shift + L8, 369 Ctrl + Shift + Paste, 369 Cut, 368 Find, 376 L10, 368 L2, 366 L4, 367 L6, 368 L7, 364 L8, 369 L9, 376 Meta + Ctrl + C, 368 Meta + Ctrl + Shift + C, 368 Meta + Ctrl + Shift + V, 369 Meta + Ctrl + Shift + X, 368 Meta + Ctrl + V, 369 Meta + Ctrl + X, 368 Open, 364 Paste, 369 Shift + Copy, 368 Shift + Cut, 368 Shift + Find, 376 Shift + L10, 368 Shift + L6, 368 Shift + L8, 369 Shift + L9, 376 Shift + Paste, 369 Undo, 367 keys attaching a menu to, 166 Backspace, 370 customizing, 169 Delete, 370 DownArrow, 358 End, 359 Enter, 381 Esc, 62, 359, 366, 376 F1, 73, 390 Home, 362 identifying command for, 390 LeftArrow, 360 PageDown, 360 PageUp, 360 RightArrow, 361 Shift, 372 specifying actions and locations for, 169 Tab, 380 UpArrow, 362 Keys configuration option, 188 keyword color configuration option, 238 Kill Client, 321 L -L MVC option, 117 language define new, 51 definition file, 46 setting in the Editor, 45 syntax definition file, 48 Language menu item, 61 submenu, modifying entries, 46 Green Hills Software, Inc. 445

Index LanguageOptions command, 61, 394 Launch clipboard manager configuration option, 184 Launch Utility Programs menu item, 69 Launcher, see MULTI Launcher leased licenses, 287 show list, 289 LeaveTypedef configuration option, 208 Left command, 360 [Left-click] + Drag mouse action, 419 [Left-click] mouse action, 419 Left-release mouse action, 389 LeftArrow key, 360, 409 LeftSome command, 360 size of, 223 LeftU command, 360 Legacy Builder Colors configuration option, 239 Legacy License Manager (ElanLM), 314 Legacy Server Code license administration option, 264 Legacy Tools Generate Report, 266 View Available Licenses, 266 View Licenses In Use, 266 Library Build configuration option, 239 library color configuration option, 239 lic_log_summary ElanLM license command, 329, 338 lic_log_summary license command, 303, 308 license administration, 318 See also MULTI License Administrator administration interface, 277 administrator program, 329 commands, 328 See also license administration commands interface, 258 UNIX, 328 Windows, 318 license administration commands elmadmin, 329 elmalert, 332 elmrpt, 334 elmusage, 337 elmver, 337 find_ghs_licenses, 303, 307 glicusers, 303 to 304 lic_log_summary, 303, 308 mlmadmin, 303 update, 303, 310 wrap_svc, 303, 306 License Administrator, MULTI, 258 license debugging UNIX, 325 Windows, 316 license device Change Admin Password, 284 Change User Lists, 284 Configuration page, 281 debug mode, 283 description, 283 Help page, 291 IP address filter, 282 License page, 286 limit access, 282 LM host id, 286 log to local file, 282 maximum daily changes, 286 multiple, 293 overview, 248, 276 random selection, 293 redundant, 294 restart, 286 Status page, 278 TCP service port, 282 using DHCP, 276 verbose logging, 283 web interface, 277 license ID, 331 446 MULTI: Editing Files and Configuring the IDE

Index license information, 321 license installation script, 323 license key directory, 330 directory (UNIX), 325 directory (Windows), 316 file, 286 installation (UNIX), 329 installation, prevent ping, 331 load, 325 reload (Windows), 320 license log file (UNIX), 326 file (Windows), 317 file tags (UNIX), 327 suppress copyright notice, 332 verbosity (UNIX), 327, 332 verbosity (Windows), 318 license manager device, see license device legacy (ElanLM), 314 release number, 325 release number (UNIX), 330 license port address (UNIX), 326 license procedures, 249 license query clients (UNIX), 331 environment (UNIX), 331 hold time (UNIX), 331 server address resolution, 332 shared, 331 UNIX, 331 license queuing, 332 license reports activity (UNIX), 336 by date (UNIX), 335 by date (Windows), 321 by feature, 335 by user (UNIX), 336 graphical, 322 histogram, 322, 335 minimum duration, 336 numeric, 322 report type (Windows), 321 specify log file (UNIX), 336 Windows, 321 License Request Generator, 265 license requests, 250 license resource file UNIX, 327 Windows, 317 license serial number, 286 license server bury client UNIX, 329 communication (UNIX), 326 compatibility, 252 delays, 350 dump log (UNIX), 330 installation, 250, 260, 299 installation (UNIX), 323 installation (Windows), 315 kill (UNIX), 330 resource files, 339 restricting domain, 340 running in foreground, 325 server code, 252 shutdown, Control Panel, 300 shutdown, wrap_svc, 300 startup (UNIX), 323 startup (Windows), 315 startup automatic (UNIX), 323 startup settings (UNIX), 324 startup settings (Windows), 316 startup time (UNIX), 327 startup time (Windows), 317 startup, Control Panel, 300 startup, wrap_svc, 300 troubleshooting, 344 zero log (UNIX), 332 license soft limit, 322 license types, 246 Green Hills Software, Inc. 447

Index named user, 247 license zombie timeout UNIX, 327 Windows, 317 licensed executables, 279 licensed programs, 279 licensed users, 284 list, 279 licenses available, 333 available (UNIX), 335 to 336 available (Windows), 319 check for new, 291 exclude, 341 high-water mark, 280 hold, 341 in use, 279 install, 290 reserve, 341 upload, 290 Licensing Wizard, 258 See also MULTI Licensing Wizard license administration option, 265 licfind, 328 LID, see license ID line number field, 18 Line numbers in source pane configuration option, 204 LineD command, 360 lines cutting, 66 inserting, 381 joining, 66 merging, 66 selecting, 66 LinesNonOverlapped configuration option, 216 Load Color Scheme configuration option, 235 Load Configuration menu item, 73 LoadConfigFromFile command, 73, 388 LoadFile command, 363 LoadFileWithNewEditor command, 56, 364 Local Rescan, 132 location fields, 18 Location of VC binary configuration option, 191 Log File license administration option, 261, 269 log file, creating, 386 Log Verbosity license administration option, 261 LongjmpStepMode configuration option, 211 LowBandWidthToVC configuration option (deprecated), 240 LowerCase menu item, 66 LowerCaseBlock command, 66, 379 M macros, 159 Main Font configuration option, 187 Make command, 67, 382 menu item, 67 Manuals menu item, 74 Match exact case in searches configuration option, 184 Match menu item, 62 MaxContainerDisplaySize configuration option, 212 Maximize Step Speed configuration option, 211 Maximum initial size (WxH) configuration option, 206 maximum licenses, 280 maximum match, 377 Maximum size for container display configuration option, 212 MaxViewSize configuration option, 206 448 MULTI: Editing Files and Configuring the IDE

Index MaxWindowSize configuration option (deprecated), 241 menu command, 166 customization, 166 defining, 166 opening, 168 menu (->) command, 168 menu items 1, 2, 3, 4, 5, 6, 7, 8, 57 About MULTI, 74 Append TagFile, 69 application_name, 73 Auto Checkout, 71 Auto Indent, 65 Check In, 70 CheckInAll,70 Check Out, 70 Clear Default Configuration, 72 Close Dependent Windows, 63 Close Editor, 58 Close File, 58 Column, 62 Command to Window, 68 Comment, 65 Copy, 60 Cut, 59 Cut Lines, 66 Delete, 60 Diff Files, 69 Discard Changes, 70 Editor Help, 73 Execute Editor Commands, 69 Execute Shell Command, 68 Exit All, 58 File Properties, 62 Find, 60 Flash Cursor, 62 Generate Cross References, 63 Goto, 60 Hex Editor, 68 Identify, 74 Indent, 65 Insert Date, 67 Insert File, 66 Join Lines, 66 Language, 61 Launch Utility Programs, 69 Load Configuration, 73 LowerCase, 66 Make, 67 Manuals, 74 Match, 62 Merge Files, 69 Misc, 73 New Editor, 56 Next File, 62 Notepad, 68 Open, 56 Options, 72 Page Setup, 57 Paste, 60 Per File Settings, 61 Per Language Settings, 61 PlaceUnderVC,71 Previous File, 62 Print, 57 Read Only, 63 Rect Copy, 38, 66 Rect Cut, 39, 66 Rect Paste, 39 RectPaste, 66 Redo, 59 Regenerate Cross References, 63 Repeat Last Edit, 59 Reset Tags, 69 Revert to Backup, 57 Revert To Date, 72 Revert To History, 71 Revert to Saved, 57 Revert To Version, 72 Save, 56 Green Hills Software, Inc. 449

Index Save All, 57 Save As, 57 Save Configuration, 72 Save Configuration as Default, 72 Search in Files, 67 Select All, 60 Show History, 71 Show Last Edit, 71 standalone_window_type, 73 Start Launcher, 67 UnComment, 65 Undo, 59 Unindent, 65 UpperCase, 65 MenuDelay configuration option, 199 Menus clear all, 197 configuration option, 188 MergeFiles command, 69, 383 menu item, 69 merging files, 40 Meta + Ctrl + C keyboard shortcut (UNIX), 412 Meta + Ctrl + Shift + C keyboard shortcut (UNIX), 412 Meta + Ctrl + Shift + V keyboard shortcut (UNIX), 369 Meta + Ctrl + Shift + X keyboard shortcut (UNIX), 368 Meta + Ctrl + V keyboard shortcut (UNIX), 412 Meta + Ctrl + X keyboard shortcut (UNIX), 411 Meta + Ctrl + C keyboard shortcut (UNIX), 368 Meta + Ctrl + Shift + C keyboard shortcut (UNIX), 368 Meta + Ctrl + Shift + V keyboard shortcut (UNIX), 412 Meta + Ctrl + Shift + X keyboard shortcut (UNIX), 411 Meta + Ctrl + V keyboard shortcut (UNIX), 369 Meta + Ctrl + X keyboard shortcut (UNIX), 368 Method configuration option, 196 mhexedit, 80 [Middle-click] mouse action, 419 Minibuffer command, 69, 383 Minimize Temp Stops configuration option, 211 Minimum initial size (WxH) configuration option, 206 minimum string length, 52 MinViewSize configuration option, 206 MinWindowSize configuration option (deprecated), 241 Misc menu item, 73 mlmadmin command, 258, 277, 303 Modify Checkout, 140 moon configuration option, 187 More Color Options configuration option, 238 dialog box, 239 More Debugger Options button, 206 configuration option, 206 dialog box, 206 More Editor Options configuration option, 224 dialog box, 227 most recently used file list, 18 mouse attaching a menu to, 166 default bindings, 418 default functions, 418 identify commands for, 390 ignoring motion of, 199 Mouse command, 169 450 MULTI: Editing Files and Configuring the IDE

Index configuration option, 188 defining functions for, 169 mouse actions, 418 Ctrl + Left-click, 390, 419 Ctrl + [Right-click], 420 Ctrl + Shift + [Right-click], 420 [Double Left-click], 419 [Double Middle-click], 419 Double-left-click, 373 Left-click, 389, 419 [Left-click] + Drag, 419 Left-release, 389 [Middle-click], 419 [Quadruple Left-click], 419 [Quadruple Middle-click], 420 Quadruple-left-click, 372 Right-click, 366, 420 Shift + Right-click, 62 Shift + [Double Right-click], 420 Shift + [Left-click], 419 Shift + Right-click, 373, 420 [Triple Left-click], 419 [Triple Middle-click], 419 Triple-left-click, 373 mouse bindings clear all, 197 mouse clicks customizing, 169 time between, 198 movefile MVC command, 400 MoveToEndOfSelection... command, 378 MULTI Editor configuration option, 185 tab, 222 MULTI Integrated Development Environment (IDE) configuring, 154, 157 configuring at startup, 158 configuring during a session, 158 document set, 6 online help, 8 overview, 2 MULTI Launcher configuration, 104 detail pane, 97 graphical user interface (GUI), 92 Help menu, 105 menus, 100 overview, 4, 86 Processes menu, 92, 104 shortcuts, 86, 92 toolbar, 94 utilities, 102 MULTI License Administrator, 258, 277 Available License Managers, 264 Check for New License, 267, 269 Close, 265 Configure, 264 Configure dialog box, 268 Configure Server on Local Machine, 266 Debug Level, 261 Default Gateway, 268 Diagnose License Problems, 265 File menu, 265 Generate Report, 267 GHS_LMHOST license administration option, 264 GHS_LMPORT license administration option, 264 Host Name, 268 Install License File, 265 IP Addr Filter, 261 IP Address, 268 Legacy Server Code, 264 Legacy Tools menu, 266 License menu, 265 Licensing Wizard, 265 LM Server Code, 268 log file, 267, 269 Log File, 261, 269 Green Hills Software, Inc. 451

Index Log Verbosity, 261 Logging menu, 269 Netmask, 268 network settings, 269 Open Browser Configuration, 266, 269 opening, 258, 277 port, 264 Refresh, 264 Request Evaluation License, 265 Request New License, 265 save license, 267, 269 Server Code, 264 shortcut menus, 266 Specify Servers, 264 Start Logging, 267 Start/Stop, 262 Stop Logging, 267 TCP PortCode, 261 Tools menu, 269 upload license, 267, 269 Use Selected LM, 264 View Available Licenses, 268 View Licenses In Use, 268 View Log, 267 web interface, 269 window, 263 MULTI Licensing Wizard, 258 MULTI Version Control, see MVC (MULTI Version Control) MultiBar command, 67, 394 MultiIconPreName configuration option, 199 MultiWinPreName configuration option, 199 MVC (MULTI Version Control), 186 archiving files, 400 automatic checkout, 191 binary files, 115 branching and version numbers, 118 checking in files, 399 checking out files, 116, 399 commands, 116 comparing files, 400 configuration, 110 creating an alias, 398 creating log files, 399 date format, 119 deleting version, 401 displaying files, 400 displaying log files, 401 finding changed version, 400 integration, 115 major version, 118 minor version, 118 moving files, 400 overview, 115 packing files, 400 prompt for comments, 117 removing alias, 401 removing from, 401 retrieving read-only files, 400 setting directories, 117 specifying a log directory, 117 specifying a source directory, 117 unlocking files, 401 unpacking files, 401 MVC commands, 398 alias, 398 ci, 399 cio, 399 co, 399 copyfile, 399 create, 399 deledit, 399 deletefile, 399 delget, 399 delta, 399 diff, 400 disp, 400 edit, 399 fc, 400 452 MULTI: Editing Files and Configuring the IDE

Index get, 400 movefile, 400 package, 400 remver, 401 show, 401 unalias, 401 uncheck, 401 unedit, 401 unlock, 401 unmvc, 401 unpackage, 401 who, 401 MVC options -c, 117 -d, 117, 119 -D, 120 -F, 401 -L, 117 -S, 117 -v, 118 mvc.log file, 115 mvc.lok file, 116 mvc.sem file, 116 MvcBuffer command, 386 N named-user license, 246 navigating keyboard shortcuts, 408 navigating files, 22 Netmask license administration option, 268 New Editor menu item, 56 NewTag command, 384 Next File menu item, 62 NextAutoCompleteString command, 378 NextWindow command, 364 No Number configuration option, 204 NoBuild color configuration option, 239 NoDecoration configuration option, 200 nodelock, 287 Normal radio button, 29 NoSelection command, 369, 372 Notepad command, 68, 383 menu item, 68 number color configuration option, 238 numeric license reports, 322 O object color configuration option, 239 obtain commuter lease license, 287 On warnings configuration option, 201 online help browser, 196 Browser command, 196 executable, 196 Help menu, 8 method, 196 Oracle Help for Java, 196 overview, 8 remote command line, 197 UNIX systems, 9 Windows systems, 8 Online Help Options dialog box, 196 OnlineHelpMethod configuration option, 188, 196 Open key (UNIX), 364, 410 menu item, 56 Open Browser Configuration license administration option, 266, 269 Open build details window configuration option, 201 Open New Editor Window menu item, 19 OpenFile command, 56, 364 OpenFilesInNewBuffers configuration option, 222 opening a file from the Builder, 21 Green Hills Software, Inc. 453

Index from the Debugger, 21 OpenTag command, 385 OpenText command (deprecated), 395 Options configuration, see configuration options dialog box, 155 menu item, 72 Oracle Help for Java configuration option, 196 OSA package request, 209 show window, 218 other color configuration option, 239 other editor, 189 command line arguments, 189 configuration option, 185 path, 189 use XTerm, 189 overtype mode, 223 OverwriteScriptBreakpoints configuration option, 232 P package MVC command, 400 PaddedHex configuration option, 216 Page Setup menu item, 57 PageDown command, 360 key, 360, 408 PageSetup command, 57, 364 PageUp command, 360 key, 360, 408 parentheses, pause for matching, 230 paste column of text, 39 keyboard shortcuts, 411 Paste command, 60, 369 key (UNIX), 369, 412 menu item, 19, 60 Paste1, Paste2, Paste3, Paste4 commands, 369 Path to Editor configuration option, 189 Per File Settings dialog box, 63 menu item, 61 Per File Settings Defaults configuration option, 228 Per Language Settings menu item, 61 Phase of moon in scroll bar box configuration option, 187 PlaceUnderVC command, 71, 386 PointerColor color configuration option, 237 Position of buttons configuration option, 205 PrevAutoCompleteString command, 378 PreventAutoCheckout command, 71, 386 Previous File menu item, 62 Previous Version configuration option, 193 Print command, 57, 364 menu item, 57 Print 2 columns in landscape configuration option, 227 Print command configuration option, 185 Print return values when stepping out of functions configuration option, 208 Print Setup dialog box (UNIX), 76 printing in UNIX, 76 Proc Number configuration option, 204 procedure drop-down menu, 18 Procedure line numbers configuration option, 237 procedure relative line numbers configuration option, 203 454 MULTI: Editing Files and Configuring the IDE

Index ProcQualifiedLocalimplies... configuration option, 216 ProcRelativeLines configuration option, 203 ProcRelLineBG configuration option, 237 program script file, 160 program color configuration option, 239 program script file, 162 prompt configuration option, 205 Prompt when exiting Debugger configuration option, 212 PromptQuitDebugger configuration option, 212 Properties menu item, 19 PVCS version control automatic checkout, 191 configuration, 110, 186 integration, 121 to 122 Q [Quadruple Left-click] mouse action, 419 [Quadruple Middle-click] mouse action, 420 QuerySaveAll command, 57, 365 QuerySaveCheckinAll command, 70, 386 QuerySaveComments command, 365 QuietToCmd configuration option, 217 Quit command, 58, 365 quotation marks-double ( ) command, 381 Quote command, 392 R radio button, 29 RCS version control automatic checkout, 191 configuration, 110, 186 integration, 123 Read Only menu item, 63 Read-only window indicator, 19 ready-key mode, 332 RecordCommented... configuration option, 217 Rect Copy menu item, 38, 66 Rect Cut menu item, 39, 66 Rect Paste menu item, 39 rectangular text section copying, 66, 369 cutting, 66, 369 pasting, 66, 370 RectCopy1 command, 66, 369 RectCut1 command, 66, 369 RectPaste menu item, 66 RectPaste1 command, 66, 370 Redo command, 59, 366 menu item, 59 Refresh license administration option, 264 Regenerate Cross References menu item, 19, 63 RegenerateXrefInfo command, 63, 394 regular expressions, 30 in search strings, 29 Remember breakpoints configuration option, 232 Remember last connect command used for process configuration option, 232 RememberDirs configuration option, 233 RememberWindowPositions configuration option, 183 remver MVC command, 401 Repeatlastcommandonreturnkey in non-gui (-nodisplay) mode configuration option, 208 Repeat Last Edit menu item, 59 RepeatLast command, 59, 366 Replace All button, 28 Replace button, 28 Replace Then Find button, 28 Green Hills Software, Inc. 455

Index repository, 130 Request Evaluation License license administration option, 265 Request New License license administration option, 265 Request OSA package when MULTI cannot figure it out configuration option, 209 requesting licenses, 250 ResetTags command, 69, 385 resource files, example, 342 restart license device, 291 Restored breakpoints overwrite breakpoints set by scripts configuration option, 232 Return command, 360 Reuse Data Explorer configuration option, 210 Reuseeditorwindowsconfiguration option, 222 ReverseWord command, 361 Revert command, 57, 365 Revert to Backup menu item, 57 Revert To Date menu item, 72 Revert To History menu item, 71 Revert to Saved menu item, 57 Revert To Version menu item, 72 RevertDate command, 72, 386 RevertHistory command, 71, 386 RevertToBackup command, 57, 387 RevertVersion command, 72, 387 Right command, 361 Right-click mouse action, 366, 420 RightArrow key, 361, 409, 416 RightD command, 361 RightSome command, 361 size of, 223 Root of checkout configuration option, 191 S -S MVC option, 117 s (step) and n (next) are blocking by default configuration option, 207 Save and Close button, 58 Save arguments between sessions configuration option, 231 Save command, 56, 365 Save command history between sessions configuration option, 231 Save Configuration as Default menu item, 72 Save Configuration menu item, 72 Save data explorers between sessions configuration option, 231 Save debugger window position configuration options, 231 Save window positions and sizes configuration option, 183 SaveAll command, 365 menu item, 57 SaveAllLog command, 365 SaveAs command, 57, 366 SaveConfig command, 72, 388 SaveConfigToFile command, 72, 388 SaveDebugServer configuration option, 232 SaveRunArguments configuration option, 231 SaveViewWindows configuration option, 231 scientific notation, 50 scratch files, editing, 68, 383 script color configuration option, 239 script file command line, 160 global, 160 program, 160 user, 160 scripts, 159 456 MULTI: Editing Files and Configuring the IDE

Index Scroll Bar Width configuration option, 187 scroll bars displaying on left or right, 186 width of, 187 ScrollHLocation configuration option, 187 ScrollLocation configuration option, 186 SDLNameDisplay configuration option, 217 Search button, 27 command, 60, 376 dialog box, 25, 27 keyboard shortcuts, 415 Search in Files, 26, 31 to 32 dialog box, 26, 31 menu item, 67 results window, 31 to 32 searching, 25 case-sensitive, 28, 31, 184 functions, 35 inallopenfiles, 26,31to32 incremental, 25 to 26 interactive, 25, 27 tips, 26 with regular expressions, 29 to 30 with Search dialog box, 25, 27 with Search in Files dialog box, 31 with wildcards, 29 SecondarySelectAll command, 372 SecondarySelectionAdjust command, 372 SecondarySelectionExtend command, 372 SecondarySelectionReplace command, 372 SecondarySelectionReplaceClip command, 372 SecondarySelectionStart command, 372 SecondarySelectLine command, 372 SecondarySelectWord command, 372 select color configuration option, 236 select text keyboard shortcuts, 413 select version control system, 108 SelectAll command, 60, 372 selecting languages, 61 SelectionAdjust command, 372 SelectionDrop command, 389 SelectionExtend command, 372 SelectionGrab command, 372 SelectionMarginWidth configuration option, 228 SelectionStart command, 373 SelectionStartDrag command, 389 SelectionStartDragAdd command, 390 SelectLanguage command, 61, 395 SelectLine command, 66, 373 SelectMatch command, 373 SelectToLines command, 371, 373 SelectToMatch command, 62, 373 SelectWord command, 373 serial number, 286 server code, 252 Server Code license administration option, 264, 268 Server Settings, 261 ServerPollinterval configuration option, 211 ServerTimeout configuration option, 211 Session tab, 231 SetBPAtAdrinitWhenExecing configuration option, 217 setting language, 45 Sghs_elmd, 323 SharedSymbols configuration option, 217 shell command, 217, 383 shell commands executing, 382 ShellConfirm configuration option, 217 Shift key, 372 Green Hills Software, Inc. 457

Index Shift + Copy keyboard shortcut (UNIX), 368 Shift + Cut keyboard shortcut (UNIX), 368 Shift + DownArrow keyboard shortcut, 374 Shift + End keyboard shortcut, 415 Shift + Find keyboard shortcut (UNIX), 376 Shift + Home keyboard shortcut, 375 Shift + LeftArrow keyboard shortcut, 414 Shift + PageUp keyboard shortcut, 414 Shift + Paste keyboard shortcut (UNIX), 412 Shift + RightArrow keyboard shortcut, 414 Shift + UpArrow keyboard shortcut, 375 Shift + Copy keyboard shortcut (UNIX), 412 Shift + Cut keyboard shortcut (UNIX), 411 Shift + [Double Right-click] mouse action, 420 Shift + DownArrow keyboard shortcut, 414 Shift + End keyboard shortcut, 374 Shift + Find keyboard shortcut (UNIX), 415 Shift + Home keyboard shortcut, 414 Shift + LeftArrow keyboard shortcut, 374 Shift + [Left-click] mouse action, 419 Shift + PageUp keyboard shortcut, 374 Shift + Paste keyboard shortcut (UNIX), 369 Shift + RightArrow keyboard shortcut, 375 Shift + [Right-click] mouse action, 420 Shift + UpArrow keyboard shortcut, 413 shortcut menu Editor, 18 legacy license server, 268 MULTI License Administrator, 266 shortcuts MULTI Launcher, 92 Show History configuration option, 193 menu item, 71 Show Last Edit menu item, 19, 71 Show locations of variables for print command configuration option, 208 show MVC command, 401 Show position in non-gui (-nodisplay) mode configuration option, 208 Show target windows when connecting to debug server configuration option, 209 Show tooltips configuration option, 184 Show variable values in tooltips configuration option, 204 Show version control information on file chooser dialog box configuration option, 235 ShowAddress configuration option, 208 ShowContextMenu command, 366 ShowGrepCommand configuration option, 200 ShowHistory command, 71, 387 ShowLastEdit command, 71, 387 ShowPosInNoDisplayMode configuration option, 208 ShowProgress configuration option, 201 ShowTraceOSAWindows configuration option, 218 ShowView command, 387 SilentlyReloadSymbols configuration option, 218 SingleLibrary color configuration option, 239 SOF command, 361 soft limit, license, 322, 337 SOL command, 361 SOL0 command, 362 SOL1 command, 361 SOLSecondary command, 373 source color configuration option, 239 Source Files configuration option, 234 458 MULTI: Editing Files and Configuring the IDE

Index Source Files Directory configuration option, 234 SourceFileSet configuration option, 234 SourceSafe version control automatic checkout, 191 configuration, 110, 186 database location, 191 integration, 123 path, 191 root of checkout, 191 Spaces per indent for Ada configuration option, 228 SpecialTag command, 385 specify alternate editor, 404 Specify Servers license administration option, 264 square brackets [], matching, 62 standalone_window_type menu item, 73 Start Launcher menu item, 67 Start Logging license administration option, 267, 269 Start/Stop MULTI License Administrator, 262 StartedConnectionFG color configuration option, 239 starting the Editor, 20 as stand-alone program, 20 from the Builder, 21 from the Debugger, 21 from the Launcher, 20 from the Progress window, 21 StartsLine check box, 29 StartsWord check box, 29 startup files, 158 to 159 status bar, 19 status box, 19 Status configuration option, 237 Stepping over C++ exception or longjmp configuration option, 211 StepToBpIgnores... configuration option, 218 Stop Logging license administration option, 267, 270 StopSearch command, 376 string color configuration option, 238 SubProgram color configuration option, 239 SubProject configuration option, 239 Switch bodies indented two instead of one configuration option, 224 synchronous configuration option, 200 Syntax Color Settings configuration option, 238 syntax coloring, 48 Syntax Coloring configuration option, 237 syntax definition file, 48 creating, 51 System V native interprocess, 326 T Tab command, 381 key, 380, 416 to 417 Tab size configuration option, 223 TabsAreSpaces configuration option, 223 tag files creating, 35 reset, 69, 385 target connections auto-save, 232 opening, 202 sharing, 202 TaskMatchCriteria configuration option, 212 TBtypeBG configuration option, 219 TBtypeFG configuration option, 219 TCP connection, 292 Green Hills Software, Inc. 459

Index TCP Port license administration option, 261 TCP/IP, 251 Temp file directory configuration option, 227 text selection keyboard shortcuts, 413 third-party tools editors with the MULTI environment, 404 integrating the editor, 404 version control systems, 404 working with MULTI, 404 title bars hide, 200 naming, 199 toggle command, 217 ToggleErrorView command, 381 ToggleReadOnly command, 63, 395 toolbar, 17 buttons, 17 customizing, 164 Tools menu, 67 tooltips configuration option, 184 enabling and disabling, 184 show variable values, 204 Trace collection, 221 TraceAlwaysOn configuration option, 221 Translate DWARF debugging information configuration option, 210 Translate stabs debugging information configuration option, 210 transpose characters, 369 Tree Browser colors, 219 [Triple Left-click] mouse action, 419 [Triple Middle-click] mouse action, 419 troubleshooting dongles, 255 license server, 344 TruncateSearch command, 376 Two color mode configuration option, 236 types, color in browser, 219 typographical conventions, 10 U UDP broadcast, 292, 295 Un Check Out configuration option, 192 UnabletoGetLicensefor...error, 344 Unable to write to file error, 353 unalias MVC command, 401 uncheck MVC command, 401 UnComment menu item, 19, 65 UnCommentBlock command, 65, 379 Under VC configuration option, 192 Undo button, 28 command, 59, 367 key (UNIX), 367, 411 menu item, 19, 59 unedit MVC command, 401 UnifyViewWindows configuration option, 210 Unindent command, 65, 380 menu item, 65 unions, color in browser, 219 UNIX file chooser dialog box, 74 Print Setup dialog box, 76 printing, 76 unlimited licenses, 337 unlock MVC command, 401 unmvc MVC command, 401 unpackage MVC command, 401 Up command, 362 UpArrow key, 362, 408 update license command, 303, 310 UpperCase menu item, 65 UpperCaseBlock command, 65, 379 UpSome command, 362 460 MULTI: Editing Files and Configuring the IDE

Index size of, 223 usage for commands, 328 Use Color Offsets configuration option, 204 Use icons for buttons configuration option, 183 Use MULTI Editor on errors configuration option, 201 Use Preset Colors configuration option, 204 Use procedure relative line number (vs. file relative) configuration option, 203 Use Selected LM license administration option, 264 Use XTerm configuration option, 189 user configuration file, 158 script file, 160 user configuration file clearing, 159 location, 161 override, 160 saving, 157 User Directories configuration option, 234 user script file, 161 UserName command, 381 UseWMHinting configuration option, 200 UseWMPositioning configuration option, 200 Utility Program Launcher, 69, 383 V -v MVC option, 118 vc_ci configuration option, 193 vc_co configuration option, 192 vc_create configuration option, 193 vc_get configuration option, 192 vc_prevver configuration option, 193 vc_show configuration option, 193 vc_unco configuration option, 192 vc_undervc configuration option, 192 vc_who configuration option, 193 VCBuffer command, 387 VerifyHalt configuration option, 203 Versctrl_ClearCaseAuto... configuration option, 191 Versctrl_ClearCasePath configuration option, 191 Versctrl_CustomAutoCheckout configuration option, 191, 193 Versctrl_CVSPath configuration option, 191 Versctrl_MVCAutoCheckout configuration option, 191 Versctrl_PVCSAutoCheckout configuration option, 191 Versctrl_RCSAutoCheckout configuration option, 191 Versctrl_SourceSafeAuto... configuration option, 191 Versctrl_SourceSafeDatabase configuration option, 191 Versctrl_SourceSafePath configuration option, 191 Versctrl_SourceSafeRoot configuration option, 191 version control, 108 auto-checkout, 71, 113 auto-detect, 108 to 109, 186 checkin, 70 checkout, 70 ClearCase, 110, 120, 186 configuration, 186 configuration options, 189 custom integration, 110, 126, 186, 191 CVS, 109, 186 disabling, 109, 186 discard changes, 70 enabling, 71 indicator, 20 Green Hills Software, Inc. 461

Index location of binary, 191 merging multiple file versions, 69, 383 MVC (MULTI Version Control), 110 place file under, 71 PVCS, 110, 121, 186 RCS, 110, 123, 186 Revert to Date, 114 Revert to History, 114 Revert to Version, 114 reverting to backup version, 57 reverting to previous version, 71, 114 reverting to previously saved version, 57 reverting to specific date, 72 reverting to specific version, 72 show history, 71 show last edit, 71, 113 showing information in file chooser, 235 SourceSafe, 110, 123, 186 supported systems, 108 version number under MVC, 118 Version Control configuration option, 186 Version menu, 70 VersionControlType configuration option, 186 Vertical scroll bar configuration option, 186 vi editor, 189 command line arguments, 189 path, 189 use XTerm, 189 Vi editor configuration option, 185 View Available Licenses legacy license administration option, 266, 268 View Licenses In Use legacy license administration option, 266, 268 View Log license administration option, 267, 270 View menu, 61 View unsigned char as integer configuration option, 204 ViewDef configuration option, 220 ViewsAreChildrenMode configuration option, 205 ViewWindowDefaultToTree configuration option, 221 Visual SourceSafe integration, 124 See also SourceSafe VSS (Visual SourceSafe), 124 See also SourceSafe W %w special character, 172 WarnOnBpReplacement configuration option, 221 WarnOnCmdAdrLine... configuration option, 221 Warp pointer configuration option, 185 Web Browser configuration option, 196 WGUtils command, 69, 383 Who configuration option, 193 who MVC command, 401 wildcards in searches, 29 Window configuration option, 195 window docking, 174 application, 195 application options, 195 compatibility, 195 disable all, 194 disable grouping, 194 distance, 194 docks to, 195 focus, 195 geometry caching, 195 global options, 194 KDE, 195 UNIX limitations, 175 window types, 195 Window Docking configuration option, 188, 194 462 MULTI: Editing Files and Configuring the IDE

Index window identification number (wid), 172 window manager enabling, 200 fixing on HP-UX, 200 window positioning, 200 window positions and sizes saving, 183 Windows menu, 73 WlmAdmin licensing utility, 319 WlmCntrl licensing utility, 319 WlmQuery licensing utility, 319 WlmRpt licensing utility, 321 Word command, 362 Word wrap configuration option, 228 working with comments, 37 workspace action sequences creating, 89 deleting, 89 editing, 89 running, 88 workspace actions creating, 90 editing, 90 running, 88 workspaces creating, 87 opening, 93 overview, 5, 86 Wrap column configuration option, 228 Wrap indent offset configuration option, 229 wrap_svc license server command, 300, 303, 306 X X-server, 198 X-window, 200 XORmacs configuration option, 198 XTerm configuration option, 189 Green Hills Software, Inc. 463