Source Insight – version 4.0.0120

Source Insight

Version 4.0.0120 - November 12, 2020

New: Added support for monospaced programming fonts that use ligatures for special character combinations. Example fonts are Fira Code and Jet Brains Mono. There is also a display preference that enables font ligatures. It is enabled by default, but you might want to disable it to show a font without its ligatures. To access the option, select Options > Preferences > Display and set the item "Enable font ligatures for character combinations" to your preference.

Note that Source Insight has had a feature for a long time that substitutes certain operators with symbols. For example -> is replaced with  . To control it, select Options > Preferences > Syntax Decorations. The syntax decorations can be used in combination with the new font ligature support.

Also note that some fonts use make use of the font leading area. Source Insight has an option that reduces the font leading in order to condense more lines vertically.  See Options > Preferences > Display > Spacing > "Smaller line heights". Disable that option if you are using a font that has glyphs that extend into the leading; otherwise the top or bottom of some characters might be clipped out.

New: When a file changes externally, the Reload File prompt appears. There are new buttons in the prompt: Yes and View reloads the file and activates its window.  Yes and Compare makes a backup of the current file buffer, reloads the file, and uses the File Compare panel to show the differences. If you don't want to keep the changes, you can restore from the backup file. See the next item.

New: File > Open Backup File there are new buttons: Restore File loads the selected backup into the current file buffer. The buffer remains unsaved, and it is possible to undo. Compare opens the File Compare panel to show the differences between the current file buffer and the selected backup file. Tools > Compare With Backup also has a similar Restore File button.

Fix: Source Insight could pause for several seconds periodically if you have many project files on a remote drive. The pause was caused by the Project Folder Browser panel. The Folders panel now populates in a separate thread. 

Fix: Source Insight could sometimes prompt to reload a file that changed, even if the file didn't change. It was not consistent, but this only would happen if the file was on a network drive.

Fix: Reformat Source Code: statements using a C-style cast caused an incorrect line break after the cast.

Fix: Searching for a long string could crash.

Fix: Misc smaller bug fixes.

Source Insight – version 4.0.0118

Source Insight

Version 4.0.0118 - August 10, 2020

Fix: In some situations, changing screen resolutions or monitors could cause docked panels to get positioned incorrectly.

Fix: The end-of-line character(s) might not be preserved if you used the Paste command and it changed the indent level.

Fix: Auto-complete was not proposing struct members if the struct was anonymous and nested inside another struct and the nested struct was used to declare a member of the outer struct. eg:

struct Outer { struct { int member_foo; } data; }; 
struct Outer an_outer;
an_outer.data.m <-- member_foo not proposed

Fix: Lookup References & Smart Rename: if you selected a (non-class member) function prototype and performed the operation, Source Insight would prompt you to choose either the function prototype or the function definition with the same name. Now it assumes you are referring to both. This already worked correctly for class member function prototypes vs. member functions.

Fix: C++: Using the = default or = delete keywords after a member function definition outside of the class body was not recognizing the function. Eg: ClassFoo::ClassFoo() = default;

Fix: Overview scroll control: the code popup was not working.

Fix: Other stability fixes.

Source Insight – version 4.0.0116

Source Insight

Version 4.0.0116 - July 3, 2020

End-of-Line Characters: A number of fixes and enhancements were made to handle mixed end-of-line (EOL) sequences:

  • If you open a file that has a mixture of line endings, Source Insight will retain the line endings and not change them when you save the file.
  • You can use File > Save As and select a new EOL format to save and change the line endings to the selected format.
  • When you open a file with mixed line endings, you will get a prompt to normalize and fix the line endings. You can choose at that point what EOL format to use. If you don't want this prompt, you can enable or disable it from Options > Preferences > Files with the option: " Ask to fix inconsistent line endings". It is enabled by default.
  • You can fix inconsistent EOL formats in an open file buffer by selecting Edit > Special Edit > Normalize End Of Line Characters; you can choose the EOL format. You can also select whole lines and only process the selected lines.
  • The default EOL format set in Options > Preferences > Files is used for new files that you create in Source Insight. Previously it was also used on any lines you edited in a file. Now, editing a file that you opened retains the EOL format of the original line.
  • You can force all files to be saved with the default EOL format by enabling a new option in Options > Preferences > Files: "Convert to default line ending format when saving". This option is disabled by default. It converts all EOL sequences to the default setting whenever you save a file.
  • You can make the EOL characters visible by selecting View > Visible End Of Line. The EOL visibility is controlled per file type in Options > File Type Options. The display formatting of the EOL marks are controlled by a new style: "End of Line". You can edit this in Options > Style Properties. For example, you can change the background color or size. 
  • There are 2 options for how the EOL marks are displayed. You can set the option in Options > Preferences > Syntax Decorations.

File Type Options - Reorganized the dialog box; Added "Visible End of Line" option, and changed the Screen/Printer Font buttons to use a mini-menu to select fonts.

Context Window: clicking on a local variable or function parameter highlights references within the function. Note: the highlights use the style named "Reference Highlight" from Options > Style Properties.

Context Window: clicking on the toolbar button for "Show in Relation Window" now opens the Relation window if it is not already visible.

Replace Files and Smart Rename: Files that were opened and changed by the replace/rename operation were left open as unsaved file buffers. Now the changes in those files are saved back to disk. Prior to this change, after a Replace Files operation, some changes might not be saved to files unless you used the File > Save All command.

General Display: Resizing the program window very small or narrow would cause docked panels to be closed if they got too small. This was by design, but has now been changed so the panels do not close. This avoids layout problems when moving the program window between monitors with different sizes or resolutions, or when waking from sleep/hibernation, or when connecting to a different monitor, or remote desktop.

File Compare panel: now syncs to the current selection in the Directory Compare panel, so you can use them side by side and they behave as a whole. Also improved responsiveness of the File Compare panel.

File Compare panel: the Copy Line Right/Left feature was not copying all the lines in a block if you selected a single line within the block.

Relation Windows: Changing the screen resolution, switching to a new monitor, or sometimes waking from sleep/hibernation would cause the Relation window(s) contents to disappear if the Relation Window was locked.

Relation Window: fixed a performance problem if you selected a language keyword or other common "stop" word that would cause a lot of extra work.

Overview scroller (the mini-view): fixed a bug where it might not respond to clicks if some parts of the source file were collapsed using the outlining features.

Enhanced vertical scroll bar: Added some visual updates; added an option to highlight the current function; Shift-Key plus mouse-click will scroll to the clicked position; reduced flickering of code tip window that displays while dragging the thumb control.

JSON files: fixed a parsing bug where it did not show symbols if the JSON contained an empty array within it. 

Source Insight – version 4.0.0114

Source Insight

Version 4.0.0114 - April 27, 2020

Fix: Snippet Properties: fixed a number of bugs when editing the text of the snippet.

Fix: The Check for Updates command could cause a crash for some users behind a network proxy. The same bug could cause the program to crash a few seconds after launching when it was checking for an update in the background. 

Fix: Other stability fixes.

Source Insight – version 4.0.0112

Source Insight

Version 4.0.0112 - April 10, 2020

Change: Improved memory management for project database files. This results in faster display and symbol lookup speed when using multiple import projects, and less memory requirements to support large projects. If you notice any large changes, please give us feedback. There are some parameters that can be adjusted in the field.

Change: You can resize the following dialog windows, and the positions are remembered between sessions:
- Add and Remove Project Files - to see longer path names or more files in the lists.
- Symbol Info
- Multiple Definitions (appears when you Jump to Definition and more than one symbol matches).
- Manage Visual Themes
- Import External Symbols
- Compare with Backup File
- Open Backup File
- Conditional Parsing List

Change: Improved the long-file-path display trimming by showing more of the path if possible. This option is set in Options > Preferences > Display > "Trim long path names with ellipses".

Change: Improved mouse text selection responsiveness over slow remote desktop connections.

Fix: In some cases, Source Insight would hang or keep the system clipboard busy (locked). This bug was unfortunately introduced in release 4.0.0107.

Fix: PHP: Correctly parses Return Type Declarations: Eg: function foo () : string { .... }

Fix: The message "An Update is Available" would keep popping up even after dismissing if you were in certain time zones.

Fix: Very rare, but double-clicking the mouse on a list item (such as in Project > Open Project) could cause a crash.

Source Insight – version 4.0.0107

Source Insight

Version 4.0.0107 - February 14, 2020

Fix: A Clipboard handling bug was introduced in version 4.0.0104 in December 2019. Sometimes Source Insight would not update the system clipboard, or would paste the wrong contents.

Fix: Misc Perl parsing and display bugs.

Source Insight – version 4.0.0106

Source Insight

Version 4.0.0106 - January 7, 2020

Fix: For pure ANSI C files, a nested struct's members are in the parent struct's scope. For example:

struct Outer { struct Inner { int hello; }; } an_outer; 
an_outer.hello = 1; // member "hello" is visible in Outer.

Fix: The following fix from version 4.0.0104 was not quite correct. It has been fixed: For ANSI C: in a nested struct, the inner struct name is also defined and in scope outside the outer struct, whereas in C++ it's defined only within the scope/namespace of the outer struct.

Fix: Relation Window regression bug appeared in version 4.0.0104 that caused references to anonymous struct members to not be found.

Fix: Relation Window: when showing references, a function could appear to refer to itself.

Fix: Lookup References and Relation Window was not correctly associating a variable with its initializer list.

Fix: Other small fixes.

Source Insight – version 4.0.0104

Source Insight

Version 4.0.0104 - December 9, 2019

Fix: C/C++: Some casts were not understood. For example: ((foo *)ptr)->member... Also added better understanding of static_cast<>, dynamic_cast(), etc.

Fix: C/C++: multiple declarations within a for-statement were not recognized. For example: for (int i = 0, j = 0; ... ; ...) { ... }

Fix: ANSI C: in a nested struct, the inner struct name is also defined and in scope outside the outer struct, whereas in C++ it's defined only within the scope/namespace of the outer struct. The "ANSI C" language type in Source Insight now supports this correctly. If you use pure C code, consider changing the File Type Options to associate *.c and *.h with the "C Source File" type, and not the "C/C++ Source File" type. (see File Type Options)

For example:

struct Outer { struct Inner { ... }; };
struct Inner foo; // you can refer to Inner outside of Outer in C

Fix: C/C++: Parsing bug when using a token macro that expands to a try or catch block.

Fix: Sometimes the Relation window and Search Results didn't show a proper function name, but would instead show something like "if (condition...)..." which is actually a snippet of an if or while statement contained within the function in question.

Fix: C#: some generic classes were not parsed correctly.

Fix: Auto-completion was not proposing struct members for some nested structs.

Fix: Perl: many fixes to parsing and syntax formatting.

Fix: If a block of code was collapsed, searching or jumping to a definition would not expand the blocks to reveal the target line.

Fix: Scrolling down using Page-Down, and then Page-Up did not return to the same line number at the top of the window.

Fix: In some conditions, you might be prompted to reload a file that has changed, when in fact the file had not changed.

Fix: Context window was tracking identifiers inside string literals. The default setting was supposed to turn this off.

Fix: Formatting: references to member functions were not always styled with the correct "Ref To Method" style.

Fix: File Compare window: some keyboard commands were not working.

Fix: Stability fixes.

Performance: Initial startup and Load Configuration was sped up.

Performance: Small speed up in Lookup References and Relation Window.

Performance: Improved display update speed while typing when the Overview control is visible.

New: You can disabled text scaling with CTRL+Mouse Wheel. Normally mouse-wheel plus the CTRL key scales text. Select Options > Preferences > General and use the option that reads "Allow Ctrl+Mouse Wheel to scale text".

New: License Installation command line options were added to help make automated installations easier. You can read about them in the Automated Installation topic in Frequently Asked Questions