Thursday, January 31, 2013

webstorm at 2 weeks

i've been using jetbrains webstorm for 2 weeks now. i'm coming from netbeans so most of my comments are relative to the netbeans 7.2 (or 7.3 beta) baseline
  • supports JsDoc @augments tag - netbeans doesn't
    • this is primarily useful for javascript that simulates inheritance
    • it may also support @lends, but i didn't need the feature and couldn't get it to work in the few minutes i played with it
  • "Go To Declaration" almost always works (if you've given the code enough JsDoc comments so that it is unambiguous - can't ask for more than that), appears to be model based
  • "Find Usages" isn't great or terrible - seems to be primarily based on string matching, eg methods with the same name in different classes are jumbled all together - http://youtrack.jetbrains.com/issue/WEB-6360
    • no way to limit the search to subclasses
    • jetbrains claims that 6360 is fixed in the next beta !!! that only took 11 days ... impressive
  • fails to detect file changes on disk that happen in symlinked directories - http://youtrack.jetbrains.com/issue/WEB-6438. this is a major failing, likely to result in lost work
    • WORKAROUND: using the settings dialog, add multiple content roots. i've just converted to this arrangement - will have to wait to see if this solves the "file changed on disk" errors
  • macros are so slow as to be useless - my favorite netbeans macro is "move up/down 10 lines and recenter the screen" which provides emacs-style scrolling. in netbeans this macro can scroll 400 lines per second. in webstorm, it's maybe 10 per second, can't key-repeat, and if you land on a line with a hint it activates the hint instead of the macro. ie, it's worthless
  • changing files in webstorm is somewhat faster and "smoother" than in netbeans
  • "go to super method" doesn't work
    • it does, but the cursor has to be inside the definition, not on the prototype method name
  • many features just don't work - i've googled and tried everything i found but i haven't submitted bug reports. if anyone knows a solution i'm all ears
    • method hierarchy - either grayed out or does nothing
    • call hierarchy - either grayed out or does nothing
    • super method - does nothing (clicking the arrows in the margin works)
    • the "Structure Tool" is somewhat broken - there's no easy way so select the file to show the structure of. WORKAROUND - have the file that you want active in the editor, "Navigate.Select In" and chose "Structure" (i've got it bound to Alt-4, 4)
  • the interface for editing settings is much more responsive than in netbeans (possibly limited to linux ???). this made getting started with webstorm less painful than expected (had many shortcuts to set) but long term doesn't help much
  • visual glitches
    • when iterating thru "find usages", keyboard focus has a tendency to get lost - closing, reopening, and closing the "find tool" seems to bring the focus back
webstorm definitely has some nice features, but also feels amateurish in too many ways. doubt that i'll be using it (or IDEA, the full java IDE - $200) as my main editor, but still on the fence about buying a copy - the $50 might be worth it just as a tool for code understanding of inheritance-based javascript (the only significant area that it's better than netbeans). netbeans is a better editor, has excellent java code understanding (and decent javascript support, eg code completion is good), is free and Free Software, and feels more professional


UPDATE: i'm pleased with the quick response (ie the workaround) on the symlink issue. will keep an open mind for the next 2 weeks (title changed as well)

UPDATE: jetbrains claims that 6360 is fixed in the next beta. it's really a feature enhancement - i was impressed they didn't outright reject it, doubly impressed that they actually worked on it


tl;dr - overall, webstorm is a good editor. webstorm's big wins so far are better support for javascript that simulates inheritance and excellent responses to bug reports

No comments: