Ask HN: What is the must have feature of your IDE
If there are things you don't like about your chosen IDE, what are those?
If there are things you don't like about your chosen IDE, what are those?
Seriously guys, if I wanted to continuously switch between my editor and a browser with API docs, I'd be using a text-editor. If I wanted to spend 80% of my time going through badly commented undocumented source code written by colleagues or outright (friendly, OSS-contributing) strangers, I'd join a Ruby shop. I want an IDE with discoverability, and a language that supports this well.
My other must-have feature is integrated debugging. An IDE without integrated debugging isn't and IDE, it's a text editor with some plugins.
Edit: oh by the way, SublimeCodeIntel? It's a port of Komodo's CodeIntel library. I switched to Sublime entirely for a while, but bit the bullet and bought a license for Komodo IDE and use Textadept for smaller projects and quick edits (it's a nice Lua-extensible editor, with an awesome ncurses front end to run in the terminal/over SSH)
In both case, it's a dynamic language, with an image-based implementation.
You can debug/fix code in libraries without even realizing it.
Nothing distracts my focus from my core work more than the IDE doing something I didn't intend. This is especially irritating when I accidentally switched modes or put myself somewhere else with no idea what I did or how to undo it.
So I should be able to turn it off and never worry about it again.
The caveman in me loves textpad.
Alas I am a Java guy and restricted to IntelliJ at work. It's a great IDE but I never feel as 'at home' as I do in the shell.
My favorite and most used refactoring feature in any IDE is Extract Method. It's a simple one, but I use it repeatedly when cleaning up both my own code and legacy code. My code would be much uglier without it.
I'm an Emacs user. I don't have a very long init.el but appreciate being able to deactivate stuff I don't use, especially things like scrollbars, toolbars, etc.
Using IDEs I feel overwhelmed (too many GUI elements) and powerless (mostly because I'm not familiar with them, but discoverability is important too, see Emacs' apropos.)
Discoverability is important, and the ability to 'get out' of any mode easily. But at the same time, not visually overloading the user, which I think most IDEs are guilty of.
> What are the features of your IDE that you think separate it from the rest? What can you not live with out.
Extensibility. I can live without any other built-in features, because I can always write them myself in short order. Imagine a programming language in which you can't write your own functions. You wouldn't want to use that, would you?
I think I'm going to be quoting that for quite a while to come. I'm a fellow Emacs user, and I think that perfectly sums up why I use it.
- project wide renaming of functions, classes, ... inside the main editor (not through a "Refactoring dialog")
- "extract method" at the press of a hotkey
2. Code generation to support "using things before defining them" (like what CTRL-1 in eclipse does). So I can e.g. use a class in a test that does not exist yet and have the IDE generate a stub of that class for me.3. Automatic organization of imports. I don't want to have to lookup and type package names.
4. Everything needs to work without a mouse
Cons: vimscript
I always found it a bit awkward to get in and out of VIs 'edit modes', it just seemed so unnatural.
Have you seen this somewhere already?
I'm not sure how difficult this would be to create, but I'm thinking if implemented properly, it could help in working with less/scss and show how changing a variable or class would affect the rest of the compiled css. What classes and ids would be affected, etc. etc.
- Multiple Cursors, at first you think this is just a gimmick, but it soon shows its usefulness. I use this feature all of the time.
- Jump to definition.
- Useful and intuitive key bindings.
- Console output.
Package Control should be built in and I'm surprised negotiations haven't been made yet.
- An editor that can show different line-endings (cr/lf) and it must be possible to between them (nice to have - switching that independently for each open file).
- Text search per file, per project and per solution.
Nice to have:
- Correct syntax highlighting
- Find definitions/declarations in c++ code correctly
- Free software
- Cross platform support
- Support for different compilers
- Show potential compile errors already on typing (in VS since 2010 I think, that feature alone made me use VS again more regularly)
- Debugger with the features of VS (fast, most useful data shown automatically or with mouse-over, easy to edit values, easy to copy&paste parameters + values + stack, easy to add watches with right-click, remembers breakpoints&watches&active windows between debug sessions, comfortable conditional breakpoints and watches)
- Nice support for disassembler (stuff like showing c++ and it's asm code mixed)
- Locking window layouts (missing that in VS where I mess up my layout by dragging windows accidentally all the time)
- Configuration files that don't cause troubles when working in teams (troubles I've seen with IDE's in the past had been user-specific settings being in project-files and path-settings not written in a OS independent way so each time someone checked in from another all paths got changed again)
- Allow putting project files in any place independent of where the sources are (seen that one several times - IDE's that insisted of placing their project files in the root of the project)
- Plugin-support
Does having the configuration files and project files not saved within the project solve most of the problems you describe with user-settings and project files?
The problems with configuration files are solved when typical settings for a user/machine are never inside project file settings. I know one IDE which for example saves the currently active project of a solution in the solution file. But that's something everyone is changing all the time and is really a user-specific setting. Sounds trivial but is really annoying in combination with version control systems.
Show me an IDE that has nice support for Vim-bindings and is highly customizable (plugin support with rich API, programming language I can use to improve it as I like it), and I will happily leave Vim and use it. So far the closest thing I've seen is Lighttable, but still it lacks some Vim-bindings and is very in beta for now.
To answer OP's question, Vim-bindings and configuration options at extreme.
I had difficulty getting into lighttable for some reason.
Light Table is very alpha, so at the moment it's really not a serious candidate to replace Sublime or Vim. Will see what happens. :)
want but have not encountered: - source panel file structure that allow me to open files in different apps of my choice. detects file type. - simple, un-confusing, customizable UI - all shortcuts need to be customizable ...
I'll have to take a look at how VS gives a unit test coverage map. I was trying to figure out a way to link unit tests to their code to make it easier (visually) to write your tests and your code at the same time in the same window and watch your tests pass in real time as you code.
Similar to the original lighttable demo, but using tests, and hopefully easier to understand.
For example, when IDEs like Eclipse decide to take 2 minutes to switch between an xml file and a java and javascript file. Why so many devs put up with this is beyond me, but I digress...
Anybody know why it takes so long? Is it because the file needs to load up all the documentation, code bindings, auto-completes, etc. that many other people here have mentioned?
I'm guessing if an IDE is looking through a file every time it opens and mapping that files method paths throughout the project, that could take a bit of time.
I used visual studio a long time ago, now any ide without a debugger seems quaint.
I use NetBeans and NuSphere (PHP IDE) both are OK. The NuSphere PHP/debug plugin is ace. You can pause, edit variables, run random commands, move execution to a different point, all sorts of cool stuff.
Also love the chrome JS debugger, it's a bit verbose for my liking, maybe that's JS having a lot of crap bundled in objects all visible by default.
So, I use Sublime Text. Although it technically isn't an IDE, with some plugins installed (SublimeCodeIntel, SublimeLinter, and others), it works wonderfully as is if was. And it's blazing fast too.
What have you found that looks good? Sublime is ok, so is Lighttable.
It takes approximately a second to type "nction(){}". Actual typing is an insignificant part of the time it takes to write code.
OTOH, for me, the extra cognitive load of having to think about how the editor is going to interpret my keystrokes is a real distraction. What happens if I want to type "fu<new line>"? Will I need to type "fu <new line><left arrow><delete><down arrow>"? Or is the editor clever enough to realise that "fu..." shouldn't be expanded in this context? So, what is the context that the editor sees at this point in the code?... Etc.
Every time the editor types something for me that I wasn't expecting, it distracts me from my flow. Or if I maintain a mental model of what the editor thinks is going on, then I won't be surprised, but I'm also not devoting 100% of my attention to the task at hand.
I do use some very simple auto-completion. So, having the editor re-create the indent of the previous line when I press <return> is OK - because it's completely predictable.
Finally, some IDEs seem to think that its a great idea to pop-up menus on top of the code, where I'm trying to type. (Intellisense, I'm looking at you!) That's completely infuriating. I want to be able to see my code.
It was worth the money, because even small, lasting productivity improvements are that valuable. There are heaps of other ways to learn vim, but it's been a long time and I haven't done them.
grep
sed -iFile and Project Viewer
Integrated Debugger
Integrated Linter
Source Code as Tags/Analysis/Overview
Code Completion
Tmux
I did a web search but didn't come up with anything.
Having Integrated SCM, or at least a per file history, is important to me, too.