Project Settings

The Project Settings command allows you to set various options that govern the current project. If no project is currently open, then the Project Settings command allows you to set the default options inherited by sub­sequently created new projects.

The Project Settings are saved with the project data file. These settings are independent of the configuration file.



Conditional Parsing

This controls the settings of condition compilation values.


Click to edit the conditions defined that are specific to the current project only. The conditions are only in effect when the current project is open, and only for files that belong to the project. Another quick way to edit the conditions is to use the Edit Condition command.

Project Source Directory

This is the directory you consider to be the "root" of your project’s source tree. When Source Insight displays file names, it will show them relative to this directory. If you leave this text box blank, then Source Insight will use the project data directory where you created the main project file, with the .siproj extension. See: New Project.

The project data files are stored in the project data directory - which you specified when you created the proj­ect. Typically source files reside somewhere else. For example, you could create a project stored locally on your workstation, and add files from a remote network drive to the project. The file names will not contain extra path information if you specify the network drive path to the source files as the project source directory.

Using different data vs source directories is helpful when you are not allowed, or unable, to create project data files in the same directory as the source files. Some project administrators will allow you read-only access to the source code share point, and do not want you to put any Source Insight files there.

You can change the project source directory setting in the Project Settings dialog at any time after the project is created.

The project source directory path is stored with the project data in a relative format. The path is relative to the directory with the .siproj file. That allows projects that were created on one machine to be opened remotely from another without confusing the logical drives. It also allows copying whole project directory trees to new locations.

Some Custom Command string meta-character substitutions are also affected by this path setting. The %j (project source directory) and %v (project source directory volume letter) refer to this path value, and not where the .siproj file is.

See: Project Directories.

Project Backup Directory

Specified where you want to keep backups of your source files. By default, a Backup folder is created within your project folder. You can use Path Variables in this field. See: Predefined Path Variables.

Project Source Files

Add and remove source files manually

The project will contain only the files that you added using Project > Add and Remove Files.

Use a Master File List

The project will contain whatever is listed in the Master File List. You can still use add and remove files from the project manually. The changes you make will be saved to the MFL. If the MFL contains a file name that is not in your project, then it will get added automatically to your project. If the MFL does not contain a file that is in the project, then it will be removed from the project. See: Using a Master File List.

You can use Path Variables in this field. See: Predefined Path Variables.

Symbol Database Options

These options affect what is stored in the project's symbol database. You should choose these options before you add a bunch of files to your project. If you change these options after the project is already built, then the project will need to be rebuilt. Source Insight will rebuild it for you.

Quick browsing for member names

If enabled, you only need to type the structure and class member names in order to perform partial matches on their names. However, the symbol index size and memory usage can increase by a factor of two or more. This option is recommended if you are using an object-oriented language primarily, so that you can find member functions and variables without having to type in the class name too.

Quick browsing for symbol name fragments

If enabled, you only need to type one or two name fragments of symbol names in order to perform partial matching on their names. However, the symbol index size and memory usage can increase by a factor of four or more. By indexing name fragments, you can use name fragment matching to quickly find symbols, even if you don't know what letters the symbol names begin with.

This option is not recommended for external common projects that you intend to only refer to via the project symbol path or the Import External Symbols feature. In that case, name fragment indexing offers no benefit and just uses extra disk space.

If your project is very large (over several thousand files, or hundreds of thousands of symbols), turning off this option can improve performance by using less memory and speeding up the Project Symbol List win­dow.

If both check boxes are turned off, then the list filtering in the Project Symbol List panel will revert to simple prefix matching. However, the Symbol Window on the left side of each source window, and the Project Win­dow file list will still allow name fragment browsing.

Index Performance

Name Fragment matching is such a useful feature, that we recommend enabling it, unless you think perfor­mance is affected. The symptoms of too large an index are:

If you experience slow-downs and you have a large project, (say over 300,000 symbols,) you should try turn­ing off Quick browsing for symbol name fragments.

You can find out how large the database is by selecting Project > Rebuild Project and looking at the statistics on the bottom of the dialog box. Just cancel this dialog box when you are done. If the index entries are in the millions, then things can start to slow down. However, most modern machines should handle this size proj­ect well.