KDE studio has code completion-- and it's interesting

Benoit Cerrina benoit.cerrina at writeme.com
Tue Feb 15 20:07:47 UTC 2000

On lun, 14 fév 2000, you wrote:
> Well, I was browsing the KDE studio page when I saw that their newest
> version has the mythical code completion feature.  Theirs requires you
> to hit "CONTROL-P" after "varname->" or "varname." rather than
> automatically popping up the dialog box.  (I believe IBM's VisualAge
> does something similar?  Could be wrong, though.)  I don't have KDE 2
> installed so I can't test out its speed, could somebody do that?
>   The interesting thing is the implementation.  First, KDE Studio uses
> the same classparser as KDevelop, and it even uses KWrite for its
> editor, so there are a lot of similarities.  The code completion plug-in
> is a really strange, but neat hack.  I'm not sure it would be suitable
> for the long haul, but it's easy to implement.  
>   First, the IDE determines the current position in the editor.  Then it
> turns off the editor's updating/repainting and pastes some weird string
> (they use "WAIT_STUDIO_WAIT", but it doesn't really matter) followed by
> ";//".  Then, it saves that file to disk.  Then, it modifies the
> makefile to add a special line that just compiles the current file to
> assembly, but dumps it to /dev/null.  Then it calls "undo" on the editor
> to get rid of the weird string and it resets the Makefile to its
> original state.  But, of course, you can't compile
> "varname->WAIT_STUDIO_WAIT;//" without an error message.  So the IDE
> reads the stderr of the make process and looks for the error message
> that says: "`class whateverclass' has no member named
> `WAIT_STUDIO_WAIT'".  But in the real output, "whateverclass" is
> replaced by the actual name of the thing to the left of the current
> '->', '::', or '.'.  It then calls "getClassByName" on the classparser
> and fills in a little dialog box with the methods of that particular
> class.
>   Weird, huh?  

It does sound incredibly slow, like at least 20s

It gets the robustness of the gcc parser, which is
> definitely a big plus. But their current implementation seems to save 
> over the existing file being edited (which could be very bad), although
> that of course could be fixed.  The biggest concern is speed, and I
> don't see how you could make this process super-fast (though you could
> probably stop messing around with the makefile if you were clever about
> it).  
>   On the other hand, the current classparser of KDev could probably be
> subclassed to do a similar thing.  Or the current grammar (which some
> people say isn't working very well, though I haven't noticed a problem)
> could be replaced by the actual g++ Bison grammar (
> "SRCDIR/gcc/cp/parse.y").  Hmm...

I think that would be a good idea

> --JRZ
Benoit Cerrina

More information about the KDevelop-devel mailing list