What features do you want in an IDE?

I’m currently working on FusionEdit 2.0, and I would like to know what features FIRST programmers would like to have in their IDE. I’m looking for specific features, and how you think they should work.
I don’t want to know what IDE you use or which IDE is best. I’m only looking for the specific features.**

For a FIRST IDE, I’ve always wanted the following:

  1. Proper and cutomizable syntax highlighting.
  2. Code Completion. I don’t remember if I used signed or unsigned variables as arguments when I made the function. Please remind me.
  3. Tabs
  4. Multiple projects open at the same time
  5. Built in support for MCC18
  6. A ‘Taget’ box, so I can select which libraries to link in (05/06/Vex) without having to remove files from the project.
  7. A hex loader to download code onto the robot.
  8. Seperate compile and download buttons
  9. Platform independence. Sorry, no .net on this one.
  10. Some kind of CVS or SVN server/client built in. Every time I compile, it should create a back up.
  11. Going off of #10, I think it would be really cool to have CVS that automatically sends changes to a Gmail account; Possibly zips up the workspace and sends it to the gmail account. I may not have the computer I originally wrote the code on, and I seem to forget my thumb drive at home alot.
  12. A general cleaning up of the standard default workspace. Keep the object files in one directory, keep the hex’s in another.
  13. Automatic downloading of Kevin Watson’s code!
  14. An easy way to switch between IFI default and WPILib

More to come later

lol I second that! i defiently like number 11 thats a pretty good idea

I’m unsure as to what you’ve already got, so I’ll just list anything that comes to mind:

-Good tabbing (see MS VC++ 2005 for good tabbing):
-starts at the correct tab depth
-automatically changes tab depth for brackets
-Let’s you select different styles of tabbing (eg: tab brackets in or not)
-FireFox-style find in file and find in project
-Dock-able windows. Hate the floating things in MPLabs
-Refactoring support
-Goto definition/declaration from a right-click on the variable/function/etc.

And some re-emphasis on what Tom Bottiglieri said:

-Built in MCC18 support
-Built in CVS/SVN
-Syntax highlighting

I don’t know if this falls in what your question is asking, but I like VIM support. I like to program using VIM as my editor, and to have VIM integrated in an IDE would be exhilarating.

(ignores the fact that you can just use vim as the IDE if you really want to :slight_smile: )
Or how about the ability to drop in any text editor.

Thank you for the suggestions, from the Eclipse people as well (that is, me). Truthfully, I’d beg for this kind of input.

I can say that, at least for Eclipse, many of the features won’t happen. Especially things dealing with other plugins and core functionality. (Do you really want to commit when it builds every time you save? That’s a lot of committed syntax errors.)

Things that won’t change in Eclipse (too much work and a maintainence hassle):

  • the UI. But it’s already docked (nothing floats)
  • “FireFox-style find” – Too much change in core functions (We couldn’t use the Eclipse update sites anymore.)

Most of the other stuff is doable, given enough support to convince me to do so. :wink: So here’s what will change:

  • The CDT will need to be heavily modified to work at the level wanted. Already slated for modification to handle additional keywords. We’ll see
  • Distribute a C formatter to plug into the CDT
  • Assuming we can get licenses to work out, the code conveniences mentioned (Note to Kevin Watson and WPILib authors: Be generous, please!!!)
  • Auto-managing projects
  • Loader (probably based on JIFI), including the associated buttons

If anyone wants an idea how this may work with the features of CDT build manager, I will freely distribute our code as an Eclipse project. (It has multiple build profiles depending on how much of Kevin’s code you want to include.)

Down the road, I may include some “code manager/generator” functionality. Things like terminal menu generators, joystick mappers, interrupt routines, etc. (Again, a lot of this may depend on how much I can get Kevin Watson on board.)

As far as switching between IFI/WPILib, there’s such a fundemental API change that it just doesn’t make sense to have the same project do both. But having them both as base project templates makes sense. (Write to IFI, WPI, and Kevin Watson: back these IDE projects!)

Shameless plug. Here’s what’s already there:

  • Smart syntax handling: coloring, auto indent, etc. (not formatting, though
  • Finding definitions/declarations (except in the definitions of macros, which I think is odd…)
  • Autocomplete (At least for Java, I’d have to double-check C) (Intellisense is just preselecting the item you last used)
  • Built-in CVS client and Subversion plugin available (included in one of my distributions)
  • Refactoring
  • Multiple projects (in multiple languages)
  • Platform independence (although the same package won’t run on multiple platforms due to platform-specific code)

Also, I could use volunteers to write parts of this.

And again, many thanks for the input!

I think Astronouth7303 said most of what I could about everybody’s suggestions.

The only thing is I like .NET, so FusionEdit 2 will be .NET 2(maybe 3 depends when I get it close to stable), but could be ported to mono eventually.

I was going to say for all that is good, please make it platform independent, and if it MUST be a Windows-only IDE, I beg beg beg of you not to use the .Net framework.

But alas.


I think Tom has most of my wishes covered. The most important thing is that whatever features you do make available, make sure they work well. If I choose to use it, in the long run I do not want to deal with random crashes/buggy features. Make sure a lot of beta-testing is done before you release the final version. I am sure a lot of us will be willing to deliberately test every feature available. Hope this turns out well.

EDIT: I would like to see it compatible with older OS’s. Many teams do not have the luxury of using vista/xp for programming. Our programming laptop is a Windows 2000. Only about last year we upgraded to 2000 from Windows 98. Most of the team’s I help in the pits use 2000 and not XP, so having it compatible with older OS’s is a big plus. Another thing is most of these are not very powerful. Their specs are usually 256MB RAM with a 1.3Ghz processor. So making it as light as possible will also help. I know this is asking for a lot, but I am sure you will do your best.

<Mech Engr obviously browsing the wrong forum> Uh, what’s an IDE? :o

an Integrated Development Environment. Basically, it’s what you use to write your code, compile it, etc. :wink:

IDE on Wikipedia.

I don’t know if uploading code to an svn everytime you compile is a great idea, as someone else suggested a few posts earlier.
If one needs to search through old code, he’ll end up looking through thousands of commits thanks to the svn/cvs being updated every compile. CVS/SVN should be updated for every working change. When debugging, you don’t want any of that updated to the CVS/SVN. I think it would be best if there was a button/hotkey for easy updating, but not an update every time.

I’d like to see linux support too, so yes please make platform independent or at least easily portable to another OS, meaning not .NET :slight_smile:
I think there’s a working compiler for linux now that works for PIC. I’ll have to look that up again.

Good luck.