Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => CodeCompletion redesign => Topic started by: artoj on February 08, 2006, 11:55:19 am

Title: New code completion plugin w/ refactoring
Post by: artoj on February 08, 2006, 11:55:19 am
Yannis and I have talked about creating a new code completion plugin with support for refactoring, it will be a full rewrite. If I'm lucky I will get a summer job in this project, that's about 3 months working full-time with C::B. Hopefully after summer we have something done (I'm not promising anything though).

I'm currently working with the most important part of the plugin, the planning. I know that there are very talented programmers/designers in these forums so I would like to hear your opinions about the plugin when we have something to show you. I want the planning phase to be as open as possible, like rickg22 did with the current plugin.

The initial plan is to create the plugin using eranif's ideas: CTags and SQLite. I've made very, very, very simple layout of the plugin which I had in mind:

Code
                                           "The plugin"
                                                 |
                                             Languages
                                          /      |       \
                                       C/C++  Python    Java
                                        |        |        |
                                      P&R E     P&R E   P&R E
                                --------------------------------
                               Common Parser | Common Refactor
                                --------------------------------

So what these all mean? At the top we have the plugin which will implement all our features. The plugin defines a set of languages. These can be anything. I'm not saying C::B should handle Python or Java code, it's just an example (we'll focus the C/C++ part). Each language defines its own Parser & Refactor Engine (P&R E) which will called when needed. These "engines" are subclasses of Common Parser and Common Refactor. Common Parser and Common Refactor are just abstract classes which will define what features parser and refactor have.

For example, in Common Refactor we could say:

Code
bool ExtractMethod(wxString[] codeblock);

or something like that. Now, each language defines this ExtractMethod refactoring scheme anyway it wants. This was designed (well, though, because the design phase is just beginning) this way because we don't know what languages we will support in the future.

Because there is about 70 different refactoring schemes (some of them are very complicated), we won't be creating them all at once. I'm thinking that ExtractMethod and RenameMethod are the two that we want to implement first.

We want to be able to extend the Common Parser too. I'm thinking that the Common Parser could just be a wrapper to CTags, if we want to change CTags to a different parsing system, so be it, the methods in the Common Parser remain the same.

I haven't thought the SQL system much yet. I don't know should we create another wrapper to the cache and use SQLite under it. This could be a good decision because, again, we don't know what happens in future.

Another thing I thought this morning was how to efficiently use the the cache between restarts. We want to save the database to disk, but what about files that have changed since we last used the database. I was thinking some extremely simple (and fast) checksum system that we could use to check if the files are changed.

So what happens now?

You can just sit back and relax. :D I don't think I will be presenting anything major in this month. When the design phase is over I let you guys know. After we got the full documentation this plugin is 50 % complete.

And please don't ask when we are going to release this plugin, honestly, we don't know. :)

rickg22, thank you for your hard work with the current plugin.

- Arto
Title: Re: New code completion plugin w/ refactoring
Post by: Michael on February 08, 2006, 12:06:12 pm
Hello,

I have just a small question. I would like to know why you want to do a full-rewrite, instead of improving the already existing plugin :?. Not that I have anything against a full-rewrite, I just would like to know. AFAIK, the code completion of rickg22 is not that bad :).

Thank you very much.

Best wishes,
Michael

PS.: Anyway, your design looks promising :).
Title: Re: New code completion plugin w/ refactoring
Post by: mandrav on February 08, 2006, 12:13:55 pm
I would like to know why you want to do a full-rewrite, instead of improving the already existing plugin :?.

Because there comes a point where the weaknesses of the design start to show through ;).
Honestly, although I initially created the codecompletion plugin, I don't feel like it has much potential in it yet...
Yes, Rick did a hell of a job with it during the last months. It will not be dropped, at least not any time soon ;)
Even if Arto comes up with a working plugin during the summer, we will have a choice between two plugins. Choice is A Good Thing (tm). Only when (and if) Arto's plugin proves its worthiness it will become our standard :) (I hope it will, though).
Title: Re: New code completion plugin w/ refactoring
Post by: Michael on February 08, 2006, 12:30:31 pm
I would like to know why you want to do a full-rewrite, instead of improving the already existing plugin :?.

Because there comes a point where the weaknesses of the design start to show through ;).
Honestly, although I initially created the codecompletion plugin, I don't feel like it has much potential in it yet...
Yes, Rick did a hell of a job with it during the last months. It will not be dropped, at least not any time soon ;)
Even if Arto comes up with a working plugin during the summer, we will have a choice between two plugins. Choice is A Good Thing (tm). Only when (and if) Arto's plugin proves its worthiness it will become our standard :) (I hope it will, though).

Thank you very much for the explanation :D. Yes, I agree with you. It is good to have the choice and a bit of competition can stimulate people to provide better software. It seems too me that after its design, the Arto's plugin looks promising and something good will come out. Anyway, there will be probably people in this forum that would like to help or at least to give useful advices/comments/critics.

Michael
Title: Re: New code completion plugin w/ refactoring
Post by: mandrav on February 08, 2006, 12:56:31 pm
Anyway, there will be probably people in this forum that would like to help or at least to give useful advices/comments/critics.

I 'm sure there are. That's why Arto made this post ;).
Title: Re: New code completion plugin w/ refactoring
Post by: TDragon on February 08, 2006, 03:07:30 pm
1. Replaceable and subclassable interfaces are a Good Thing™. That way it'll require minimal redesign on my end and no redesign on the main plugin when I unveil my hyper-advanced C/C++ parser. ;)

2. Make sure you provide functionality to let the parsers do structure introspection too. C++ in particular is a highly context-relative language, so it needs to be able to look back at what it's already parsed in order to understand what it's currently parsing.

3. The saying "Make it work. Make it fast. Make it right. Pick any two" doesn't apply to code completion / visual assist software. It needs to work quickly and correctly, or it'll be a turn-off (both literally and figuratively).

More as I think of them,
Cheers,
Good luck,
JohnE / TDM
Title: Re: New code completion plugin w/ refactoring
Post by: Game_Ender on February 08, 2006, 04:15:48 pm
I love the plugable parser model, I am sure everyone has a pet parser they would love to see placed in the codecompeletion pluggin so we can finally get some template and typedef recognition.  I have my hat tossed in with the Elsa parser, especially if you want to do refactoring.

One thing your model does not address is threading.  This needs to thought of from the beginning, because it has a very flaky feel in the current plugin.  There is no offense meant to the authors, it just that the threading code is not very robust. If we work out the specific thread design we want to use (worker thread(s), a new thread per parsing job etc) now it will be easy to design the interactions of the components to place nice in that system. 

I also don't know if using something like boost.threads would help or not, but I would consider heavier use of helper libraries like boost.  IMHO the wxWidgets "support" classes should probably be avoided if there they are already in boost or the stl, but that is another issue all together.
Title: Re: New code completion plugin w/ refactoring
Post by: rickg22 on February 08, 2006, 06:09:34 pm
Suggestion, make the parsing per-workspace and not per-project, otherwise we'll still suffer the memory issues...
Title: Re: New code completion plugin w/ refactoring
Post by: Pete on February 13, 2006, 11:17:19 am
I'd like to propose the more separted model
Code: dos
------------------------------------
internal source code model
-----------------------------------------------------------------------------------
an interface for manipulations with internal model
-----------------------------------------------------------------------------------
/\               |                         |    /\            /\   |
|                |                        \/    |             |   \/
------      ------------------     -------------------     ----------
parser      source code styler     UML representation      refactoring
------     -------------------     -------------------      plugin
|                 |                                        ----------- 
|                \/
-------------------------------
source code listing,
edit window or something similar
-------------------------------
This way parsing and refactoring will be separated from internal source code representation, common refactor will be obsolete.
Another idea is a script wrapper for manipulations with source code model. I think it's more easy to write for code analizing and refactoring, than writing a c++ plugin or external application with another source parsing.

PS sorry for my poor english :(
Title: Re: New code completion plugin w/ refactoring
Post by: takeshimiya on February 13, 2006, 01:45:04 pm
Agreed, there should be one C++ parser for all plugins, no more.
Title: Re: New code completion plugin w/ refactoring
Post by: artoj on February 13, 2006, 03:03:18 pm
So we could have something like this:

In core (build in Code::Blocks itself) it's the Language manager. This language manager will load/unload language libraries. Language manager will also handle file extensions and syntax lighting (= all language properties in one place). The language manager will define set of properties that every language must handle, e.g. these could be functions and members (we need these to build the cache).

The language library would handle all implementation, the language parser, refactoring, styles and parser. In the most optimal case extending C::B to use new language would only require dropping one library to the plugins path or separate languages path.

---

The work that this would require would be massive, period. I'm not saying this cannot be done and I agree that currently the language/parser/syntax lighting/file extensions system is a mess. I think that some vital functions should be in core, the cache would be good example because practically every language needs it. One could argue that there's no need to build anything to the core if we make plugin which uses plugins, great. :lol:

It's great to see new ideas, keep them coming 8)
Title: Re: New code completion plugin w/ refactoring
Post by: Pete on February 14, 2006, 01:24:19 pm
May be caсhe can be implemented as a service. If cache implementation for c++ will provide all functionality needed for other languages, i can use cache service whitout integrating its source code in my language library.
Title: Re: New code completion plugin w/ refactoring
Post by: sethjackson on February 14, 2006, 04:44:09 pm
I think that is good. One thing though. Keep the styling done through XML.  :)
Title: Re: New code completion plugin w/ refactoring
Post by: artoj on February 14, 2006, 08:04:22 pm
May be caсhe can be implemented as a service. If cache implementation for c++ will provide all functionality needed for other languages, i can use cache service whitout integrating its source code in my language library.

Yup, that could be possible. This could lead to "plugin hell" though, separate plugins relay on different versions of each other. The interface that the cache would be used would have to be so good that it wouldn't require changes often. The PluginManager included currently in Code::Blocks allows us to call different plugins. I don't know about PluginManager's thread safety (pretty sure it isn't), the cache system must be thread safe because it will be called all over the place.

Another good idea for the separate cache would be the class treeview system / function & class listboxes in separate plugins BUT because we must assume that we don't know anything about the language we are using can causes several problems: how are we going to layout the tree/whatever if don't know if the language has namespaces or classes or is the language only procedural. We could however use namespaces and classes in every language but put something like "(global)" or something like that to the name of the class/namespace if the language doesn't support classes/namespaces.

In the original idea I was going to add some sort of meta block to the cache and every language could add some important data to it for further usage. If language "x" supports some new function type "y" it could mark those functions with "y" in the meta block and then later use that info for example showing user in the UI/class treeview that these functions are "y" type. I'm not sure if I'm going to trash this idea or not. If this idea will be implemented it would mean that the UI usage and language specification must be very close to each other. We could again however somehow query the language plugin how we should layout this data we have.

It could work. 8)
Title: Re: New code completion plugin w/ refactoring
Post by: Game_Ender on February 14, 2006, 10:31:21 pm
The only thing you can do with the current level of information the code-completion provides is code complete.  You need a full abstract syntax tree of a language to create good UML diagrams and do reliable refactoring.  That AST will be at the very least langauge specific and even parser specific.  The current code completion plugin is general enough for any language.  Non OO languages can just have everything at global scope for now.

I don't think you can create a general AST that a UML/Refactoring program can rely on.  The UML/Refactoring program is going to have to be dependent on the langauge module (parser and AST).  Like you said it will probably be possible to create a general thread safe cache system that can store any kind of data you want.

Maybe if I have the time I will whip a UML diagram, in the end there should definetly be one made before the codeing starts.
Title: Re: New code completion plugin w/ refactoring
Post by: TDragon on February 14, 2006, 11:40:40 pm
In the original idea I was going to add some sort of meta block to the cache and every language could add some important data to it for further usage.
That would certainly add some flexibility and ease-of-use to it -- but is it the best way to do it? I just know someone would come along and implement the entire language in the meta block, or do something else stupid with it.

I think we shouldn't look too hard for common structure between languages when it isn't there. How, for instance, would you design a cache system that could store C++ abstract syntax trees, F77 structure models, CSS structures, and Bison grammars? I haven't tried, but there might end up being so many differences that the best common ground we find would be reading and writing some sort of "nodes" whose structures depend on the language.

In the end, I don't know exactly what I'm saying, except "do it right". The interfaces you design should be, if not simple, then hopefully intuitive.
Title: Re: New code completion plugin w/ refactoring
Post by: artoj on February 15, 2006, 11:30:20 am
The only thing you can do with the current level of information the code-completion provides is code complete.  You need a full abstract syntax tree of a language to create good UML diagrams and do reliable refactoring.  That AST will be at the very least langauge specific and even parser specific.  The current code completion plugin is general enough for any language.  Non OO languages can just have everything at global scope for now.

Yup, the refactoring part is pretty tricky. With code completion we can just scan the function names and put them to cache, but for refactoring we need every functions local data aswell. I haven't tought the details yet because I want to have a basic layout of the plugin first and then build more specific features on top of it.

Quote
I don't think you can create a general AST that a UML/Refactoring program can rely on.  The UML/Refactoring program is going to have to be dependent on the langauge module (parser and AST).

Correct, that's why the refactoring engine worked under the specific language (seen in the first message), so it can use its specification.

Quote
Like you said it will probably be possible to create a general thread safe cache system that can store any kind of data you want.

That's the plan, but I don't know if that's possible (store any kind of data), we shall see. Code completion for brainf*ck would be quite cool though. :lol:

Quote
Maybe if I have the time I will whip a UML diagram, in the end there should definetly be one made before the codeing starts.

Yes, there will definitely be UML diagrams of this plugin. The whole coding process is not important issue right now. The most important thing now is to create a basic layout of the plugin and then specialize it. This planning phase is the most important thing in order this plugin to be successful. Like I said, when we have the full documentation this plugin is 50 % ready.

That would certainly add some flexibility and ease-of-use to it -- but is it the best way to do it? I just know someone would come along and implement the entire language in the meta block, or do something else stupid with it.

Yeah, I see your point. We could however expose the whole cache system for the language plugin. So it could itself create the database tables and use any information it wants. This would allow us to extend the cache system any language we want. This would put more stress to the language plugin developer though.

Quote
I think we shouldn't look too hard for common structure between languages when it isn't there. How, for instance, would you design a cache system that could store C++ abstract syntax trees, F77 structure models, CSS structures, and Bison grammars? I haven't tried, but there might end up being so many differences that the best common ground we find would be reading and writing some sort of "nodes" whose structures depend on the language.

Yeah, the language would itself define the structure of its database tables. These values (structures) could be asked from the language plugin for example if some new UI/whatever plugin needs them.

Quote
In the end, I don't know exactly what I'm saying, except "do it right". The interfaces you design should be, if not simple, then hopefully intuitive.

You raised some important topics, that's good. It's important remember that this is a community project and it's very important that the community will provide feedback and new ideas, we're all in this together. Only as a community we can do this right.

        Arto
Title: Re: New code completion plugin w/ refactoring
Post by: artoj on March 08, 2006, 11:39:10 am
I think it's time update this topic aswell so you know what's going on.

About three weeks ago I was in a car accident. It was a side collision so I hit my head to the side glass and my left arm got some pretty bad hit too. Later it was discovered that my back had taken some damage too.

I don't know how long it will take to recover so I won't be working with this plugin anymore. Sorry.

It's been great working with you and hopefully we will meet again someday.

Until then, goodbye. :(

        Arto
Title: Re: New code completion plugin w/ refactoring
Post by: Michael on March 08, 2006, 12:12:51 pm
I think it's time update this topic aswell so you know what's going on.

About three weeks ago I was in a car accident. It was a side collision so I hit my head to the side glass and my left arm got some pretty bad hit too. Later it was discovered that my back had taken some damage too.

I don't know how long it will take to recover so I won't be working with this plugin anymore. Sorry.

It's been great working with you and hopefully we will meet again someday.

Until then, goodbye. :(

        Arto

I am sorry to hear about your accident.

I hope you will get well soon.

Thank you very much for all the work you have done.

I wish you all the best.

Best wishes,
Michael
Title: Re: New code completion plugin w/ refactoring
Post by: killerbot on March 08, 2006, 12:28:56 pm
Artoj,

Get well soon, I hope you can fully recover.
It was a pleasure working with you.

All the best,
Lieven
Title: Re: New code completion plugin w/ refactoring
Post by: rickg22 on March 08, 2006, 11:15:14 pm
Same here. Please get well!
Title: Re: New code completion plugin w/ refactoring
Post by: Ptomaine on March 21, 2006, 01:19:39 am
Don't you see what's happenning, guys?
We just talk too much and nothing is going to be done.
Blah-blah-blah. People just come and go.

Arto. Get well, be careful and do not snivel. Join us again as soon as possible. It takes too much time to transfer your work on others' shoulders. If you cannot operate with your hands so you can speak anyway. For instance, you can help us in source code reviews or you can control the programming process by making your architectual amendments and improvements while you are getting well. Anyway, if you are really interested in this "child"'s growth you CAN do something. Do not sit about.

Do not just talk. We all know that we really NEED code completion and refactoring tools (plugins or whatsoever) with the minimum sufficient functionalities. Just keep in mind to improve it with the multilingual possibilities and so on but JUST KEEP IN MIND. Anyway, the sooner we'll have some sane code completion and refactoring tools the sooner we'll be able to improve them with their own help :) Honestly, the present code completion tool is just a disaster. Just look inside the "UltimateCPP IDE's Code Assistant" code to learn how the open source code completion tool might work (no ad.).

I do not want to be rude, guys, but time is going fast and it won't be waiting for us while we are making conversations. We must be flexible and that's it for now. While we're deciding "milk or water" other competitive products are going on and smiling while passing us by.

Sorry guys. It seethed up.
Title: Re: New code completion plugin w/ refactoring
Post by: Michael on March 21, 2006, 11:28:06 am
Don't you see what's happenning, guys?
We just talk too much and nothing is going to be done.
Blah-blah-blah. People just come and go.

Sorry, but I am quite shocked by your post :shock:.

First of all, I find that the devs of Code::Blocks are doing a great work :D. Morevover, they work in their free time and they get not paid for it.

Second, I do not like to much to always ask for new features, bug fixes, and so on without trying to contribute to the project. Consequently, I try to help as I can in my free and not free time :D.

Third, it is true that code completion needs some improvments, but anyway, it is not so bad. Rickg22 did a good job with it :D. Arto has had an accident (I hope he will get well soon). If not I am sure he would have done a good job.

And also, help is welcome :D. May be you can help in developing the code completion or taking the work initially started by Arto :).

Best wishes,
Michael 
Title: Re: New code completion plugin w/ refactoring
Post by: Ptomaine on March 21, 2006, 02:05:31 pm
Sorry, but I am quite shocked by your post :shock:.

That's alright. Sometimes it is very good for our health to be shoked (adrenaline, you know) :)

First of all, I find that the devs of Code::Blocks are doing a great work :D. Morevover, they work in their free time and they get not paid for it.

My big respect to all of devs. But the difference between October's RC2 and the most recent one is quite small. I don't feel relief from version to version. I don't care how much IDE is looking good, but I care the functionalities it offers. Wrong development accents?

Second, I do not like to much to always ask for new features, bug fixes, and so on without trying to contribute to the project. Consequently, I try to help as I can in my free and not free time :D.

Applauses. But I prefer to do things that I can do best. If I have no idea how refactoring or effective parcer work than I will not begin to do this because others already have some good ideas on this account. So, why to create doubts and chaos? Donation? :)

Third, it is true that code completion needs some improvments, but anyway, it is not so bad. Rickg22 did a good job with it :D. Arto has had an accident (I hope he will get well soon). If not I am sure he would have done a good job.

Aha. I always turn this plugin off because it slows down my programming but it's supposed to make programming faster! When I download a new version of Code::Blocks, in hope, the first thing I do is turning the code completion plugin on, testing it for a minute and than turning it off again. Know why, because it's not helping me but slowing down my work. I need it but I cannot work faster with the present version of the plugin.

And also, help is welcome :D. May be you can help in developing the code completion or taking the work initially started by Arto :).

I'm kind of a sound programmer :). Will multimedia save the world and relief the pain? :)

Best wishes,
Michael 

Thank you, Michael, for your respond. I really like the way you've tried to protect development and to argue back to me, but...
All the best to you.
Title: Re: New code completion plugin w/ refactoring
Post by: thomas on March 21, 2006, 02:45:15 pm
You do have a couple of valid points in your original post, although I cannot agree with it as a whole. In particular the fact that Arto had his accident is a rather unpleasant condition (mostly for him), so I perceive the above as a bit upsetting.

But then this line is simply funny:
Quote
But the difference between October's RC2 and the most recent one is quite small. I don't feel relief from version to version.
Not sure whether or not to take that statement for serious... an ousider might be tempted to believe that you have never used a recent build. :)
Title: Re: New code completion plugin w/ refactoring
Post by: Michael on March 21, 2006, 09:21:19 pm
Sorry, but I am quite shocked by your post :shock:.

That's alright. Sometimes it is very good for our health to be shoked (adrenaline, you know) :)

Thank you, but in these weeks I have had enough adrenaline for the next 10 years, especially today :).

First of all, I find that the devs of Code::Blocks are doing a great work :D. Morevover, they work in their free time and they get not paid for it.

My big respect to all of devs. But the difference between October's RC2 and the most recent one is quite small. I don't feel relief from version to version. I don't care how much IDE is looking good, but I care the functionalities it offers. Wrong development accents?

Ehm. Here I should agree with Thomas. Compare RC2 with the latest nightly build and you will see the differences. IMHO the development accent is put on the right place :D.

Second, I do not like to much to always ask for new features, bug fixes, and so on without trying to contribute to the project. Consequently, I try to help as I can in my free and not free time :D.

Applauses. But I prefer to do things that I can do best. If I have no idea how refactoring or effective parcer work than I will not begin to do this because others already have some good ideas on this account. So, why to create doubts and chaos? Donation? :)

I can accept your point of view, anyway, even if you do not have knowledge about parsing/refactoring, but interest and a bit of time, then you can try to create a code completion. Moreover, you will become help from the other users/devs. Consequently, you will learn something new and that it could be useful in the future :).

Third, it is true that code completion needs some improvments, but anyway, it is not so bad. Rickg22 did a good job with it :D. Arto has had an accident (I hope he will get well soon). If not I am sure he would have done a good job.

Aha. I always turn this plugin off because it slows down my programming but it's supposed to make programming faster! When I download a new version of Code::Blocks, in hope, the first thing I do is turning the code completion plugin on, testing it for a minute and than turning it off again. Know why, because it's not helping me but slowing down my work. I need it but I cannot work faster with the present version of the plugin.

I let it on. I use it sometimes and normally it does not disturb me.

And also, help is welcome :D. May be you can help in developing the code completion or taking the work initially started by Arto :).

I'm kind of a sound programmer :). Will multimedia save the world and relief the pain? :)

I am also involved in the multimedia domain, mostly MPEG-7/21, UMA and semantic.

If multimedia would save the world? Let we hope for it.... :lol:

Best wishes,
Michael 

Thank you, Michael, for your respond. I really like the way you've tried to protect development and to argue back to me, but...
All the best to you.

I think that all the devs here deserve respect for what they are doing. Just my humble opinion anyway :). Rickg22 put a lot of time and passion in his work and the results are very good.

Anyway more than argue, I see this discussion as an exchange of opinions :D.

Best wishes,
Michael
Title: Re: New code completion plugin w/ refactoring
Post by: Ptomaine on March 21, 2006, 10:58:51 pm
Ok, guys.

First, I'm sorry, guys, for my offensive words towards Arto. I'm really sorry. I didn't mean that.

Well, let's imagine my situation.
I've started using CB about a half year ago. I've created a project and been working on it. I update CB bona fide, time to time with the nightly builds. And continue working. An IDE for me is a kind of a tool that helps me to EDIT my source code, BUILD it and DEBUG it in a convenient way. Generally, it must help me to work. When I said that there was no difference between RC2 and the most recent build then I've ment that the new versions hadn't facilitate eighter my EDITing or BUILDing or DEBUGing processes. For me, CB has changed visually but its new features didn't reflect on my work. For instance, I use a cup to drink and I really do not care how it looks like. The main thing is the cup lets me drink - it is its general usage (it does the work it's supposed to do) :). So, here it is. Moreover, it seems to me that CB's RC2 state had been frozen forever (kidding :))

Anyway, guys, I love what you are doing. And sure, you want to turn CB into something amazing.
All my strict words were said because I want CB become something amazing and I care it.
I've just been frightened of myself when I wanted to change the IDE I love (CB) to UPP... so, I've seethed up...

Hugs and kisses :) (the patient's rescued :))
Title: Re: New code completion plugin w/ refactoring
Post by: takeshimiya on March 21, 2006, 11:12:16 pm
Ok, guys.

First, I'm sorry, guys, for my offensive words towards Arto. I'm really sorry. I didn't mean that.

Well, let's imagine my situation.
I've started using CB about a half year ago. I've created a project and been working on it. I update CB bona fide, time to time with the nightly builds. And continue working. An IDE for me is a kind of a tool that helps me to EDIT my source code, BUILD it and DEBUG it in a convenient way. Generally, it must help me to work. When I said that there was no difference between RC2 and the most recent build then I've ment that the new versions hadn't facilitate eighter my EDITing or BUILDing or DEBUGing processes. For me, CB has changed visually for me but its new features didn't reflect on my work. For instance, I use cups to drink and I really do not care how it looks like. The main thing, the cup lets me drink - it is its general usage (it does the work it's supposed to do) :). So, here it is.

Anyway, guys, I love what you are doing. And sure, you want to turn CB into something amazing.
All my strict words were said because I want CB become something amazing and I care it.
I've just been frightened of myself when I wanted to change the IDE I love (CB) to UPP... so, I've seethed up...

I understand all the features you might want, but you must understand two things:
-C::B is under heavy development.
-Lack of human resources (time). All of this is being done by few people in spare time and in a free way.

What you can do from your position is: spread the word, so more developers can join the effort, report bugs, send patches, etc.

Particularly on CodeCompletion, right now, the only devs working (coding) on redesign it are TDragon and ddiego (in separate ways).

You might know that C++ parsing is hell, and so is CodeCompletion, along with threading, performance issues, etc.
It's not an easy topic.
Title: Re: New code completion plugin w/ refactoring
Post by: thomas on March 21, 2006, 11:17:28 pm
Quote
When I said that there was no difference between RC2 and the most recent build then I've ment that the new versions hadn't facilitate eighter my EDITing or BUILDing or DEBUGing processes
And here is the proof, you have *obviously* never used the debugger :lol:

The debugger in RC2 was unusable, a pain at best. The present version is (although still work in progress) simply amazing.
Title: Re: New code completion plugin w/ refactoring
Post by: Ptomaine on March 21, 2006, 11:32:30 pm
Quote
When I said that there was no difference between RC2 and the most recent build then I've ment that the new versions hadn't facilitate eighter my EDITing or BUILDing or DEBUGing processes
And here is the proof, you have *obviously* never used the debugger :lol:

The debugger in RC2 was unusable, a pain at best. The present version is (although still work in progress) simply amazing.

Debugging... debugging... ok. true! But editing and building goes before, Ha! :)
Title: Re: New code completion plugin w/ refactoring
Post by: Ptomaine on March 21, 2006, 11:39:45 pm
Ok, guys.

First, I'm sorry, guys, for my offensive words towards Arto. I'm really sorry. I didn't mean that.

Well, let's imagine my situation.
I've started using CB about a half year ago. I've created a project and been working on it. I update CB bona fide, time to time with the nightly builds. And continue working. An IDE for me is a kind of a tool that helps me to EDIT my source code, BUILD it and DEBUG it in a convenient way. Generally, it must help me to work. When I said that there was no difference between RC2 and the most recent build then I've ment that the new versions hadn't facilitate eighter my EDITing or BUILDing or DEBUGing processes. For me, CB has changed visually for me but its new features didn't reflect on my work. For instance, I use cups to drink and I really do not care how it looks like. The main thing, the cup lets me drink - it is its general usage (it does the work it's supposed to do) :). So, here it is.

Anyway, guys, I love what you are doing. And sure, you want to turn CB into something amazing.
All my strict words were said because I want CB become something amazing and I care it.
I've just been frightened of myself when I wanted to change the IDE I love (CB) to UPP... so, I've seethed up...

I understand all the features you might want, but you must understand two things:
-C::B is under heavy development.
-Lack of human resources (time). All of this is being done by few people in spare time and in a free way.

What you can do from your position is: spread the word, so more developers can join the effort, report bugs, send patches, etc.

Particularly on CodeCompletion, right now, the only devs working (coding) on redesign it are TDragon and ddiego (in separate ways).

You might know that C++ parsing is hell, and so is CodeCompletion, along with threading, performance issues, etc.
It's not an easy topic.

Agreed (partially).

Takeshi Miya, look what only two men could create in a short time. Can you compare it to CB, please? (http://upp.sourceforge.net)
Title: Re: New code completion plugin w/ refactoring
Post by: thomas on March 22, 2006, 12:05:35 am
Well, one could argue a lot about UPP, not only the IDE but also the toolkit. There are quite a few things in UPP which give me a cold shiver... but that is far, far off-topic.

Actually this thread relates to the CC plugin. :)
Title: Re: New code completion plugin w/ refactoring
Post by: takeshimiya on March 22, 2006, 12:07:45 am
Agreed (partially).

Takeshi Miya, look what only two men could create in a short time. Can you compare it to CB, please? (http://upp.sourceforge.net)

Sorry, but the only thing that Ultimate++ haves better than C::B is Code Completion/Code Navigation.
But it's only better, it's not the best. Their hand-crafted C++ parser (Assist++) is not the best, ie. one of the limitations is that it does not expand macro definition and scans only project sources (means standard platform headers are not scanned).

I've researched some months ago on full c++ parsers, and the only ones I have hopes for C::B are:
-CodeStore (currently developed by ddiego, using ANTLR++ and CTags, along with SQLite).
-TDragon's parser (current status unknown, but I think he's still developing it according a few mails with him).
-Eranif's parser (based on CTags and SQLite, already developed, would need porting to GCC and adaptation as a C::B plugin).

Regards,
Takeshi Miya
Title: Re: New code completion plugin w/ refactoring
Post by: TDragon on March 22, 2006, 12:37:13 am
-TDragon's parser (current status unknown, but I think he's still developing it according a few mails with him).
While I'm thinking about it, this seems an appropriate place for a quick update on that. :)

Yes, I'm still working on that as much as I can. I've currently retreated to considering everything that would be involved in writing a full incremental parser for C and C++, but as that would take many moons to reach a useful state I've also got a quick-fix on the burner that would be ready in a shorter time frame.

I also think that if a list were made of people's peeves with the current state of code completion, it would boil down to a majority of relatively easy fixes, plus
- templates and namespaces support, and
- system headers support,
which two could then be left for a later iteration.
Title: Re: New code completion plugin w/ refactoring
Post by: Game_Ender on March 22, 2006, 05:47:38 pm
Full linux/threading stability is also a must.
Title: Re: New code completion plugin w/ refactoring
Post by: Ptomaine on March 23, 2006, 12:39:39 am
What about OpenC++?
http://opencxx.sourceforge.net/
http://opencxx.sourceforge.net/occ-core/
Title: Re: New code completion plugin w/ refactoring
Post by: TDragon on March 23, 2006, 12:51:23 am
You mean, what about an incomplete structure that hasn't seen a release since 2004-08? :lol:
Title: Re: New code completion plugin w/ refactoring
Post by: Michael on March 23, 2006, 11:33:50 am
You mean, what about an incomplete structure that hasn't seen a release since 2004-08? :lol:

Lack of volunteers (http://opencxx.sourceforge.net/volunteer/) :)?

Best wishes,
Michael
Title: Re: New code completion plugin w/ refactoring
Post by: mikeandmore on April 01, 2006, 12:13:31 pm
any how
Quote from: NELLY
i really like it
i'll like it
i really like it
i really really like.
Title: Re: New code completion plugin w/ refactoring
Post by: artoj on April 20, 2006, 07:02:47 pm
OK, time for another update.

I'm feeling a lot better now and I had the courage to drive a car again (which I thought I would never do).

I will start working with the code completion plugin after I've finished my current school projects (2 Java projects and 1 PHP & SQL project).

Since I haven't touched C/C++ code in about two months I need some time to get familiar with the code base again. I'll maybe start by fixing couple of those interface bugs that I've found ages ago.

I also need to read at least one book about refactoring to get better idea of the whole process.

        Arto
Title: Re: New code completion plugin w/ refactoring
Post by: MortenMacFly on April 20, 2006, 07:18:06 pm
I'm feeling a lot better now and I had the courage to drive a car again (which I thought I would never do). [...]
I'm glad you recovered well (I know what it's like after a car accident).
I'm even more glad you take another shot on the CC plugin. Just take your time - a good design is probably most important here which can only be achived by knowledge and good planning.
With regards, Morten.
Title: Re: New code completion plugin w/ refactoring
Post by: Michael on April 20, 2006, 07:34:49 pm
I'm feeling a lot better now and I had the courage to drive a car again (which I thought I would never do).

I am also glad that you feel better :).

I also need to read at least one book about refactoring to get better idea of the whole process.

A couple of links on refactoring that could help you:

http://developer.berlios.de/projects/cpprt/
http://www.refactoring.com/
http://en.wikipedia.org/wiki/Refactoring
http://www-128.ibm.com/developerworks/library/os-ecref/
http://www.cs.wayne.edu/~vip/RefactoringTools/
http://www.cis.uab.edu/info/faculty/bryant/ldta2003/3.pdf

Best wishes,
Michael