topic "Assist++";
[l288;i1120;a17;O9;~~~.1408;2 $$1,0#10431211400427159095818037425705:param]
[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
[H4;b83;*4 $$3,5#07864147445237544204411237157677:title]
[i288;O9;C2 $$4,6#40027414424643823182269349404212:item]
[b42;a42;ph2 $$5,5#45413000475342174754091244180557:text]
[l288;b17;a17;2 $$6,6#27521748481378242620020725143825:desc]
[l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code]
[b2503;2 $$8,0#65142375456100023862071332075487:separator]
[*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
[t4167;C2 $$10,0#37138531426314131251341829483380:class]
[l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement]
[i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam]
[b167;C2 $$13,13#92430459443460461911108080531343:item1]
[i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2]
[*@2$(0.128.128)2 $$15,15#34511555403152284025741354420178:NewsDate]
[l321;*C$7;2 $$16,16#03451589433145915344929335295360:result]
[l321;b83;a83;*C$7;2 $$17,17#07531550463529505371228428965313:result`-line]
[l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
[2 $$19,0#53580023442335529039900623488521:gap]
[t4167;C2 $$20,20#70211524482531209251820423858195:class`-nested]
[b50;2 $$21,21#03324558446220344731010354752573:Par]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US 
[s2; Assist`+`+&]
[s3; Table of contents&]
[s0; &]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#1^ 1. Introduction]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#2^ 2. Assist `- code`-completion]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#3^ 3. Simple symbol completion, 
abbreviations]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#4^ 4. Code navigation]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#5^ 5. Navigator]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#6^ 6. Graphical symbols 
used by Assist`+`+]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#7^ 7. Definition/Declaration 
conversion]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#8^ 8. Showing errors while 
editing, information tips]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#9^ 9. Virtual functions]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#10^ 10. Events]&]
[s0; [^topic`:`/`/ide`/app`/Assist`_en`-us`#11^ 11. Layout code generation]&]
[s0; &]
[s3;:1: 1. Introduction&]
[s5; Assist`+`+ analyzes C`+`+ code of your project using libclang 
and provides several useful tools.&]
[s3;:2: 2. Assist `- code`-completion&]
[s5; This tool provides list of class members after typing `'[*@(0.0.255) .]`', 
`'[*@(0.0.255) `->]`', `'[*@(0.0.255) `::]`'. It can also be invoked 
explicitly by pressing [*@(0.0.255) 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.&]
[s5;=pot300; 
@@image:2472&1256
([encoded data, 230916 characters])
&]
[s0;= &]
[s5; When list is displayed, you can use vertical movement keys or 
mouse to select desired method and then press [*@(0.0.255) Enter] 
to insert it. Alternatively, you can press [*@(0.0.255) Tab] to 
insert the first item in the list.&]
[s5; You can also limit the list to particular type by choosing it. 
To do so using the keyboard, use movement keys with [*@(0.0.255) Ctrl].&]
[s5; When you insert a function or macro with arguments, tooltip 
with the function signature is displayed and current argument 
is highlighted as you type:&]
[s5; &]
[s0;= 
@@PING:2662&250
([encoded data, 12452 characters])
&]
[s5; &]
[s3;:3: 3. Simple symbol completion, abbreviations&]
[s5; Sometimes it is useful to just complete identifier based solely 
on symbols in the file using [* Complete identifier ](default [*@(0.0.255) Ctrl`+,]).
&]
[s5; [* Complete abbreviation] (default [*@(0.0.255) Alt`+.]) is able 
to assist with writing basic blocks by expanding abbreviations 
into templates:&]
[s5; &]
[s0;= 
@@image:1384&1015
([encoded data, 9172 characters])
&]
[s5; &]
[s5; after activating [* Complete abbreviation], expands to&]
[s5; &]
[s0;= 
@@image:1478&868
([encoded data, 10896 characters])
&]
[s5; &]
[s5; Abbreviations can be defined in [* Setup/Abbreviations..]&]
[s5;* &]
[s0;= 
@@image:2268&1834
([encoded data, 13472 characters])
&]
[s3;:4: 4. Code navigation&]
[s5; [* Context go to] (default [*@(0.0.255) 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...&]
[s5; [* Go to definition/declaration] (default [*@(0.0.255) 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 .h and .cpp.&]
[s5; [* Usage] (default [*@(0.0.255) Alt`+U]) shows all references in 
the current workspace to the symbol at cursor.&]
[s5; &]
[s5;=pot300; 
@@image:2719&1617
([encoded data, 374724 characters])
&]
[s5; If symbol represents virtual functions, it shows base class 
declaration/definition and all overloads in the workspace.&]
[s5; Replace button in results list replaces all found instances 
with another text. This ultimately allows renaming functions, 
methods, types or variables.&]
[s5; [* Usage of current function ](default [*@(0.0.255) Alt`+U]) is 
similar to Usage, but looks for all uses of function or methods 
that the cursor is currently in.&]
[s5; 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 [*@(0.0.255) Alt`+Left arrow] and also 
go forward through the history of jumps with [*@(0.0.255) Alt`+Right 
arrow]. Alternatively, you can cycle through recent files using 
[*@(0.0.255) Ctrl`+Tab].&]
[s3;:5: 5. Navigator&]
[s5; 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 
[*@(0.0.255) Ctrl`+N]).&]
[s5; When the search field is empty, Navigator is a list of symbols 
in the current file:&]
[s5; &]
[s0;= 
@@image:3181&1945
([encoded data, 352672 characters])
&]
[s5; &]
[s5; You can write a [/ symbol] name into Symbol/line field, or [/ scope].[/ symbol]. 
(either of which can be ommited `- [/ scope]. or [/ .symbol ]are 
ok). 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.&]
[s5; Clicking symbol entry moves cursor to definition (or declaration 
if definition is not available) of the symbol. However, if you 
hold [*@(0.0.255) Alt ]key while clicking, it shows Usage of the 
symbol.&]
[s5; Clicking on nest separator fills the search field with the nest, 
so that you can see all symbols that belong to the nest.&]
[s5; You can also use the Navigator to search for files and also 
to move to specific line in the current file (just enter the 
number and press Enter).&]
[s5; U`+`+ Assist navigation functions require the database of all 
symbols of project. This database is updated by background threads 
as needed. This process is called [*/ indexing][/ . ]When the update 
is in progress, it is indicated by small progress pie in the 
navigator search field:&]
[s5;=pot300; 
@@image:1077&331
([encoded data, 10156 characters])
&]
[s5; Also the background color of search is changed to indicate that 
the navigation information might not be up to date.&]
[s5; As of U`+`+ 2023.2, indexing by default works in `"relaxed mode`".&]
[s5;=pot300; 
@@image:1667&1250
([encoded data, 73772 characters])
&]
[s5; In relaxed mode, after changing the header, only the header 
file itself is reparsed and not source files dependent on it. 
It can occasionally result in inaccuracies in code coverage, 
however experiences demonstrated that the precise mode is too 
CPU heavy to be practical (when working on deep header, CPU running 
100% all cores trying to catch up with changes) and in practice, 
inaccuracies are very rare. In any case, even in relaxed mode 
it is possible to invoke full reparse of all project files from 
the menu:&]
[s5;=po 
@@image:2123&1470
([encoded data, 338268 characters])
&]
[s0; &]
[s0; &]
[s3;:6: 6. Graphical symbols used by Assist`+`+&]
[s5; 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.&]
[ {{594:9406<417;>992; [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/9/kAIGvAC7eiCJFY2qp496UuJrkAAAoktRyw==)
]
:: [s0; Global variable.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/9/kAIGvACreiCBFY2qp496kuJrkAAAIdpRyw==)
]
:: [s0; Instance variable.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/9/kAIGvACr+gM4wKh6+qgnKb4GCQAAq8JiSw==)
]
:: [s0; Class variable.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/+f3oABBohVCWRAEF5dKCqREQ4tJKnHqRiHFlqrp7V/EVqIDn90XUSoHAwAAKiybLA=)
]
:: [s0; Global function.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/+f3oABBohUCaQhCL8uZJXICJcWktTjUoxLC63V09q/cC3Ehz+aLmJUDgYAACJHbLA=)
]
:: [s0; Instance method.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/+f3oABBohUCaQhCL8uZJUNqLrwqG/AILGqRzYcyAGpxGsF3HBMhEc98eaT6n4ywuc/ieGPposYlYMBAAAU809W)
]
:: [s0; Constructor.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/+f3oABBohUCaQhCL8uZJXICJcWiHq4FcgMPIajAVxWYDobTYRC80l1Pxnh85/E8EfTRYzKwQAACLNC2g==)
]
:: [s0; Destructor.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/+f3oABBohUeQAG8OtCVokMcGkhST0uxbi00Fo9rf0L10J8+KPpIkblYAAAFt98ag==)
]
:: [s0; Class method.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/+fCoCBgYFUxURqQVZGUAumAjxacElhFcdvNZosMV4jSQtJTiLJyyQFKUlRRkaSGBAAAGFmtWc=)
]
:: [s0; Enumerated constant.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/9/AAADAwOJihmI10KSeohiCCJGC0nqkRUTo4Uk9ZiK8WshST0uxbi0MBAC+ANqAAEAoCJ6og==)
]
:: [s0; struct, class or union.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/+fHoABDEhST5IuZGXE6MJUgF8XLilcuvA7AKvtFJpPvPuJDx+Swp+k+B08AADoK6N5)
]
:: [s0; typedef.]
:: [s0; 
@@image:100&100
(AxAAEAAAAPD/AAAAAHic+/8fChiQACYXEwDFD4ABXD0yF00lBMAVYOVimowHUKieJPeM+he/f9FsYSAu/QwSAAAhk/DA)
]
:: [s0; Macro.]}}&]
[s0;3%- &]
[s3;:7: 7. Definition/Declaration conversion&]
[s5; [* Copy as definition/declaration] operation (default [*@(0.0.255) Alt`+C]) 
is capable of converting between method declaration and definition. 
To use it, select desired methods:&]
[s5; &]
[s0;= 
@@image:1983&925
([encoded data, 7732 characters])
&]
[s5; &]
[s5; and invoke operation (default [*@(0.0.255) Alt`+C]). Assist performs 
conversion and stores the result to the clipboard. Move to file/position 
where you want your method definitions and paste:&]
[s5; &]
[s0;= 
@@image:2100&1470
([encoded data, 6852 characters])
&]
[s5; &]
[s5; In similar way you can perform inverse conversion (from .cpp 
definition to header declaration).&]
[s5; &]
[s3;:8: 8. Showing errors while editing, information tips&]
[s5; Edited file is periodically checked for errors and errors are 
marked with red rectangles and red dots in the scrollbar. Holding 
mouse over rect rectangle shows actual error:&]
[s5;=pot300; 
@@image:3475&1591
([encoded data, 152440 characters])
&]
[s5; Holding mouse over any symbol also shows information about that 
symbol `- documentation if available or at least full declaration:&]
[s5;=pot300; 
@@image:2870&1312
([encoded data, 198588 characters])
&]
[s3;:9: 9. Virtual functions&]
[s5; This assist operation (default [*@(0.0.255) 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):&]
[s5; &]
[s0;= 
@@image:2192&1562
([encoded data, 140792 characters])
&]
[s5; &]
[s5; 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.&]
[s5; &]
[s3;:10: 10. Events&]
[s5; Events tool provides assistance with binding Events of current 
class and its members (usually but not limited to some GUI dialog 
and its widgets) to methods:&]
[s5; &]
[s0;= 
@@image:2690&1740
([encoded data, 96760 characters])
&]
[s5; &]
[s5; You can select multiple items with (with Ctrl`+Click or Shift`+Click) 
then insert generated code into source file with either `"Insert 
inlines`" (creates full lambda bodies) or `"Insert methods`" 
(each event gets its own method, calls to methods are inserted 
into the text, definition/declaration is put into clipboard).&]
[s5; &]
[s3;:11: 11. Layout code generation&]
[s5; There is a tool [* Generate code] (default [*@(0.0.255) Alt`+C]) 
in layout designer that can be used to generate code snippets 
from layouts:&]
[s5; &]
[s0;= 
@@image:2351&1370
([encoded data, 36388 characters])
&]
[s5; &]
[s5; It invokes this dialog that provides some common code generators 
based on the layout:&]
[s5; &]
[s0;=%- 
@@image:2471&1878
([encoded data, 28960 characters])
&]
[s0;=%- &]
[s0;= 
@@image:2471&1878
([encoded data, 36016 characters])
&]
[s5;* &]
[s5; [* Usage ](default [*@(0.0.255) Alt`+U]) finds usage of current 
layout in the code or, if any layout item is selected, usage 
of selected item.&]
[s5; &]
[s0;= 
@@image:2351&1370
([encoded data, 36376 characters])
&]
[s0; &]
[s0; Similar feature is available in image designer as well:&]
[s0; &]
[s0;= 
@@image:1128&780
([encoded data, 16776 characters])
]]