Source Insight 3.5 Changes

This page describes what is new in Source Insight version 3.5 since the last release of version 3.1.

For full product features, please see the Source Insight product information page.

For a list of recent changes to Source Insight, starting with the most recent release, see the Change History page.

Version 3.5 General Release Information

Version 3.5 contains some important changes to the way that projects and folders are organized.

User Data Folder

The per-user data location has changed with version 3.5. Per-user data are now stored inside the Source Insight subfolder of the My Documents folder. Within the Source Insight folder, there are separate folders:

  • Projects Folder - The default location for project data files. By default, each project you create will be contained in a separate subfolder of the Projects folder.
  • Settings Folder - Contains your configuration settings files. Your old configuration file will be copied here.
  • Backup Folder - Contains the backup source files created when you save a file.
  • Projects\NetFramework Folder - If installed, this contains the NetFramework project. This project contains symbols for the .Net Framework class library used by Source Insight.
  • Projects\Base Folder - this contains the Base project. Thus, all users have their own version of the Base project.

By keeping user data under My Documents, your data are secure and private, and you are guaranteed to have write access to it.

Per-User Project List

Each user now has their own list of projects, as seen in the Open Project command. The project list file is stored in the user Projects folder. You are still able to click the Browse button in the Open Projects dialog box to locate other projects not listed. As long as you have file access permissions for the project, you will be able to open it. The project will then be added to your project list.

Project File Storage

Project Settings for each project specify two folder locations:

  • Project Data Directory - this is where Source Insight stores its project data files. For example, the .pr file is stored here. By default, Source Insight creates a project data directory inside the Projects folder when you create a new project.
  • Project Source Directory - this is the main location of your project source files. In earlier versions of Source Insight, this was called the project root directory.

By maintaining these two separate folder locations, you can store your Source Insight data separate from your source files. Furthermore, your Source Insight project files are always kept in your own user data area, and other users on the machine will not be able to access them. You are still free to use the same location for both folder locations.

To edit Project Source Directory location, use the Project Settings command.

In Custom Commands, the following meta-characters expand for these directories:

%j - the project source directory

%J - the project data directory

.Net Framework Support

The .Net Framework class library symbols are stored in the NetFramework project that Source Insight creates. Source Insight stores the project in the NetFramework folder inside the user’s Projects folder.

Source Insight also installs a set of “source files” that declare symbols for the .Net Framework class libraries. Those sources are stored in the NetFramework folder inside the Source Insight program folder. There is one copy per machine. These “source files” are machine generated files that have a C# syntax. However, they are not strictly C# compatible. Their contents are subject to change with new versions of Source Insight.

To force Source Insight to create the NetFramework project, use the Setup Common Projects command, or use the Preferences: Symbol Lookups dialog box and click the Create Common Projects button.

New Features in Version 3.5

New: .Net Framework symbol completion for C#. Source Insight now ships with a set of data files that specify the .Net Framework class library. Source Insight will automatically reference the .Net class library when you edit C# code. When you install Source Insight, a project called NetFramework is created which holds the library symbols.

New: Increased user data security and support for roaming user profiles. The User Data Folder location has changed to conform to Windows guidelines. A “Source Insight” folder is created inside the My Documents folder of the user. Per-User data, including configuration settings and project data, are stored in that folder. See “Release Details” below.

New: Project folder organization. Source Insight now organizes all its project data files into a project directory that is maintained in your “My Documents\Source Insight” folder.

New: Improved symbol lookup engine now supports the using namespace declarations and using definitions of C++, and the using alias feature of C#. Also, the lookup engine can disambiguate member functions based on the number of parameters. It does not yet look at the types of the parameters.

New: Conditional Parsing Improvements. You can now specify compile-time variable values. In C/C++ and C#, the #if and #elif statements may contain complex expressions. Source Insight now evaluates those expressions. For example:

#if (VER < 5 && DOIT != 0)

...

#endif

The Edit Condition and Preferences: Language: Conditions dialog boxes have been changed to allow arbitrary values for defined conditional constants.

New: Faster and more accurate symbol auto-completion window. The auto-completion code has been overhauled and is faster and better. Also, the list contains less redundant information.

New: Calculate command (on Edit > Special Edit menu) will calculate an arithmetic expression that appears in your source file. For example, if you select (2 + 3) * 4 in your file, the Calculate command will replace it with 20. You can also invoke Calculate when the cursor is an insertion point. It will find the expression to the left of the cursor position when you invoke it.

New: Window XP Display Support. User interface elments now support theming and visual styles. Source Insight contains an XP manifest resource within the executable file. Dialog boxes also appear with improved fonts. You can enable or disable theming in the Preferences: Display dialog box.

New: Preferences: Remote: A new tab in the Preferences dialog contains options that apply when you run Source Insight in a remote session through Remote Desktop or Terminal Server. These options let you tune aspects of the display for best performance. The font scale option is used for the source files and auxiliary windows, which are scaled by the percentage specified. There is also a new command named Remote Options that activates this dialog page.

New: Spaces To Tabs and Tabs to Spaces on the Edit > Special Edit menu. They convert between equivalent spaces and tabs on the selected lines.

New: Document Options: Visible tabs and Visible Spaces options shows tabs and spaces. Previously, it only showed tabs. There is also a separate Visible Tabs and Spaces command that toggles visibility.

New: Preferences: Typing: Options for the selection after a Paste operation:

“Always select text after pasting whole lines” When you paste whole lines using any form of paste, the new whole lines are selected after the paste.

“After pasting, select: ...” This specifies where the selection or the insertion point is located after a paste operation. The default setting is “at end of pasted text”.

New: Intelligent Paste: This modifies paste behavior in two ways when you are pasting whole lines of text:

If you have an insertion point anywhere on a line, then the pasted lines are inserted above the current line.

The pasted text is automatically indented to match the destination. This works with Paste, Paste Line, Drag Line Up/Down commands, the Clip Window, and drag and drop. You enable Intelligent Paste in Preferences: Typing. You also can enable Intelligent Paste on a per-document type basis in the Document Options dialog box.

New: Preferences: Symbol Lookups: A new option “Use .Net Framework symbols for C#”. By default, this option is on. If you turn it off, then the NetFramework project is not used with C# files.

New: Delete Line command that deletes the current whole line without effecting the clipboard.

New: Preferences: Display: Spacing now contains a check box labeled "Suppress internal font leading (smaller line heights)". This will fit more lines in a window by removing some of the font-specified internal font leading.

New: Save Modified Files dialog box now appears when you use Close All, Exit, and Save All and you have unsaved, modified files open. This dialog lists all the unsaved buffers and allows you to specify which files should be saved. The old version used to prompt you separately for each file that needed saving. You can revert back to the old way by checking the option in Preferences: File: “Save All operation will query on each file separately”.

New: Preferences: Colors: There are new color settings for the color of the selection bar (in the left margin) and the color of the application workspace area. In addition, gradient color fills are available on Windows 98 and Windows 2000 or newer.

New: The Symbol Info dialog box is now resizable and contains a mini-source window inside it, which shows full syntax formatting.

New: The Multiple Location dialog box that appears when using Jump to Definition and Jump to Caller, (and other commands) now contains a mini-source window inside it, which shows full syntax formatting. The dialog is also resizable.

New: Preferences: Display: A check box was added to control whether to display the project name in the application frame background or not.

New: Preferences: Typing: Indent commands affect #-preprocessor statements. When checked, the Indent Right command will also indent C preprocessor statements, such as #ifdef, #include, etc.

New: Preferences: Search: option Automatically jump to first result. If selected, then after performing a search, it will jump to the first match right away.

New: You can force Source Insight to use a folder other than “My Documents\Source Insight” as your user data folder. Add the following registry string value:

HKEY_CURRENT_USER\Software\Source Dynamics\Source Insight\3.0\Paths\UserDataDir

Set the string value to the path of the folder you want to use. The folder must already exist and you must have file write and create permissions in that folder.

Modifications and Enhancements

Change: Syntax Formatting: A style was added named “Declare Alias” which is used to display alias declarations in C# and C++. For example, in C#:

using Graphics = System.Drawing.Graphics;

The declaration of “Graphics” is an alias for “System.Drawing.Graphics”.

Similarly, a new style named “Ref to Alias” was also added for references to an alias.

Change: HTML & XML: CDATA sections are now displayed in a new standard style “CDATA Section”.

Change: Selection History dialog: icon bitmaps were added to the items in the list.

Change: Character Spacing dialog: cosmetic changes to the dialog box were made.

Change: Font Settings Upgrade: When upgrading (i.e. loading an older configuration settings file) the old default fonts used in the Relation Window, Clips Window, Symbol Window, and Project Window are changed to use the standard GUI system font. This is the default when starting Source Insight from scratch. The new default font takes advantage of ClearType, whereas the old default did not.

Change: Intelligent Paste: If you put the insertion point at the end of a line and paste a new line, then the new line is pasted following the current line.

Change: Lookup References: If you do not have a project open, then the Lookup References option works on the open file buffers.

Change: Crash Recovery: Recovery used to complain if it did not find all the files you had open prior to the crash. Now, recovery can continue with missing files. It can determine which files are not needed. Other files may be needed, but recovery can still proceed. It will inform you afterwards what files have been affected. Files that are missing data due to missing files will contain series of ??? marks in them.

Change: Running a second instance of Source Insight now opens the previously open project in the last running instance of Source Insight.

Change: Installation of the C.tom file: Instead of overwriting your copy of the c.tom token macro file, the installer with only write over the master copy in the Source Insight program folder. It will ask you if you want to overwrite your personal user copy when it begins parsing. It will also create a backup copy of your personal c.tom file.

Change: Search Forward for Selection command now disables the use of regular expressions. This makes it possible to search for a selected identifier, such as “$foo” without the $ being interpreted as “end of line”. The Search Forward and Search Backward commands also disable regular expressions when used after the Search Forward for Selection command

Change: XML appears now as a separate built-in language in the list of languages in Preferences: Languages. It used to be handled by the HTML language, but now they are separate. When you run this version, your XML document type, if any, will be changed to use the XML Language.

Change: Search Results and Captured output: using the Go to Next/Previous Link commands will simply jump to the other link instead of advancing to the next or previous link. This means you can perform a search, then use the Go To Next Link command to visit the very first match.

Change: Visible Tabs & Spaces has been split into separate options in the Document Options dialog box. Two new commands were added: Visible Tabs and Visible Spaces which can be added to the View menu to conveniently toggle these options. The existing command Visible Tabs & Spaces can still be used to toggle both options at once. Note that these Visible... commands toggle the setting of the current document type in effect.

Change: Source Insight now contains a version resource that allows the operating system to determine version settings.

Change: Auto-complete list is now positioned just below the current line, so as not to obscure the line.

Change: Some items in the c.tom token macro file were changed.

Change: Display Option - Layout spaces using monospace calculations - the calculation was improved to distributes spacing evenly across all space characters.

Change: Mouse Cursor: If you assign any of the “Jump To ...” commands, such as “Jump To Definition” to a mouse button single click with a modifier key such as Ctrl or Alt or Shift, then when you hold down the modifier keys and wave the mouse over an indentifier, you will see the hyperlink mouse cursor (hand).

Change: Debugging symbols are now included in the install. The setup program display an optional component for debugging symbols. If you install it, a file named insight3.pdb is stored in the program folder. This file is used by MS VC 6.0+. The debugging symbols are useful if you get an access violation. Click the Debug button in Windows to get a call stack that you can e-mail to support@sourceinsight.com.

Change: Several message prompts were changed to be less confusing. Also, error messages were updated to give more information about the error.

Change: Rename dialog: The tabbing order between the Old and New name boxes was changed so the New name box is focused first.

Change: Custom Language Properties: Comments and Ranges: New presets were added in the Range Definition dialog to create C/C++ and Pascal comment styles.

Change: Text is selected after using the Paste commands. This is done to conform to standards. If you prefer the old way, you can use the Preferences: Typing dialog to uncheck the “Select text after pasting” option.

Change: Add and Remove Project Files: When the dialog box is opened, the name of the current file is automatically loaded into the file name text box so the file can be added easily to the project by just clicking the Add button.

Change: C/C++: External variable declarations are now added to the symbol lists. When you use Jump to Definition an actual definition will trump an extern declaration for a given symbol.

Performance Improvements

Performance: Symbol Lookup speed: Some caching was added to prevent repeated lookup operations for symbols that cannot be found.

Performance: Java Symbol Lookup speed: Improvents were made to Java-specific symbol searching.

Performance: Symbol lookup operations were sped up very significantly in some cases. Also adjustments to the internal memory management has resulted in faster and better memory usage. This tuning required adjusting the index sorting, so opening a project will prompt you to re-index the project. The follow features are now faster:

  • Displaying C# code was sped up by anywhere from 2 to 5 times depending on the content.
  • Parsing and Rebuilding a project is now amost twice as fast.

Performance: File Caching: The default internal file caching size was increased, and cache page sizes were increased. This impoved performance for situations where memory mapped files are not possible.

Bug Fixes

Fix: Crash Parsing HTML & XML: Including CDATA sections inside of some HTML and XML files could cause the parser to crash.

Fix: Macro Language: It was possible for the macro interpreter to be called recursively if a macro function caused a C/C++ file to be parsed. This would cause either bogus macro errors, or crashes.

Fix: C#: The “this” pointer was not being handled correctly when used inside of property get/put functions, and indexers, and events.

Fix: C/C++: The “_asm” directive was not recognized. Other forms, such as “asm” and “__asm” were working correctly.

Fix: Keyboard: The decimal key on the numeric keypad was not inserting a decimal when the NumLock mode was on.

Fix: Relation Window: The relation window could freeze when calculating the content-tree of classes.

Fix: Crashes: The listbox control could sometimes crash depending on OS version and sequence of window messages.

Fix: C/C++ Display: Sometimes the return types of functions were displayed in a “Reference” style, when it should have been displayed in the Default style because the type was not defined.

Fix: C/C++ Resource Leak: If the Project Window, Context Window, Clips Window, or Relation Window were floating in front and was active, then some GDI object handles were not being freed until the main application window was activated.

Fix: C/C++ #if/ifdef-#else-#endif: These preprocessor directives were showing incorrectly in the symbol window if you had no conditions defined in Source Insight.

Fix: C/C++, Java, C# public private protected: These keywords were sometimes causing declarations to not be parsed correctly.

Fix: C# using alias: The alias would sometimes not be resolved correctlly.

Fix: Symbol Lookup: Symbol lookup was not finding enum values defined inside a class, when the reference was also nested within the class.

Fix: Crash in Project Synchronization: while synchronizing files, if a file in the project could not be opened, due to file access violations, the program would crash.

Fix: Project Synchronization - Add Files: while adding new files to a project during synchronization, if a file could not be opened for some reason, the current working directory was left in an incorrect state, which could lead to files from the wrong directory getting added to the project.

Fix: Crash: A buffer overrun could occur in some cases in the symbol lookup code.

Fix: Display: Fixed a display formatting recursion that could happen if background pagination was running while an activation message was received by a source file window. Background pagination happens if you have the “Show page number in status bar” or “Show page breaks” options enabled.

Fix: C# Verbatim Strings: Literal strings prefixed with a @ mark are considered “verbatim” strings. Backslashes inside them are ignored. They are now supported.

Fix: Memory Leak: Fixed a memory leak in the symbol lookup code that would occur if you disabled symbol lookup caching. (Which is enabled by default.)

Fix: Crash: Fixed a crash in the symbol lookup code that could occur with complicated lookups using multiple namespaces or scopes.

Fix: Crash: Adding an item to the menus using the Menu Assignments dialog box could cause a crash.

Fix: C/C++ #if defined: If you use an #if preprocessor statement with an expression that contains “defined(X)” and X is not known to Source Insight (that is, you have not used the Edit Condition command to define it), then Source Insight ignores the #if statement and its associated #else/#endif statements. All branches will be active.

As a rule, if any identifiers used in a conditional expression are not defined inside Source Insight, then the whole preprocessor statement is skipped.

Fix: Buffer Overrun Crashes: Several functions were found to be using too small a buffer for symbol names.

Fix: Too Many Files Open: A change made a couple of releases ago caused files to get opened in the background, but not closed. This could result in receiving an error message saying that there are too many files open to proceed.

Fix: Crash in ListBoxes: In some cases, due to variations in the order of window messages, the listbox control was crashing. This may have been more of an issue on NT 4 systems than on W2K or WinXP.

Fix: Copy To Clip: The Copy To Clip command was not activating the Clips window correctly. The Clips window was supposed to say “Copy to Clip” in its title.

Fix: Selecting Text: Putting the cursor at the start of a line and extending the selection to right (for example, by using Shift+Right Arrow), would not allow you to select the whole line and exclude the end-of-line character.

Fix: Intelligent Paste & Indenting: There some cases where pasting new text into the body of an { } brace block would out-dent the new text.

Fix: Drag & Drop Edit: Dragging and dropping text is supposed to select the text after it is dropped. Instead, it was adhering to the “select-after-paste” option in the Preferences: Typing dialog box.

Fix: Drag Edit: If you were in the middle of a drag edit (using the Drag Line Up or Drag Line Down commands), and the Source Window was deactivated, the drag edit mode was not cancelled.

Fix: Relation Window: In graph mode, enabling the “Show Details” option only showed details for the root node in the graph. It now shows details for all the applicable nodes.

Fix: Symbol Lookup of class members: There were cases where class members were not found when referenced through a pointer to the class.

Fix: Symbol Lookup Recursion: There were cases where the symbol lookup engine was recursing to its limit, and failing to find the symbols. This caused errors and slow display speed.

Fix: Symbol Lookup Failures: If you did not have a project open, then symbols were sometimes not found across files.

Fix: Memory Leaking: If you disabled symbol lookup caching (in the Advanced Options dialog box), then memory was leaking badly.

Fix: Java implements keyword: The Java parser was not recognizing the implements keyword correctly. It thought it was a base class, which caused slow symbol lookup operations.

Fix: Rebuild Project: The Rebuild Project command was improved. The “Rebuild from scratch” option did not truely recreate the project from scratch. It retained the existing file list data file. Now it really creates all the project data files from scratch, plus it removes any repeated file names from the list.

Fix: Drawing in the Wrong Window: A bug in device context handling could cause portions of the Context window to display inside the current file’s window.

Fix: Drawing the Selection Bar: There was a small gap at the bottom of each file window where the selection bar color was not drawn.

Fix: Intelligent Paste: Putting the cursor at the end a line and pasting a whole line was pasting the new line above the current line, when the Intelligent Paste mode was on.

Fix: Crash: An access violation crash was fixed in the enumerator of a primitive data structure used in many places in Source Insight. The enumerator was accessing one item past the end of the list. This was causing spurious access exceptions at various times.

Fix: Crash: An access violation crash was fixed in the symbol lookup code, when processing “using” declarations in C# and C++.

Fix: C/C++: Fixed a parsing bug where #define statements in the body of a function were causing problems parsing the function.

Fix: C/C++/C#: Symbol lookup operations that involved a “using” directive inside the body of another namespace was not working. For example:

namespace outer {

namespace inner {

int a;

};

using namespace inner;

a = 0; // a was not found

};

Fix: Rename & Replace Crash: Fixed a crashing access violation that could happen while doing a rename or a replace operation were more than 1 replacement happens on a single line.

Fix: Erratic behavior and crashing has been tracked down to compiler optimization bugs in the last release. The offending optimizations have been removed.

Fix: C#, C++, Java: Symbol Lookups were failing on some symbols declared in deeply nested namespaces.

Fix: C#: A performance problem was fixed that caused display and editing to be slow when “using” statements were present that refered to unknown namespaces.

Fix: C++: Some symbol lookups that involved a “using namespace” statement were not working from inside of non-inlined member functions.

Fix: Crash that could occur if no source file windows were open.

Fix: Lookup References, Search Files, Replace Files: These searches were not finding matches inside of quoted strings if the Skip Comments option was checked.

Fix: Replace Files: There were cases where the Replace Files command would not replace items in a read-only file, even if you had the check mark “Include read-only files” checked. Also now, if you do not have that option checked and a replacement is required in a read-only file, then you will see a listing of those problem files at the end of the Search Results.

Fix: XML, HTML: Several parsing bugs were fixed:

  • Comments using <!-- and --> are now formatted with the Comment style, except for script code inside the comments.
  • Quoted strings can span multiple lines.
  • Tag strings that appear in the symbol window on the left of an HTML file that were very long, were over-writing a buffer and causing a crash.

Fix: C.tom Token Macros: The project-specific c.tom file was not being loaded from the correct directory. It should now be loaded from the project source directory (specified in the Projects Settings dialog). It was being loaded from the project data directory (“My Documents”\Source Insight\Projects\<projectname>).

Fix: C# .NET Framework Symbols: New versions of the symbols files are included in this build. The files are stored in the NetFramework project. Several missing classes from the Framework class library were added.

Fix: Setup Program: The setup program now detects when you already have an instance of Source Insight running and won’t let you proceed with the setup until you exit all instances.

Fix: Dialog boxes: Removed a potential problem that could cause a crash depending on the ordering of window messages changing from OS versions.

Fix: VBScript in ASP: If a backslash \ appeared in a quoted string before the closing quote, the script was not parsed correctly.

Fix: Cursor would flash annoyingly when attempting to parse a C/C++, C#, or Java file that had mismatched { } braces or ( ) parentheses.

Fix: Java, C#: Symbol Lookup failures when searching in an imported library.

Fix: C++: typedef const struct {....}... was not being recognized as a typedef with the const keyword in there.

Fix: Java: Parser was not recognizing the “implements” keyword for classes that implement an interface.

Fix: Relation Window: The Relation Window was not finding some classes when showing the “Derived Classes” hierarchy.

Fix: Styles and Display: When style properties combine and contain both a font scale percent and a font size in points, the font scale was overriding the font size, and the size setting would have no effect. Now, a font size will override a font scale percent.

Fix: Mouse: Cursor setting code that runs when you wave the mouse cursor over text was using a bad parameter under some cases, and could cause an exception fault.

Fix: Project Window: Some Project Window settings, such as the current view mode, and the size of columns, where not being saved and restored from session to session. The settings are stored in the configuration file.

Fix: Printing: If you used the style property “Print together with next line” too much, Source Insight could end up printing only 1 line per page. It now groups as many lines as possible on each page, while trying to service the “Print with next” requests.

Fix: Keystroke Recording: Typing the / or * or - or + keys from the numeric keypad would result in recording them twice.

Fix: Selection bug in the Select Block command.

Fix: The Search Forward for Selection command was not loading the search pattern into the search string history.

Fix: Background print pagination could cause the program to become unresponsive to user input.

Fix: C#: Symbol Lookup bugs.

Fix: C#: Enum and Enum constants were not stored in the symbol database correctly and were sometimes not found during symbol lookup operations.

Fix: Smart Rename: when prompting for each replacement, sometimes the text was not selected in the file.

Fix: C/C++, C#, Java: When you start typing a block of code and type an open curly brace, this would confuse the parser because the braces no longer matched up, and nested scopes were broken. This problem has been minimized in this version. If you are in the middle of typing, and you create a set of non-matched braces, then the parser just stops and doesn’t update the symbol table for the file. Once you use a non-typing command or save the file, then the file will get parsed as best it can, which might result in some incorrect recognition if you left the braces in a nonmatching state.

Fix: Crash while displaying source code in certain font sizes. This bug was introduced in the last release by the new spacing calculations.

Fix: Crash that could occur during project synchronization.

Fix: After pasting, the selection was off by 2 characters to the right.

Fix: After using Save All or Close All, the focus was set to the wrong source file window in some cases.

Fix: XML files were not being syntax formatted correctly.

Fix: Sometimes C/C++/C# code was displayed incorrectly using the String style. This could happen when jumping to a line in the middle of a file. This bug was introduced in build 7.

Fix: Auto Indent was not respecting the Expand Tabs option in Document Options in several cases.

Fix: Preferences: File - Two options: Make backup files when saving and Assume ^Z is end of file were swapped in their actions. You may have experienced backups not working, or ^Z not respected.

Fix: Crash when copying and pasting the “end-of-line” character on a line.

Fix: Crash when typing inside of a function under some circumstances. A symbol lookup cache was corrupted.

Fix: Rectangular copy and paste did not work when intelligent paste was enabled.

Fix: Fine tuning to intelligent paste to match indents better.

Fix: Custom Languages: Special comment heading styles were applied to comments whether the Language Property: Detect comment styles option was selected or not. Also, the automatic hiding of the //1-4 at the left side of the comment was not working for custom language.

Fix: C++/C# Class members and methods were not found from in the context of a class member function. This was happening randomly due to an uninitialized parameter.

Fix: C#, Java: The C# “base” and Java “super” keywords were not supported. The symbol lookup engine now correctly looks into the base class of the current class.

Fix: Windows XP Themes: Tabbed property sheet dialog boxes were not being drawn in the correct visual theme color.

Fix: Auto-Complete window: when the symbol auto-complete list was visible, certain command keys would not close the list and continue. For example, the Search Forward command (assigned to F4 by default) would search forward in the list, instead of in the file.

Fix: Small painting problems with scroll bars and window borders were fixed.

Fix: The View > Horizontal Scroll Bar command was not showing the horizontal scroll bar.

Fix: Various C# Parsing and Symbol Lookup bugs. Also, enum constants were not being found.

Fix: The old user data directory was still being created inside the program folder, but it was not used. The directory is not created now. Also, the SI.LOG file is now kept in the regular user data directory in “My Documents\Source Insight”.

Fix: Found and removed a rare case in which backup files would not be created when you save a file.

Fix: Sometimes during a Save All operation, the Search Results window would come to the front, but it would not be the active window for typing in.

Fix: A small “off by one pixel” error was fixed in the sizing of the horizontal scroll bar.

Fix: Window List: If the list is sorted by name, and read-only files appear in the list with the ! prefix, then they were not sorted correctly.

Fix: C/C++: Literal quoted strings that spanned more than 1 line were causing lines farther down in a file to not be parsed correctly.

Fix: Performance: If you use preprocessor macros to declare things, and Source Insight does not have a token macro defined, it will often mistake the use of the macro with a definition of the macro. That can lead of many (even hundreds) of definitions of the macro name in the symbol database. A performance problem was found and fixed that could occur in the symbol lookup engine in the case of a huge number of erroneous definitions of a symbol. This bug could cause the UI to seem to freeze for long periods, especially if the Relation Window or Context window was open and unlocked.

Fix: Crashes and odd behavior in the Context Window.

Fix: Dynamic Link error on Win 98 and NT4 trying to call SHGetFolder.

Fix: Parsing crash that could occur with very long literal strings, and in HTML.

Fix: Relation Window: Crash when building a large outline or graph that involved many source files.

Fix: C/C++: Literal quoted strings that spanned more than 1 line were not parsed correctly.

Fix: .Net Framework project was added to the project symbol path in earlier versions. This is not correct. It should not be in the project symbol path. Source Insight searches the .Net Framework project implicitly when you are editing C# code.

Fix: Declarations inside anonymous namespaces at the file scope are now treated as file scope declarations.

Fix: Conditional Parsing: the #elif statement was not interpreting the condition correctly.

Fix: Dynamic Link error on Win NT 4.0 trying to call SHGetSpecialFolder. The entry point is not available on the NT 4.0 version of shell32.dll.

Fix: The Copy Line command, followed by a Paste Line more than once, was inserting extra blank lines.

Fix: XP Theme Visual Styles were not working correctly in a Terminal Server Session.

Fix: Save All: The Save Modified Files list appeared even though the File option “Save All operation saves without prompts” was selected.

Fix: C# Display Speed was very slow at times. A bug was fixed and some optimizations were made to the symbol lookup engine.

Fix: Context Window settings were not all preserved between sessions.

Fix: Keystroke recording of the Tab key caused 2 tabs to be recorded.

Fix: Various file access fixes that could cause problems if the drive or access permissions do not allow writing.

Fix: C/C++ Parsing: Comments were not filtered out before processing #if and #ifdef directives. Thus, commenting out an #ifdef statement was not supported.

Fix: Line number display was affecting the overall line height of each line, even if the line number font was the same.