Emacs and Arduino
Arduino IDE is good, but if you are heavily invested in any other editor such as Emacs or Vim, it just sucks. However there is an option to use an external editor to do the coding and just use the IDE to compile and upload.
External editor option is not documented very well. What happens when you enable it is, it will disable editing on the file so you can use your favorite editor (emacs for me) to do your coding and use the IDE just for compiling and uploading.