Status & Roadmap
Authors & License
Funding U++
Search on this site

SourceForge.net Logo


Table of contents


1. Introduction

2. Assist - code-completion

3. Simple symbol completion, abbreviations

4. Code navigation

5. Navigator

6. Graphical symbols used by Assist++

7. Definition/Declaration conversion

8. Virtual functions


10. Layout code generation


1. Introduction

Assist++ analyzes C++ code of your project and provides several useful tools. The C++ code analyzer is quite good, it is able to cope with most C++ features used in U++, including templates. But as C++ is syntactically very complex language and speed is important in this case, some compromises had to be made. There is a separate topic about how TheIDE parses C/C++ code and maintains the database of items.

2. Assist - code-completion

This tool provides list of class members after typing '.', '->', '::'. It can also be invoked explicitly by pressing Ctrl+Space. In that case, it can also list a complete list of global objects (classes, functions, variables, macros, ...) starting with the letters immediately preceding current position of the cursor.



When list is displayed, you can use vertical movement keys or mouse to select desired method and then press Enter to insert it. Alternatively, you can press Tab to insert the first item in the list.

You can also limit the list to particular type by choosing it. To do so using the keyboard, use movement keys with Ctrl.

When you insert a function or macro with arguments, tooltip with the function signature is displayed and current argument is highlighted as you type:



3. Simple symbol completion, abbreviations

Sometimes it is useful to just complete identifier based solely on symbols in the file using Complete identifier (default Ctrl+,)



Complete abbreviation (default Alt+.) is able to assist with writing basic blocks by expanding abbreviations into templates:



after activating Complete abbreviation, expands to



Abbreviations can be defined in Setup/Abbreviations..


4. Code navigation

Context go to (default Alt+J) navigates to the place where current symbol (function, method, type, variable) is defined. It can also be used to go to header file (when used on #include line) or matching #if/#else/#endif. Note that this is perhaps the most often used Assist++ tool...

Go to definition/declaration (default Alt+I) function goes to another place where code or data currently at cursor position are defined/declared. In most cases, this means going between declaration and definition.

While jumping around the various places in code, it is often useful to go to the code you've seen previously. You can do this easily by pressing Alt+Left arrow and also go forward through the history of jumps with Alt+Right arrow.

5. Navigator

On the left side from code editor resides Navigator bar. It allows you to browse and search the code base by the name of symbol. The bar can be hidden or brought back using (default Ctrl+N).

When the search field is empty, Navigator is a list of symbols in the current file:



You can write a symbol name into Symbol/line field, or scope.symbol. Navigator will sort entries based on relevance: complete case sensitive matches are first in the list, then entries that start with search field case-sensitive, then entries that contain the text, case insensitive.

If you do not want to have Navigator displayed on screen all the time, you can also use Navigator window using (default Ctrl+J):



6. Graphical symbols used by Assist++

There is quite regular system in graphical symbols used by Assist++. Circles indicate code, boxes data, triangles types. Cyan color is used for global data/code, yellow color for instance data/code, gray color for class data/code.

Global variable.

Instance variable.

Class variable.

Global function.

Instance method.



Class method.

Friend function.

Enumerated constant.

struct, class or union.



Green border indicates template.


7. Definition/Declaration conversion

Copy as definition/declaration operation (default Alt+C) is capable of converting between method declaration and definition. To use it, select desired methods:



and invoke operation (default Alt+C). Assist performs conversion and stores the result to the clipboard. Move to file/position where you want your method definitions and paste:



In similar way you can perform inverse conversion (from .cpp definition to header declaration).

In addition, it is possible to use this function to "extract" functions from THISBACKs:



gets converted to



8. Virtual functions

This assist operation (default Alt+V) invokes the overview of virtual methods defined in current class bases (defined by actual position, to make this operation work, place cursor inside class declaration):



You can select one or more virtual methods to override in the current class. After pushing the "OK" button, declaration of virtual methods are inserted at current position. Definitions of virtual methods are placed on clipboard so that they can be inserted to the source file (.cpp) later.


THISBACKs tools provides assistance with binding Callbacks of current class and its members (usually but not limited to some GUI dialog and its widgets) to methods:



Check the "Insert" column for Callbacks you want to process by method, alternatively adjust the name of method. After clicking "OK" button, TheIDE will insert THISBACK assignments to the actual position and places methods definitions and declarations to the clipboard (you have to reselect declaration and move it to the class).

10. Layout code generation

There is a tool Generate code (default Alt+C) in layout designer that can be used to generate code snippets from layouts:




It invokes this dialog that provides some common code generators based on the layout:




Go to class using this layout (default Alt+J) finds usage of current layout in the code:



Do you want to contribute?