### 5.8 Handling of case exceptions

GPS keeps a set of case exceptions that is used by all case insensitive languages. When editing or reformatting a buffer for such a language the case exception dictionary will be checked first. If an exception is found for this word or a substring of the word, it will be used; otherwise the specified casing for keywords or identifiers is used. A substring is defined as a part of the word separated by underscores.

Note that this feature is not activated for entities (keywords or identifiers) for which the casing is set to `Unchanged`. See see The Preferences Dialog.

A contextual menu named Casing has the following entries:

Lower entity
  Set the selected entity in lower case.
Upper entity
  Set the selected entity in upper case.
Mixed entity
  Set the selected entity in mixed case (set the first letter and letters before an underscore in upper case, all other letters are set to lower case).
Smart Mixed entity
  Set the selected entity in smart mixed case. Idem as above except that upper case letters are kept unchanged.
Add exception for entity
  Add the current entity into the case exception dictionary.
Remove exception for entity
  Remove the current entity from the case exception dictionary.

To add or remove a substring exception into/from the dictionary you need to first select the substring on the editor. In this case the last two contextual menu entries will be:

Add substring exception for str
  Add the selected substring into the case substring exception dictionary.
Remove substring exception for str
  Remove the selected substring from the case substring exception dictionary.