Programming Features

Code Completion: Infotips, Advanced Context Sensitive Tagging

Infotips is an enhancement to CRTAGS, the tagging facility. When typing in data variable references or function names, CRiSP will popup a selection menu or tooltip showing the prototype of the function being called or the list of valid structure members depending on the data type.

When writing code, you can use Javadoc or plain English comments in the function header and CRiSP will automatically format and show the text in the popup help.

CRiSP’s code completion currently works for C, C++, Java, ColdFusion, HTML, Perl, SQL, TCL, VHDL, Xbase, PHP, JSP, VBScript, Python, CFScript and C#.

Specific features in Infotips include:

  • Auto Parameter Info
    Automatically displays the prototype for a function when a function operator [ ‘(‘ for most languages] is typed and highlights the current argument within the displayed prototype. Javadoc comments are displayed in a mini-HTML viewer.
  • Auto List Arguments 
    Enhanced to automatically list compatible arguments when filling in the argument to a function or method. Javadoc comments are displayed in a mini-HTML viewer.
  • Auto List Members
    Automatically lists members when you type a member access operator (‘.’ for C++/Java, or ‘->’ for C/C++). When you type the member access operator, CRiSP will analyze the context in order to list the members and inherited members of the current object.
  • Context Tag Navigation
    Source code context is automatically analyzed so you can quickly navigate to the definition of an identifier, including local and global variables, class members and functions.
  • Context Tag Preview
    A dockable symbol output window utilizes context information to preview the definition of the identifier currently under the cursor.

When editing code, a lot of the time you will be cross-referring the sources, e.g. where is XYZ defined or what is the calling sequence or structure definition. Tagging is the ability to scan all files in a project and create a cross reference database so you can find the entry you are after, e.g. the entry under the cursor, or any entries matching a wild card. You can create multiple tag files, e.g. to tag a local project or sub-project, and a global tag file, e.g. to tag system libraries and classes. You can find any entry in seconds or less. No size limitations. The Tags mechanism has been enhanced to attempt to resolve tag ambiguities using a preceding class name. For example trying to jump to the method set in the following Frame::set will correctly use the Frame class to disambiguate the possibly multiple set methods. The tag facility now supports cross-referencing symbols in files - now you can quickly find all occurrences of a symbol in all files in a project.
CRiSP has extensive support for workspaces and projects. Projects allow a way of setting up a collection of options, attributes and files, which collectively form a work area. All you have to do is tell CRiSP, which files are in your project, the working directory and how to build the project. CRiSP will automatically use its other advanced features like Infotips, Context Tagging, Class Browser and Dynamic Tagging, Colorization, Searching, Auto-build on a per project basis to provide you with a complete development environment. CRiSP supports a variety of options for configuring project specific options according to your own personal taste. These settings are stored in a variety of configuration files. You can create multiple projects, aDisnd then switch between them with a muse click. CRiSP can save workspaces across sessions, and invocations on a per project basis. You can even name workspace environments, and organize your workspaces into folders that describe their purpose (e.g. move your C++ workspaces into a "C++" folder, or your Java workspaces into a "Java" folder). Open a workspace by selecting from an organized menu of workspaces.

Contents window

A table-of-contents style window within the edit area allows you to immediately see bookmarks, links, or sections in a tree style fashion, and allows quick navigation and at-a-glance summaries of the state of your editing environment. In addition, a language specific source code browser is provided.

When editing files, you frequently need to refer to other information to help you in your work. CRiSP provides numerous views available in a contents window to the side of the editing area.

These views include:

  • File view
    Switch between tree view and details view. Create your own favorites and switch quickly from one file to another.
  • Project files
    Lists files in the current project allowing you to quickly select files for editing without having to navigate throughout the directory hierarchy to find files.
  • Project browser
    View and switch to defined tags in your project.
  • Remote FTP view
    Select files to load and edit from remote sites.
  • Named clipboard entries
    Create your own library of templates to paste into the current file. You have access to multiple clipboards with a mouse-click.
  • Templates view
    Displays a list of ready to paste templates that are specific to the programming language you are currently using. – create your own library of templates to paste into the current file CRiSP now allows users to create custom template samples without having to edit a file – just place files in the appropriate samples directory.

The contents window view at the side of the edit area can now be configured so you can control which tabs appear and the order they appear in.


Template editing provides a mechanism for pasting boiler plate text into the edit buffer, based on the type of language, e.g. inserting an if..then..else block of code. CRiSP’s template editing facility is very powerful - providing not only standard templates, but also prompted templates, and crib-sheet templates. Prompted templates provide a mechanism to pop up a dialog to fill in values before the template is pasted, e.g. arguments to a function. Hints can be given to popup custom dialogs for auto-parameter filling in. Crib-sheet templates provide a hierarchical means of presenting template data. For example, in TCL, some functions take a second argument detailing the actual action to perform. There are a lot of these and rather than providing a flat list of templates, CRiSP collects these into a browsable tree so you can quickly find what you want without being inundated with detail. In addition to all of this, CRiSP also provides custom templates that can be created easily by dropping fragments into a directory tree.
UTF-8 files are a subset of the generic wide-character Unicode (16-bit) files that are in use by Windows applications. UTF-8 is a special format used by the Windows 2000 and above REGEDIT application. With this facility, you can edit and save such files rather than having to view them in binary.


CRiSP supports context sensitive syntax coloring for almost all known programming languages. For example, in the TCL language, functions are typically followed by a command name. This command name is only valid as an argument immediately after the function name and not in any position in the file. The syntax specification files (*.kwd) support context groups of keywords so that syntax coloring can be restricted to files which have a correct syntax, making it easier to spot coding errors. CRiSP macros colorize GUI control elements for a variety of different web languages. Syntax coloring allows for dynamic creation of keyword file. Extension macros can be provided to color a file based on the file contents rather than a plain definition of a syntax file. This is used to affect XPM bitmap files so that the bitmap itself shows in the bitmap colors. CRiSP supports syntax colored printing and two-column output as well as a host of other options, such as line numbering and landscape modes.
CRiSP provides complete facilities for performing file comparisons - highlighting differences and provides features to help merge/migrate files from one version to another.


Now files can not only be compared for differences but you can automatically merge files allowing you to edit the merged file to decide which changes you want to keep.
CRiSP now supports the ability to import and export color schemes from the setup dialog.
HTML/XML files can now be beautified with the Tools Beautify option. In addition, HTML files, which are manually maintained, can be verified for syntax inconsistencies.


CRiSP supports checking in and checking out files from source code control. CRiSP supports most of the common source code control systems including SCCS, RCS, Perforce, PVCS, SourceSafe, TLIB, RCS, and ClearCase.
CRiSP now fully documents the internal drawing controls used to create dialog boxes. Various enhancements and fixes to existing controls, including a generic drawing control which allows you to create custom drawings, e.g. using lines, circles, ellipsis and text.
You can configure CRiSP to lock files whilst editing so you don’t overwrite other peoples work on the same files. CRiSP will automatically detect changes to files outside the editor and either prompt you or reload (if file has not been modified by the user). This is a very useful feature especially when looking at volatile files, e.g. log files.
CRiSP supports advisory file locking and operating system locking. Advisory locking when enabled causes a lock-file to be created in a global directory as soon as you attempt to modify a file. If the file has already been locked by someone else, a notice dialog is displayed telling you who, when and where the file was edited. You then have the option of stealing the lock or denying the file changes. Operating system locking uses the file locking mechanisms to stop other users from modifying a file whilst it is being edited.

Code Outlining

CRiSP provides the new facility for collapsing or hiding text within a buffer. Various ways of collapsing the buffer so that you can see more of what you want to edit on the screen include:

  • Showing functions/sections only
  • Lines matching/not-matching a string
  • Paragraphs
  • Comments
  • Pre-processor directives


The source code browser is based on the tagging facility. It provides a hierarchical way to see the objects defined in a set of source files, e.g. C/C++ classes, enumerations, functions, etc. CRiSP provides support for many popular languages, including Ada, C/C++, Java, Verilog and VHDL. The source code browser also provides for dynamic updating as you edit your source files. It is the ideal complement to the existing CRiSP facilities, such as the routines facility.
Available on the setup menu, this dialog box provides an interactive way to create and modify colorizer file definitions. The colorizer is a very popular feature of CRiSP and many people create their own customizations. Hopefully, with the addition of the keyword builder, even more people will be able to tune the colorizer with their own private extensions.
The Find/Build tags menu option now provides a quick and convenient way to call up the CRiSP tags (crtags) utility. Extensions to crtags include the ability to automatically scan a directory tree for source files. Now there is no excuse for not keeping your tags database up to date. The tags facility has been upgraded to support numerous languages and gives rise to the source code browser contents window. The tag database has been optimized to reduce space and speed up large database accesses.
Online help - completely covers using the editor and programming it. CRiSP has identical help on Windows and Unix. Unix includes a complete Windows Help package viewer - help includes diagrams and hyperlinking. You are no longer limited to lowest common denominator browsers or plain ASCII text.
Sometimes you need to perform an action and keep referring to the output results, e.g. searching files for a string, finding all files with a specified tag in them, output from a build/compile action. The output window provides an automatic place to view and select data from commands, which have output.