Current code completion implementation in CB blocks editor until it finds a solution. Sometimes it can disable CB editor for unacceptably long time. Is it possible to implement asynchronous non-blocking CC in low priority thread different from code editor thread? Besides, I think it would be OK to stop CC after defined time (a couple of seconds) if it didn't find a solution, because slow [and blocking] CC is almost as good as if it wasn't there in the first place.
Usually CC takes a long time to figure out things like this (the last line):
class A
{
public:
A& x(/*args*/) { /*code*/ return *this; }
A& y(/*args*/) { /*code*/ return *this; }
A& z(/*args*/) { /*code*/ return *this; }
};
A a;
a.x().y().y().y().z().x().y().y().z();