
Ask HN: What is the must have feature of your IDE - pedalpete
What are the features of your IDE that you think separate it from the rest? What can you not live with out.<p>If there are things you don&#x27;t like about your chosen IDE, what are those?
======
skrebbel
Discoverability. I want to be able to download a library (through whatever
means), and then figure out how to use it from within my code. I want to be
able to type the name of a class, object, namespace, whatever the language has
for that, that corresponds to the name of said library and then just play with
it. I want docs for every method and class (or function, object, whatever)
that I enter, in a tooltip, at my fingertips. I want autocomplete, not because
I am too lazy to type, but because I want to call functions that actually
_exist_. I want my IDE to tell me which parameters a function expects and what
to think about when calling it.

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.

~~~
girvo
Oh gosh, I agree so very very much. Sadly, for the dynamic languages I program
in most, few IDEs handle this correctly. Komodo is the closest, and even it
chokes on some more advanced stuff (like IoC containers and the like, though i
can get around it with annotations in the comments).

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)

~~~
jaegerpicker
Have you tried Intellij's dynamic language IDE's? they are pretty awesome and
imo much better than Komodo. Javescript/Python/ruby are all supported out of
the box and there are plugins for a ton of other languages.

~~~
girvo
Yep, and for PHP, I actually disagree that it's better :) well, that's not a
fair comparison, at this point I've coded so many plugins and changed the
interface for Komodo so much it's as close to perfect as I can get it, whereas
using IntelliJ (which is great in its own way) doesn't fit properly for me.
Maybe one day I'll move over, but as it stands while IntelliJ may be better in
some bits, I've got Komodo working better for me now than IntelliJ is out of
the box... Sunk cost, and all that heh.

------
sparkie
_Correct_ syntax highlighting. (Ie, based on proper parsing and semantic
analysis, not simple regex matching of keywords). Autocompletion. Go-to
definition. Automatic, configurable code styling (i.e. AStyle). Visual
debugging support (Click for breakpoints, step through code, watch
variables/memory etc).

------
edw519
Ability to _turn off_ anything I don't want.

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.

------
benjaminwootton
I love the combination of Tmux and VI. This is because of the tight
integration with the shell and the fact that I can work completely without a
mouse.

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.

------
draven
Emacs keybindings, extensibility (that would include configurability.)

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.)

~~~
pedalpete
I totally agree with most IDEs and even the number of menus and capabilities
in Sublime Text being overwhelming or hidden.

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.

------
chrisdone
Well, mine is Emacs.

> 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?

~~~
Singletoned
> 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.

------
qollin
1\. Refactoring. Mostly needed:

    
    
      - 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

------
dwc
Pros: Vi's ability to be easily mouseless, and it's wonderful "editing
language". By "editing language" I mean that editing commands follow a syntax
with verbs, objects, modifiers, etc. The "dw" command, for instance, deletes a
word. Then you learn that "p" is a paragraph object. Can you "dp" to delete a
paragraph? Of course, because that's how it goes in vi/vim. Want to delete 4
words? 4dw. Want to change a word? cw deletes and then puts you in insert
mode. Does that work on paragraphs and other things? Of course. Learning new
things in vim is kind of like compound interest in terms of payoff. Every text
object you learn gets multiplied by all the verbs you know, and any new verb
can be applied to all the text objects you know.

Cons: vimscript

~~~
pedalpete
that all sounds really amazing, and so many people love VI, I'm wondering if
more IDEs have copied these short cuts. I know sublime text has a plugin to
add VI shortcuts.

I always found it a bit awkward to get in and out of VIs 'edit modes', it just
seemed so unnatural.

~~~
dwc
The whole modal aspect takes time to get used to, and some people never get
over it. Even given a fair shot, I don't think vi is for everyone. For my
part, after using emacs for more than a decade, I knew I'd stick with vi after
about 2 weeks.

------
zkar
This comment only on the first question: Ability to reverse engineer the
program flow and provide a sequence diagram based on a run. THis should have
the ability to specify a filter so unnecessary noise/well understood parts of
the program flow can be skipped

~~~
pedalpete
Sounds really interesting. Are you thinking something like selecting a
function/method will chain all the other functions/methods that call it and
display them like a tree map?

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.

------
jbrooksuk
I _really_ love Sublime, so here are a few features which stop be from
switching to apps such as Chocolat.

\- 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.

~~~
codeN
Would definitely add the "extremely simple" package manager to the list.

~~~
jbrooksuk
True say.

Package Control should be built in and I'm surprised negotiations haven't been
made yet.

------
pron
Codejump, auto-complete, pop-up docs, error highlighting, debugger, some
refactoring.

------
coffeeaddicted
Must have:

\- 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

~~~
pedalpete
curious about your 'text search per solution'. Are you saying 'text search
across all projects'?

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?

~~~
coffeeaddicted
Yeah, solution is the name in VS for it. Workspace is maye a better name.
Basically a file containing more than 1 project file (like a project + all
it's libraries).

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.

------
adamnemecek
Smart and fast definition and reference lookups. That's all I really need but
it's surprising how many IDEs are broken in this aspect.

~~~
jaegerpicker
Yeah those are definitely my favorite features, something that I think
Intellij gets really right but most others don't. But my can't live without
feature is Visual debugging. It reduces cognitive overhead to such a degree
that it's the IDE killer feature for me.

------
daGrevis
Since I started to use Vim, I can't switch to any other editor or IDE. It's
not because Vim editor is so great or because I don't like those niceties that
other editors and IDEs offer, but it's because I have those Vim-bindings in my
muscle memory and I can't be productive w/o them.

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.

~~~
pedalpete
I know there are sublime text plugins for VI bindings (I think they are the
same as Vim bindings), and it is also highly customizable with plugins.

I had difficulty getting into lighttable for some reason.

~~~
daGrevis
Vim bindings include Vi bindings, but Vim bindings is more.

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. :)

------
dferlemann
cannot live without (from VS): \- syntax highlighting obviously \- THIS IS
BIG: open IDE with unlimited number of instances. I forgot which IDE annoyed
me on this one... IntelliJ? \- reference lookup \- intellisense \- code (unit
test) coverage map, unit test project integration \- ability to make my own
extension, add-on, macros, etc \- SCM integration, detect file change and
indicates which files have been changed in source panel. \- code map ...

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 ...

~~~
pedalpete
Can you explain what you mean about 'unit test project integration'?

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.

------
djKianoosh
Not being slow. Is that a feature?

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...

~~~
pedalpete
absolutely! I have barely used eclipse (or other IDEs). I know they aren't
fast, but wasn't sure how many people were annoyed by the speed.

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.

------
adamtaa
Must have features for me are code completion "intellisense" to borrow a term.
Proper and diverse syntax highlighting, Function/Method signature helpers,
code/file navigation, and a clearly defined layout of the interface.
Additionally, the IDE should have a clearly defined purpose and all utilities
and support functions should reflect this. SOme good examples IMO are visual
studio, and jetbrains IDEs of which I primarily use webstorm

------
fengor
* Syntax hilighting (any text editor can have this) * Find Resource by starting to type the filename * Follow function calls * integrated debugger

~~~
monk_e_boy
> Integrated debugger!

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.

------
Kronuz
Syntax highlighting, code completion, jump to definition and code linting,
search and replace (regexps) in project... and of course a nice and, most
importantly, fast code editor.

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.

------
nubela
Code jump. Intellisense. Refactoring is really sweet too, but that I can do
with just find/replace (carefully).

------
dllthomas
One feature I've been loving in vi lately is the ability to easily drop source
locations into my quickfix list to step through. Not sure I "can not live with
out" that, though. Modal editing is probably the most important feature to me,
followed closely by shell integration.

------
ssawyer06
This might sound stupid, but I like IDEs that look good. Honestly, they all
have pretty much the same feature set. I like to use applications that are
pleasing to stare at for hours on end (and don't require much customization to
get there).

~~~
pedalpete
I find most IDEs hideous and difficult to look at with so many buttons that I
don't use and don't want to use.

What have you found that looks good? Sublime is ok, so is Lighttable.

~~~
ssawyer06
I like Ninja IDE for Python. Don't have a nice looking one for Java. NetBeans
is a bit less visually offensive than Eclipse.

------
ya3r
The ability to turn off features.

------
alextingle
I don't use IDEs because I hate being distracted by their features (most of
which I don't want). A good syntax highlighting text editor with tabs is all I
want.

~~~
SippinLean
Wow, really? Typing `fu` then pressing `enter` to type `function(){}` will
always be faster than typing the whole thing out. I can't imagine not wanting
features like that...

~~~
alextingle
Yeah, that's exactly the kind of feature that I can't stand.

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.

~~~
jaredsohn
An additional annoyance is when your UI freezes as the IDE needs to think
while populating a popup window. (such as
[http://stackoverflow.com/questions/3590489/visual-
studio-201...](http://stackoverflow.com/questions/3590489/visual-
studio-2010-intellisense-slows-down-everything))

------
Joeboy
I use vi(m) because it's available everywhere. I have no particular opinion on
whether it's otherwise better than anything else, and I kind of suck at using
it.

~~~
fengor
WEll you could check out "Practical Vim" i found it tremendously helpful

~~~
Joeboy
Yeah, "learn to use vim properly" has been on my TODO list for about 15 years
now. It's probably time I did something about it.

~~~
syllogism
This Vim game helped me more than anything I'd seen in ~5 years: [http://vim-
adventures.com](http://vim-adventures.com)

~~~
dllthomas
It's pretty outstanding, but I'm kind of baffled by the pricing (6 months for
$25). As already a vim expert, I clicked the pay link expecting to happily
drop a one-time ~$10 and balked. Just going through the demo is likely to be
worthwhile, though.

~~~
syllogism
The pricing's aggressive, but I've been in chump-mode for Vim for way too
long. So for me it was like, "okay you've got me, you bastard."

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.

~~~
dllthomas
Sure; I'm not convinced it's not worth it for most people! I'm just not sure
how able they'll be to convince people of that, and I don't expect it's worth
it for me (unfortunately).

------
paulferrett
Insane-fast code completion, jump to definition, bracket/brace/quote/tag auto-
closing. Just the boring usual things :)

------
kldavis4
Ability to navigate a large code base quickly, refactoring, jump to
declaration/implementation.

------
kushti
Smart completion based on type info(Intellij Idea, Scala & Java code)

------
finishingmove
"Find in Files" and "Find and Replace in Files".

~~~
alextingle

        grep
        sed -i

------
VMG
I can live without vim keybindings, but it's annoying.

------
qwerta
My IDE must have only single feature: it must be Idea :-).

~~~
pedalpete
I assume you mean IDEA from IntelliJ?

------
jasin
Quality debugger integration and easy navigation in code.

------
venomsnake
Search, Search and Replace in multiple files.

------
thenerdfiles
Syntax Highlighting

File and Project Viewer

Integrated Debugger

Integrated Linter

Source Code as Tags/Analysis/Overview

Code Completion

Tmux

~~~
pedalpete
Can you explain what you mean about 'Source Code as Tags/Analysis/Overview'?

I did a web search but didn't come up with anything.

~~~
thenerdfiles
Like Tagbar and Ctags for Vim. SublimeText has an file overview panel which
sort of produces this, but what I prefer is a sortable table of contents of
classes, functions, and variables -- like a miniview of your current file.

Having Integrated SCM, or at least a per file history, is important to me,
too.

