Wednesday, January 16, 2013

jetbrains webstorm first thoughts

i'm back to working on javascript after a year of java, and missing the excellent navigation and code understanding features that netbeans provides for java. netbeans javascript support is decent, but they just switched to a new language model and parser and it's one step forward, one step back ... in particular, jsdoc support for superclass info is limited. hoping that this improves - the guys working on it seem sharp and responsive

but in the meantime i've decided to try jetbrains webstorm, $50 for an individual license or a free 30 day trial. the code understanding seems better, especially the jsdoc support. still getting it configured, especially the keymap. documenting issues here


  • multiple shortcuts - the actions only appear to support a single shortcut. for some actions, i want more than one ... eg, for end of line i use ctrl-E (i'm an emacs guy), but i also want the "End" key to work SOLVED, in the settings.keymap page, just add another shortcut (i was trying to use the "add 2nd stroke" which creates a compound keystroke instead, emacs-style)
  • jetbrains sells themselves as shortcut friendly. and in general, the support seems pretty good. but the ultimate irony of webstorm is that the keymap settings are totally dependent on the mouse. you can't set shortcuts, delete shortcuts, search actions or search shortcuts using just the keyboard ... it's a clickfest. netbeans is much better in this regard (though at the price of the settings interface being slower and less responsive)
  • the "Structure tool" should be super useful. in fact, this is pretty much my reason for trying webstorm. but i can't get it to change files ... ie, it always shows me the structure for classes defined in one file, but i can't change that file. the navigation bar reverts to the that file whenever i switch to the tool. bizarre
    • WORKAROUND: Navigate.Select In.File Structure ... for me this is the compound keystroke [Alt-F1, 4] and i don't see any way to get there directly, ie with a single keystroke
  • absolutely amazing feature find ... Column Selection Mode. allows deleting a rectangular region - been wanting this for forever !!! i've got to play around and see if you can do anything meaningful other than deletions
    • and now that i know what it's called, it looks like netbeans supports it too (Toggle Rectangular Selection, or the rectangular selection toolbar button)
    • emacs too ... string-insert-rectangle, delete-rectangle
  • as best as i can tell, there is no way to tell if files have been saved or have outstanding changes ... yikes !!!
  • tried to create a macro for emacs-style scrolling (ie, jump a number of lines and recenter the cursor - in my case i want 10 lines). the macro fails completely ... it's slow to replay and if there's a code hint on the line it activates the hint. total lossage !!! netbeans is much better in this regard
  • type inference is pretty weak. if you jsdoc everything, webstorm is pretty good about keeping track of the types, but if you assign a known type to a local variable, it can't infer that the local is the same type. pretty weak. hoping that netbeans improves and can handle this logic
  • lossage - [Navigate.Super Method] doesn't work. clicking on the override symbol works





No comments: