Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => CodeCompletion redesign => Topic started by: ollydbg on March 19, 2015, 06:08:47 am

Title: new idea: high light local variables in a function body
Post by: ollydbg on March 19, 2015, 06:08:47 am
I see that we have a function:
Code
void CodeCompletion::UpdateEditorSyntax(cbEditor* ed)
which give a set of tokens(keywords) as member variables to scintilla control, so that it can highlight them, by
Code
    ed->GetControl()->SetKeyWords(3, keywords);
    ed->GetControl()->Colourise(0, -1);

So, if we put a mouse in a function body, and let our parser parse the function body, and give scintilla control all the local variable tokens, and finally we can only highlight them inside the function body by
Code
    ed->GetControl()->SetKeyWords(3, local_variables_list);
    ed->GetControl()->Colourise(begin_of_function_body, end_of_function_body);
:)

EDIT: some old similar discussion: CC based semantic highlight (http://forums.codeblocks.org/index.php/topic,17526.0.html)
Title: Re: new idea: high light local variables in a function body
Post by: oBFusCATed on March 19, 2015, 09:10:46 am
No you can't, because this is global keyword set.

This example code will break it easily:
Code
int myGlobal=5;

int myFunc() {
    int myGlobal=7;
   
    ... do something with the myGlobal...
}

This feature needs to be done with a custom lexer or modifications to scintilla.
Title: Re: new idea: high light local variables in a function body
Post by: ollydbg on March 20, 2015, 03:23:41 pm
No you can't, because this is global keyword set.

This example code will break it easily:
Code
int myGlobal=5;

int myFunc() {
    int myGlobal=7;
   
    ... do something with the myGlobal...
}

This feature needs to be done with a custom lexer or modifications to scintilla.
Indeed, I agree with you, so it is hard to implement this idea.
Title: Re: new idea: high light local variables in a function body
Post by: p2rkw on March 22, 2015, 06:53:57 pm
https://github.com/alpha0010/ClangLib/commit/bc2e9f23a16893d699c5cf0ebbd14def294fc64d