# Editing Tools

## Code Snippets

### Features (preliminary overview)

- SnippetPart adds a tool-view which by default docks to the right

- Adding, editing and removing of snippets is available via a popup-menu

- Double-clicking a snippet form the list inserts it into to the active view at the current cursor position

- Tool tips show the content of a snippet

- Snippets are stored in the users home-directory, so every user can have his own snippets

- Snippets can contain variables in the style of $`VARNAME`$. On using the snippet the user is prompted to enter replacement value for the variables

## Keyboard Mapping

In the following, we will list the default keybindings of the default editor. You can configure them as you like (how?)

Left | Moves one character left
Right | Moves one character right
&Ctrl; Left | Moves one word left
&Ctrl; Right | Moves one word right
Up | Moves up one line
Down | Moves down one line
Page Up | Moves up one page
Page Down | Moves down one page
&Ctrl; Page Down | Moves to the beginning of the file
&Ctrl; Page Down | Moves to the end of the file
Home | Moves to the beginning of the line
End | Moves to the end of the line

For all the keys above, the &Shift; key can be pressed additionally, to mark from the current cursor position to the one afterwards.

Backspace | Deletes one character left
Delete | Deletes the character under the cursor
&Ctrl; C | Copies the selected text to the clipboard
&Ctrl; V | Pastes the selected text from the clipboard
&Ctrl; X | Deletes the selected text and puts it into the clipboard
&Ctrl; Z | Undo
&Shift;&Ctrl; Z | Redo

## The Problem Reporter

(... to be written ...)

## Searching and Grepping

### Searching for Text

&Ctrl;F- Find &Ctrl;R- Replace

### ISearch

The conventional search with Edit Find requires you to specify the full search term before starting. Most of the time, it is much faster to search incrementally. If you click into the edit field labeled ISearch in the toolbar, the search is performed as you type. You will find that often the desired term is already found after typing in 3 or 4 letters.

### Grep

Both search mechanisms described above are restricted to searching within one source file. An additional tool which allows you to search through a (possibly large) number of files is available through the Search in Files... item in the Edit menu. It is basically a frontend for the &grep;(1) program.

In the dialog, you can specify which files are searched. There is a number of wildcard patterns available in a combobox. In this way, you can easily restrict the find mechanism to header files. Furthermore, you specify a directory where the search is started. If you check the Recursive box, the search iterates through all directories in the hierarchy below this one.

The search term is in general a regular expression following POSIX syntax. For example, you can use the term `"\<K.*"` if you want to find all words which begin with the letter K. The following characters are interpreted in a special way:

`.` | Matches any character
`^` | Matches the beginning of a line
`$` | Matches the end of a line
`\<` | Matches the beginning of a word
`\>` | Matches the end of a word
`?` | The preceding item matches less than once
`*` | The preceding item is matched zero or more times
`+` | The preceding item is matched once or more times
`{n}` | The preceding item is matched exactly n times
`{n,}` | The preceding item is matched n or more times
`{,n}` | The preceding item matches less than n times
`{n,m}` | The preceding item matches at least `n` times but less than `m` times

Backreferences to bracketed subexpressions are also available by the notation `\n`.

For C++ programmers, as special bonus there are some search templates available for typical patterns. These allow you to search for example all calls of member functions of a certain object.

Once you start the search by clicking on the Search button, it will be performed by an external, asynchronous process. All found items will appear in the view called Grep. You can then jump to the found items by clicking on them. Note that grep scans the files as they stored in the file system. If you have modified versions of them in your editor, you may get some mismatches in the line number, or some found items will be invalid. You can avoid this by saving all files beforehand.

## Code Completion

(... to be written ...)

## Creating New Files and Classes

(... to be written ...)

### Editing the Templates

(... to be written ...)