Source Insight is a project-oriented program editor and code browser, with built-in analysis for C/C++, C#, and Java programs. Source Insight parses your source code and maintains its own database of symbolic information dynamically while you work, and presents useful contextual information to you automatically.
Not only is Source Insight a great program editor, but it also can display reference trees, class inheritance diagrams, and call trees. Source Insight features the quickest navigation of source code and source information of any programming editor.
Source Insight features quick and innovative access to source code and source information. Unlike many other editor products, Source Insight parses your source code and gives you useful information and analysis right away, while you edit.
Figure 1.1 Source Insight uses innovative syntax formatting and dynamic relationship graphing to illuminate source code design.
Always Up-To-Date Information
Because programs are constantly under development, it’s important that even symbols in code that will not compile can be browsed in with up-to-the-second accuracy. Source Insight automatically builds and maintains its own high performance symbol database of functions, methods, global variables, structures, classes, and other types of symbols defined in your project source files. Source Insight maintains its symbol database to provide browsing features instantly, without having to compile the project or having to depend on the compiler to provide browser files. Source Insight quickly and un-intrusively updates its information about your files, even while you edit code. Furthermore, the symbol features are built into each Source Insight project automatically. You don’t need to build any extra tag files.
Context Sensitive Dynamic Type Resolution
Source Insight decodes the types of variables, including class inheritance, dynamically while you edit. Source Insight’s knowledge of classes gives you accurate information as soon as you need it.
Symbol Windows For Each File
Symbol Windows appear on the side of each source window and are dynamically updated to allow easy navigation within each file and to provide a quick overview of the file. See also “Symbol Windows ”.
Figure 1.2 A Symbol Window appears at the left side of each source file window.
You can click on any symbol in the Symbol Window and quickly jump there. You can also drag and drop symbols in to rearrange your code. The Symbol Window can be sorted by name, line number, and type. You can activate the Symbol Window and type the first few letters of a symbol’s name in order to quickly move to it. The Symbol Window also displays #ifdef-#endif nesting levels and symbol type icons for quick identification and orientation.
Automatic Display of Declarations in the Context Window
Source Insight 2.0 introduced an innovative feature called the Context Window. The Context Window automatically displays symbol definitions based on what identifier your cursor is in, or on what you are typing. See also “Context Window”.
The Context Window updates in the background and tracks what you are doing. You can click on an identifier, and the Context Window will automatically show the symbol’s definition. If the identifier is a variable, the Context Window will decode its declaration to show you its base structure or class type.
The Context Window also will automatically display files selected in the Project Window, symbols in the Relation Window, and clips selected in the Clip Window.
Call Graphs and Class Tree Diagrams
The Relation Window is a Source Insight innovation that shows interesting relationships between symbols. It runs in the background and tracks what symbols you have selected. With it, you can view class hierarchies, call trees, reference trees, and more. See also “Relation Window”.
The beauty of the Relation Window is that you don’t have to do anything special. It works in the background while you work, but you can interact with it when you want to.
The Relation Window can be viewed either graphically, or in outline format. You can also have several Relation Windows open, each showing different types of information. .
Figure 1.3 The Relation Window is showing references to a type, and indirect references through a function.
Syntax Formatting
Syntax Formatting is an important Source Insight innovation that renders information in a dense, yet pleasing and useful way. It provides vastly improved display capabilities, including full rich text formatting with user-defined styles. Source Insight applies styles automatically based on lexical and symbolic information about your project. See also “Syntax Formatting and Styles”.
Figure 1.4 Syntax Formatting makes your code come to life! This example demonstrates Source Insight’s unique comment heading styles, scaled nested parentheses, and a variety of symbol reference styles. The yellow marks in the left margin indicate lines that have been edited.
Syntax Formatting adds valuable information while you read your code. For example, references to local variables can look different from references to global variables. Or, references to functions can look different from references to C function-like macros. With Syntax Formatting, it becomes instantly obvious what an identifier refers to, or if it is misspelled.
Context-Sensitive Smart Rename
Source Insight’s indexes allow you to effortlessly rename variables, functions, and other identifiers in one simple step. Source Insight’s context-sensitive smart matching feature is smart enough to rename local scope variables, as well as global or class scope identifiers. See also “Smart Rename”.
Mixed Language Editing
Source Insight supports HTML and Active Server Page files (ASP and JSP) with embedded script. The embedded script can be browsed symbolically, and displays with appropriate syntax formatting.
Keyword Searches Like an Internet Search on Your Code Base
The Search Project command allows keyword style searching, similar to an Internet search engine. This lets you find sections of code that refer to one or more topics within a specified number of lines. For example, you might type “save disk (copy or duplicate)” and Source Insight will find all references to the words “save”, “disk”, and either “copy” or “duplicate” that occur near each other (as well as word variations, such as “saves”, “saved”, and “saving”). See also “Search Project”.
Symbolic Auto-Completion
When you begin to type an identifier name, Source Insight will pop up a list of potential identifier names. Source Insight can show you function and variable names, as well as class and structure fields up to many levels of depth. Source Insight decodes the types of variables (including inheritance) on the fly.
Quick Access to All Symbols and Files
Source Insight provides more useful programming information than any other editor. Not only are symbol definitions tracked dynamically, but also information is offered in its most useful form.
With Source Insight, you can surf your project the way you would a web site. You can just double click on a local or global symbol, and Source Insight takes you to the definition, or can pop up a quick information window. You can click on a symbol, and within seconds, have a list of all references to that symbol anywhere in the project. A symbol-browsing dialog box allows you to perform regular expression searches to locate symbols.
Project Level Orientation
Entire source directory trees, even multiple directories across your network, can be added to a Source Insight Project. You can specify a file name quickly without having to know what directory it is in. Source Insight automatically maintains its own database of symbols and indexes for each project. Project reports and cross-references can also be generated. When your source control program updates files in the project, Source Insight notices and incrementally updates the symbol information for you automatically.
Team Programming Support
Changes made by any member of a programming team are reflected automatically because the entire code base is scanned and resynchronized as needed.
Programmers need not be concerned with the organization of the project and its files, because they can instantly jump to the definition or usages of any symbol, and can access modules and other symbols without having to know what directory, machine, or file they are in.
Source Insight gives each programmer the leverage to easily understand and edit large, detailed projects created by groups of programmers.
Find References Quickly
Source Insight’s symbol indexes allow you to locate references to symbols across the project in seconds, and create a listing containing active source links to all locations. See also “Lookup References”.
Hyper Source Links to Link Compiler Errors and Search Results
Source Links let you jump between interesting places instantly. Source Links are hypertext-like links that connect a location in one file with a location in another file. Source Links are used to link search results with matches, and to link compiler errors with their targets. You can also parse file specifications out of any file and create links to those files. Source Links are actively maintained as files are edited. You can insert text anywhere in a file and the links will be retained on the correct lines. See also “Searching and Replacing Text”.
Fast Project-Wide Search and Replace
Source Insight can quickly search and replace in project files. The result of each search is added to a Search Results window, which contains active source links to all the search matches. Source Insight’s search index makes project-wide searches take only a few seconds. Regular expression search patterns are supported.
Project Window With Multiple Views
Source Insight’s Project Window displays the contents of your project, and it has several modes. In the File List mode, it lists all files in the current project. You can quickly open any file in the project from the Project Window, or drag files from the Windows Explorer onto the Project Window to add files to the project. See also “Project Window”.
The Project Window also has modes to display symbols by category, files by category, and all project symbols in a flat list. You can use partial matching on names or parts of names to quickly locate items.
Source Insight can handle projects with millions of lines of code and hundreds of thousands of declared symbols.
Integrates with External Compilers and Tools
Source Insight integrates with external tools, such as compilers, make programs, filters, and source control programs by using Custom Commands. Projects can be compiled from inside Source Insight and compiler errors are tracked automatically while you edit. External tools can be launched concurrently in a shell command window from within Source Insight. Program output can be redirected to a file buffer or can be parsed for errors messages. You can add your own Custom Commands, which spawn external tools. See also “Custom Commands”.
Clip Window for Storing Multiple Clipboards and Boiler Plate Code
You can easily rearrange code and insert boilerplate text by using the Clip Window. The Clip Window contains clips of text that you can keep handy for dropping into their source files when needed. Clips are automatically saved and maintained across sessions. Clips also remember what function or symbol they came from. See also “Clip Window”.
Two-Stage Line Revision Marks and Selective Line Restoration
Source Insight displays line revision marks in the margin next to lines that have been changed, or where lines have been deleted. This makes it easy to see where you have made changes in your files. Not only can you see where you made changes, but also you can restore them to their original text with the Restore Line command. The Restore Line command is undoable. This gives you powerful, out-of-order undo capabilities!
The undo and change history for each file is preserved after you save the file. The line revision marks also change color when a file is saved. After saving a file, you can still see what lines were edited, and restore them, or perform undo operations.
Extensible Document Types and Languages
You can teach Source Insight about new file types by defining Document Types. This allows different editing, display, and language parsing options for different types of files. See also “Document Types”.
You can also add your own custom languages to Source Insight. A custom language specifies syntax rules, syntax formatting keywords, and simple parsing expressions. See also “Custom Languages”.
Crash Recovery Offers Full-Time Protection
Source Insight saves your editing changes transparently and frequently to a recovery file. In the event of a computer crash, Source Insight can recover all the changes made to files, even if you didn’t save them. This is not an auto-save feature, which interrupts you so that files can be saved. Only the changes you have made are stored in the recovery file and only when you are idle. You can specify how often the recovery file should be saved.
Persistent Workspaces
You can group sets of files and other session information into Workspaces. You can save all session state into workspace files, and restore sessions from other workspace files easily. Source Insight saves the current workspace automatically when you exit. The workspace is restored when you run Source Insight again, or when you open other projects. You can exit Source Insight, close a project, or even crash your machine, but everything will be just as you left it when you start it up again.
Customizable Menus and Keyboard
Not only is the keyboard configurable, but also the mouse buttons and the menus are fully configurable. All your configuration settings can be stored and restored from configuration files very easily, while running Source Insight. There is no need to write custom macros or to use a separate “setup” program.
Windows 2000/XP and Window 9x/Me Support
Source Insight supports Windows 2000/XP features, such as semi-transparent windows for floating tool windows, and Terminal Server sessions.
Outstanding Windows User Interface
Source Insight is a full 32 Bit implementation and supports Multiple Instances, Long and UNC File Name, Right-Click Shortcut Menus, and Toolbars.
Source Insight uses right mouse button shortcut menus in many of its windows to provide easy access to commands and object properties.
Many useful windows can be either floating or docked to the main application window for flexibility.
Full Featured Editor
Of course, Source Insight offers great editing features, such as multi-level Undo & Redo per file, smart indenting, syntax coloring, parentheses and brace matching, renumbering, keystroke and command recording, and special selection modes for selecting blocks, functions, paragraphs, and whole words. The mouse is fully supported. Multiple windows can be open on the same file. Workspaces are used to restore files and windows from previous sessions.
Drag and Drop Editing
Source Insight supports drag and drop editing of text between source files and between clips in the Clip Window. Whole symbols can be dragged and dropped from the Symbol Window, which makes rearranging functions and things very easy. You can also drop files on Source Insight’s Project Window to add a file to a project, or onto the Clip Window to load a new clip.
Real World Tested
Source Insight is an industrial strength editor that is used by thousands of programmers at major public software companies today. Source Insight has been used on complex commercial projects containing many thousands of files, many millions of lines of code, and hundreds of thousands of declared symbols.
Speed and Convenience
The philosophy of Source Insight is to increase programming team productivity by clarifying source code, presenting information in a useful way, and allowing programmers to modify software in large, complex projects. By quickly providing you with complete project-wide program information, and giving you a rich program-editing environment, Source Insight will enable you to work quickly and smartly.
In this section: