# Configuration Files Used by &kdevelop;

&kdevelop; uses a series of configuration files which are distributed amongst several directories. There are two main groups of configuration files to distinguish:

- &kdevelop; Default Configuration — files set up when &kdevelop; was installed.
- User Oriented Configuration — files which contain user modifications of the defaults as well as settings made by the &kdevelop; application itself and its plugins.

## &kdevelop; Default Configuration

On installation, &kdevelop; writes some default information files for setup and configuration purposes into subdirectories of the `$`KDEDIR`` installation directory (usually something like `/opt/kde`, `/usr/local/kde`, or some other user-defined installation directory, see Installing &kdevelop;).

### Default &kdevelop; Configuration

There is only one &kdevelop; specific default configuration file in the `$`KDEDIR`/share/config/` directory:

`kdeveloprc`

- This file contains the basic settings &kdevelop; needs to start. It will be copied to the user's `$`KDEHOME`/share/config` directory when &kdevelop; does not find a `kdeveloprc` file there on startup.

### Application Specific Defaults

Most &kdevelop; features are provided by KParts. These are basically applications specially designed to run in the &kdevelop; framework (see the overview in the Plugin Tools appendix). Each KPart application has its own set of configuration files whose defaults will be stored in several subdirectories of the `$`KDEDIR`/share/apps/` installation directory.

There are quite a lot of default configuration subdirectories in `$`KDEDIR`/share/apps/` whose names all start with a `kdev` sequence. Most of them are for &kdevelop; internal use only. They might be deliberately grouped for readability as:

- Stand-alone Applications
- Task Specific Parts
- Project Generation Parts
- Language Specific Parts

- ### Stand-alone Applications

  - `kdevelop/` — contains files to configure the &kdevelop; &IDE;:

    - `licenses/` — contains various licenses texts.

    - `pics/` — contains the picture files used for the &kdevelop;, &kdevelop; Assistant, and &kdevelop; Designer splash screens.

    - `profiles/` — contains default plugin profile settings. (Currently there is only a `tiny` profile provided which defines a minimum set of active &kdevelop; plugins.)

    - `eventsrc` — holds a lot of Process successful localization strings.

    - `kdevelopui.rc` — provides the basic menu and tool bar entries &kdevelop; uses.

    - `kdevhtml_partui.rc` — provides a Print... entry in the File menu, a Copy entry in the Edit menu, and Back and Forward arrows in the Browser Toolbar in case a &HTML; file is browsed from the Documentation plugin.

  - `kdevassistant/` — provides the menu and tool bars of the stand-alone &kdevelop; Assistant documentation browser.

  - `kdevdesigner/` and `kdevdesignerpart/` — provide menu bar and tool bars of the stand-alone &kdevelop; user interface designer.

- ### Task Specific Parts

  - `kdevabbrev/` — contains files used by the Abbreviation Expansion plugin:

    - `sources/` — contains keyword definition files used by the Expand Text command.

    - `templates/` — contains template definition files used by the Expand Abbreviation command.

    - `kdevabbrev.rc` — provides the Expand Text and Expand Abbreviation entries in the Edit menu.

  - `kdevappwizard/` — contains files used by the &appwizard; part:

    - `importfiles/` — contains `.kdevelop` project files which control the initialization of a new project.

    - `imports/` — contains templates to set up project specific `.desktop` files.

    - `template-common/` — contains various files commonly included in the project source directories.

    - `templates/` — contains configuration files which describe the information to be included in a given project source directory.

    - `*.png` — project preview images used by the &appwizard;.

    - `*.tar.gz` — tarballs containing the source files to be included in a new generated project directory.

  - `kdevastyle/` — provides the Reformat Source entry in the Edit menu.

  - `kdevautoproject/` — provides most of the entries in the Build menu and the Build Toolbar (&kdevelop;) toolbar.

  - `kdevclassview/` — contains files used by the Class View project plugin:

    - `pics/` — contains the icons used in the Classes classview tree.

    - `kdevclassview.tc` — provides the Class Inheritance Diagram entry in the Projects menu as well as the classes navigation combo box in the Browser Toolbar.

  - `kdevcloser/` — provides the Windows menu close entries.

  - `kdevctags/` — provides the CTags entry in the Tools menu for the CTags Frontend project plugin.

  - `kdevcvsservice/` — provides the icon used by the CvsService tab and a short shell script used to add a new entry to the &cvs; repository, both used by the CVS Integration project plugin.

  - `kdevdebugger/` — provides the Debug menu entries for the Debugger Frontend project plugin.

  - `kdevdiff/` — provides the Difference Viewer entry in the Tools menu.

  - `kdevdistpart/` — provides the Distribution & Publishing entry in the Project menu for the Final Packaging Support project plugin.

  - `kdevdocumentation/` — contains files used by the Documentation plugin:

    - `en/` and `pics/` — contain files used by the htdig search tool.

    - `tocs/` — contain the default &kdevelop; documentation content description files (see the description in Basic Structure of &kdevelop; TOC Files).

    - `kdevpart_documentation.rc` — provides the search related entries in the Help menu.

  - `kdevdoxygen/` — provides the menu entries for the Doxygen Support project plugin.

  - `kdevfilecreate/` — contains files used by the New File Wizard:

    - `file-templates/` — provides the initial text contents to be put into the new source file of a given type.

    - `kdevpart_filecreate.rc` — provides the New entry in the File menu.

    - `template-info.xml` — contains descriptions of the available file types to be displayed in the New File tool view.

  - `kdevfilter/` — provides the Execute Command... and Filter Selection Through Command... entries in the Tools menu used by the Shell Filtering and Insertion plugin.

  - `kdevfullscreen/` — provides the Full Screen Mode entry in the View menu and the according tool bar icon.

  - `kdevgrepview/` — provides the Find in Files...entry in the Edit menu used by the Grep Frontend plugin.

  - `kdevhistory/` — provides the Back and Forward entries in the View menu.

  - `kdevjavadebugger/` — provides a Java Debug menu in order to debug a &Java; application.

  - `kdevoutputviews/` — provides the Next Error and Previous Error entries in the View menu.

  - `kdevpartexplorer/` — provides the Part Explorer entry in the Tools menu used by the Part Explorer Tool plugin.

  - `kdevquickopen/` — provides the Quick Open File.. entry in the File menu and the Quick Open Class... and Quick Open Method entries in the Tools menu used by the Quick Open project plugin.

  - `kdevregexptest/` — provides the Debug Regular Expression... entry in the Tools menu used by the Regular Expression Tester plugin.

  - `kdevreplace/` — provides the Find-Select-Replace... entry in the Edit menu used by the Replace Part plugin.

  - `kdevtipofday/` — provides the Tip of the Day entry in the Help menu as well as a HTML-File containing the available tips.

  - `kdevtools/` — controls various menu entries ceated by Tools Menu and External Tools Menu settings provided by the Tools Menu Addition plugin.

  - `kdevvalgrind/` — provides the Valgrind Memory Leak Check and Profile with KCachegrind entries in the Debug menu used by the Valgrind Frontend plugin.

- ### Project Generation Parts

  - `kdevadaproject/` — provides entries for the Build menu and according tool bar icons to build an Ada application.

  - `kdevantproject/` — provides entries for the Build menu when the Ant project generator is used.

  - `kdevautoproject/` — provides entries for the Build menu and according tool bar icons when working with the &GNU; Tools based &automake; project generator. Additionally provides the Add Translation and Build Configuration entries to the Project menu.

  - `kdevcustomproject/` — provides entries for the Build menu and according tool bar icons when the project is based on custom Makefils.

  - `kdevgenericproject/` — contains menu definitions for an experimental generic project generator. Currently (version 3.1.0) unused.

  - `kdevhaskellproject/` — provides entries for the Build menu and according tool bar icons to build a Haskell application.

  - `kdevpascalproject/` — provides entries for the Build menu and according tool bar icons to build a Pascal application.

  - `kdevtrollproject/` — provides entries for the Build menu and according tool bar icons to build an application using the &Qt; QMake project manager.

- ### Language Specific Parts

  - `kdevadasupport/` — provides entries in the Tools menu and according tool bar icons needed to develop Ada applications.

  - `kdevbashsupport/` — provides entries in the Build menu and according tool bar icons needed to develop Bash scripts.

  - `kdevcppsupport/` — contains files used by the &appwizard; to build C++ applications:

    - `newclass/` — contains header and source templates from which the &appwizard; builds the according source files.

    - `subclassing/` — contains templates which the &appwizard; uses to set up initial class declarations/definitions in the source files.

    - `templates` — contains templates from which the &appwizard; sets up the default header and source template files to be used by the &nfwizard;.

    - `configuration` — dummy template to add macros.

    - `kdevcppsupport.rc` — provides the Complete Text and Make Member entries fo the Edit menu, the Switch Header/Implementation entry for the View menu, and the New Class entry for the Project menu as well as a New Class icon for the Browser Toolbar.

  - `kdevfortransupport/` — provides entries in the Build menu needed to develop Fortran applications.

  - `kdevhaskellsupport/` — provides entries in the Build menu and according tool bar icons needed to develop Haskell applications.

  - `kdevjavasupport/` — contains the UI definition needed to develop &Java; applications.

  - `kdevpascalsupport/` — contains the UI definition needed to develop Pascal applications.

  - `kdevperlsupport/` — provides Project and Help menu entries needed to develop Perl scripts.

  - `kdevphpsupport/` — contains UI and PHP function definition files needed to develop PHP scripts.

  - `kdevpythonsupport/` — provides Build and Help menu entries and according tool bar icons needed to develop Python scripts.

  - `kdevrubysupport/` — provides Build menu entries and according tool bar icons needed to develop Ruby scripts.

  - `kdevscriptproject/` — provides th UI definitions needed to develop custom projects. Currently (version 3.1.0) unused.

  - `kdevsqlsupport/` — provides th UI definitions needed to develop SQL projects. Currently (version 3.1.0) unused.

## User Oriented Configuration

All information about user defined settings is kept in two subdirectories of `$`KDEHOME``, namely:

- Application Specific Configuration in the `$`KDEHOME`/share/apps/` directory, and
- Resource Configuration File in the `$`KDEHOME`/share/config/` directory.

### Application Specific Configuration

Any user changes to the &kdevelop; Default Configuration settings as well as user specific settings which are not kept in any of the Resource Configuration Files are found in `kdev...` subdirectories of the `$`KDEHOME`/share/apps/` directory.

Most of these configuration files are however used by various &kdevelop; plugins in order to provide some specific menu and/or toolbar entries. Thus they are of interest only in case something went really wrong with the user interface.

In case the contents of these directories mirror those of the Default Configuration settings, &kdevelop; will have copied them from `$`KDEDIR`/apps/` into the `$`KDEHOME`/apps/` directory on its initial start. Any subsequent changes will be made to these copies only. The Default Configuration settings remain unchanged in any case.

- `kdevabbrev/` — contains files used by the Abbreviation Expansion plugin:

  - `sources/` — currently empty; &kdevelop; uses the default keyword definition files for Expand Text commands.

  - `templates/` — contains the user modified template definition files used by the Expand Abbreviation command.

  - `kdevabbrev.rc` — provides the Expand Text and Expand Abbreviation entries in the Edit menu.

- `kdevappwizard/` — only provides the New Project... and Import Existing Project... entries in the Projects menu. The &appwizard; will use the default configuration settings for its actual works.

- `kdevastyle/` — provides the actual Reformat Source entry in the Edit menu.

- `kdevautoproject/` — provides the actual entries in the Build menu and the Build Toolbar (KDevelop) toolbar.

- `kdevclassview/` — provides the Class Inheritance Diagram entry in the Project menu and the class browser combo box in the Browser Toolbar by the Class View project plugin.

- `kdevcloser/` — provides the Close Selected Windows... entry in the Windows menu.

- `kdevcppsupport/` — holds the acual configuration used by the &appwizard; to build C++ applications. The &appwizard; however uses its main bulk of configuration information directly from the default configuration directory. See there for more detail.

  - `newclass/` — contains the actual header and source templates from which the &appwizard; builds the according source files.

  - `pcs/` — contains database files &kdevelop; uses build the actual Persistent Code Store (`.pcs`) file of a &kde; C++ project.

  - `kdevcppsupport.rc` — provides the Complete Text and Make Member entries fo the Edit menu, the Switch Header/Implementation entry for the View menu, and the New Class entry for the Project menu as well as a New Class icon for the Browser Toolbar.

- `kdevctags/` — provides the CTags entry in the Tools menu for the CTags Frontend project plugin.

- `kdevdebugger/` — provides the Debug menu entries for the Debugger Frontend project plugin.

- `kdevdiff/` — provides the Difference Viewer entry in the Tools menu.

- `kdevdocumentation/` — contains the actual files used by the Documentation plugin in addition to the default configuration files. See there for more detail.

  The directories in `kdevdocumentation/` mainly hold actual bookkeeping information. The actually set up documentation files are kept in `doc...pluginrc` files in the `$`KDEHOME`/share/config/` directory.

  - `bookmarks/` — maintains the entries in the Bookmarks tab of the &kdevelop; Documentation plugin.

  - `index/` — holds various cache files &kdevelop; uses to speed up indexed documentation searches in the Index tab of the Documentation plugin.

  - `search/` — contains files used by the htdig search tool which serves search calls from the Search tab of the Documentation plugin.

  - `kdevpart_documentation.rc` — provides the search related entries in the Help menu.

- `kdevdoxygen/` — provides the menu entries for the Doxygen Support project plugin.

- `kdevelop/` — contains some actual settings &kdevelop; uses for its basic setup:

  - `profiles/` — provides actual plugin profile setting. (Initially there is only a `FullIDE` profile which defines a full set of initially active &kdevelop; plugins.)

  - `kdevelopui.rc` — provides the basic menu and tool bar entries &kdevelop; uses.

- `kdevfilecreate/` — contains files used by the New File Wizard:

  - `file-templates/` — provides the actually used text contents to be put into the new source file of a given type. More file templates are found in the default configuration files directory.

  - `kdevpart_filecreate.rc` — provides the New entry in the File menu.

  - `template-info.xml` — contains descriptions of the available file types to be displayed in the New File tool view.

- `kdevfilter/` — provides the Execute Command... and Filter Selection Through Command... entries in the Tools menu used by the Shell Filtering and Insertion plugin.

- `kdevfullscreen/` — provides the Full Screen Mode entry in the View menu and the according tool bar icon.

- `kdevgrepview/` — provides the Find in Files...entry in the Edit menu used by the Grep Frontend plugin.

- `kdevoutputviews/` — provides the Next Error and Previous Error entries in the View menu.

- `kdevpartexplorer/` — provides the Part Explorer entry in the Tools menu used by the Part Explorer Tool plugin.

- `kdevquickopen/` — provides the Quick Open File.. entry in the File menu and the Quick Open Class... and Quick Open Method entries in the Tools menu used by the Quick Open project plugin.

- `kdevregexptest/` — provides the Debug Regular Expression... entry in the Tools menu used by the Regular Expression Tester plugin.

- `kdevreplace/` — provides the Find-Select-Replace... entry in the Edit menu used by the Replace Part plugin.

- `kdevtipofday/` —provides the Tip of the Day entry in the Help menu. The HTML-File containing the available tips is provided as a default configuration file only.

- `kdevtools/` — controls various menu entries ceated by Tools Menu and External Tools Menu settings provided by the Tools Menu Addition plugin.

- `kdevvalgrind/` — provides the Valgrind Memory Leak Check and Profile with KCachegrind entries in the Debug menu used by the Valgrind Frontend plugin.

### Resource Configuration Files

There are two groups of &kdevelop; configuration files in the `$`KDEHOME`/share/config/` directory, distiguished by their surrounding character sequences:

- `doc...pluginrc` denotes files used by the documentation plugin.
- `kdev...rc` denotes configuration files used by &kdevelop; itself and its available plugins.

### Configuration Files Used by &kdevelop;

- `kdevabbrevrc` — holds the current state of the Abbreviations configuration provided by the Abbreviation Expansion plugin.

  This only records whether the abbreviations will be used or not. The actual definitions of new abbreviations will go into the `$`KDEHOME`/share/apps/kdevabbrev/templates/templates` file.

- `kdevassistantrc` — holds some configuration states specific of the stand-alone &kdevelop; Assistant documentation browser.

  Most common configuration settings are shared with the &kdevelop; IDE `kdeveloprc` file.

- `kdevassistantuimode4rc` — holds the current MDI configuration states (dock positions &etc;) of the stand-alone &kdevelop; Assistant documentation browser.

- `kdevclassviewrc` — holds the View Mode setting of the Classes class browser tab provided by the Class View project plugin.

  This is a global setting, although the Class View plugin may be disabled on a per project basis. Any change in this setting will be globally updated whenever the current project is closed and thus affect all subsequently loaded projects.

- `kdevcppsupportrc` — holds some settings used to set up CPP source files. In particular you will find the settings made on the C++ Class Generator configuration dialog in here.

- `kdevdocumentationrc` — holds actual settings the Documentation plugin uses.

- `kdeveloprc` — holds the global settings the &kdevelop; IDE and the &kdevelop; Assistant stand-alone documentation browser will use.

- `kdevelopuimode4rc` — holds the current MDI configuration states (dock positions &etc;) of the &kdevelop; IDE.

- `kdevfileselectorrc` — holds actual settings the File Selector plugin uses.

- `kdevfileviewrc` — holds the actual filename color settings the CVS Integration (Cervisia) project plugin uses for display.

- `kdevfilterrc` — holds actual settings the Shell Filtering and Insertion plugin uses.

- `kdevgrepviewrc` — holds actual settings the Grep Frontend plugin uses.

- `kdevsnippetrc` — holds actual settings the Code Snippets plugin uses.

- `kdevtoolsrc` — holds actual settings the Tools Menu Addition plugin uses.

### Configuration Files Used by the Documentation Plugin

- `docchmpluginrc` — holds information about the actual &Microsoft; CHM help files as defined on the CHM Documentation Collection configuration page.

- `doccustompluginrc` — holds information about any custom documentation file defined on the Custom Documentation Collection configuration page.

- `docdevhelppluginrc` — holds information about the actual GNOME 2 DevHelp documentation files as defined on the Devhelp Documentation Collection configuration page.

- `docdoxygenpluginrc` — holds information about the actual Doxygen generated API documentations as defined on the Doxygen Documentation Collection configuration page.

- `dockdevtocpluginrc` — holds information about the actual KDevelopTOC structured documentation files as defined on the KDevelopTOC Documentation Collection configuration page.

- `docqtpluginrc` — holds information about the QT documentation files actually included on the Documentation CollectionQt configuration page.

## Project Dependent Configuration

Most project dependend configuration is kept in the `<project-name>.kdevelop` and `<project-name>.kdevses` &kdevelop; project configuration files rather than in separate files as the other, more global, configuration settings. In short, those files are meant for:

- `<project-name>.kdevelop` — global project configuration information.
- `<project-name>.kdevses` — configuration information needed to restore the specific behaviours of the running session.

Both are &XML; coded files. They can be viewed and (cautiously) altered using any text editor.

### Persistent Code Store Files

There is a third project dependend configuration file, the `<project-name>.kdevelop.pcs` Persistant Code Store. This is a binary coded file holding an internal parser cache for the most part in order to speed up the loading sequence of the project. Additionally, this Persistant Code Store keeps information use by the Code Completion facility of &kdevelop;.

There can be additional Persistant Code Store files be set up on the Code Completion tab of the C++ Specific project configuration page. Information about these additional `.pcs` is kept globally in the `$`KDEHOME`/share/apps/kdevcppsupport/pcs/` directory.