CDT/C editor enhancements

From Eclipsepedia

Jump to: navigation, search

This is the main page of the project of Google Summer of Code 2010, aiming to make the CDT editor richer and more JDT-like (e.g. automated and ergonomic).

The title of this proposal is 'C++ editor enhancements'.

The project is conducted by Tomasz Wesołowski and mentored by Alena Laskavaia.

Contents

Description

Abstract

This proposal aims to augment the features of the C++ editor to enhance coding ergonomy, effectiveness and navigation features by automating repeatable C++ tasks and reusing features present in the Java editor (including Quick Fixes, Annotations).

The goal is to let C++ coding in CDT be closer to the ergonomy of JDT and Java: less distracting and repetitive, more supported by smart code generation, and thus faster and more effective.

Details

The full text of the original GSoC proposal for this project is available here.


How can you help?

I believe that feedback from C++ developers is essential for this project to be successful. I'd like to focus on those features which are the most helpful not only in my opinion, but for the whole CDT community. That's why I'd like to hear from many C and C++ programmers from different backgrounds (including users of other IDEs than Eclipse). A conversation (either live or via mailing) about your problems, feelings and suggestions is OK, and I'd be very satisfied if you'd devote more time to join the discussions on this wiki related to individual ideas.

A good way to start would be to drop me an email answering some of those example questions:

  • What specific activites in C++ programming do you find especially repetitive, distracting, time-consuming?
  • While coding, maintaining code, etc; can you think of any short situations when you find yourself "only typing dry code and not thinking much"?
  • Do you find it comfortable to navigate through code in CDT? Do you miss any navigation features? Is it easy for you to browse through a codebase you see for the first time?
  • Do you use in-code standardised documentation, like Doxygen syntax? If yes: Which syntax do you use? Do you feel that you'd feel more comfortable having your IDE present it to you in some way during coding?
  • While refactoring is a topic big enough for a whole another project, I'll ask anyway: Is there a particular refactoring solution which you know and have used before, and - in your opinion - is absolutely worth implementing in CDT, as it saves a lot of work?

And more general:

  • Which IDE do you use for C/C++ development? Have you worked with other popular IDEs? If yes, why this one and not another one?
  • Have you seen any useful features in other IDEs which you believe CDT should have got, but still has not for some reason?
  • Anything more to add? Ever had any expectations from a C++ editor which you would find useful?

My contact details are below.

Another way to help is to give your feedback on entries in the Ideas for improvement section. All constructive comments are more than welcome.


Ideas for improvement

This section will be updated regularly with possible shortcomings of the C++ editor, ideas of solutions and areas of improvement.

Please treat existing idea pages as discussion pages. If you want to suggest your own idea, please contact me.

  1. Include management
  2. Namespaces and 'using' management
  3. Source/header synchronization
  4. Easy method override
  5. Override annotations and warnings in classes
  6. Context-sensitive filtering of context assist
  7. Enhanced hover
  8. Selection expansion
  9. Documentation in Context Assist

UI conventions and APIs to use

This is the list of tools which could be used to solve the diagnosed problems in a way coherent with established Eclipse conventions.

  • Annotations - descriptive per-line marks on the left of the editor
  • Warnings and Quick Fix solutions - usually related to static analysis, probably to be implemented in the Codan framework
  • Quick Assist - for performing context-sensitive, usually small code changes
  • Refactoring framework - for performing large automated code changes
  • Hovers - for displaying context-sensitive information in response to hovering mouse cursor over a symbol
  • "Refactoring boxes" (any official name?) - for marking a specific place in editor for the user to enter some code, often a preferable substitute for a dialog window. Optionally accompanied by a descriptive pop-up. (See Refactoring->Rename in JDT)


About me

My name is Tomasz Wesołowski. I study Computer Science in Technical University of Łódź, Poland; until June 2010 I'm residing in Sweden on student exchange with Jönköping School of Engineering.

My primary IT-related interests are software engineering and game development. I take interest in all kinds of tools and methods to improve the process of making thoughts become code and I believe that programming ergonomy matters; hence this project.

Contact

I can be reached in the following ways:

  • email: kosashi@gmail.com
  • mailing groups (cdt-dev@eclipse.org, soc-dev@eclipse.org)
  • Google Talk / XMPP: kosashi@gmail.com
  • IRC: Kosashi at FreeNode