Every time I try it though I just can't get indentation detection to work at all. For the amount of functionality built in I'd really expect that to be built in or easy to configure. Having Emacs control indentation with the TAB key drives me insane too, I'd just like to control it myself.
For developers who work over a range of different projects with different indentation styles, that sort of functionality is essential. dtrt-indent seems like it should solve the detection issue but I've had very little success getting it to reliably work.
Thats what the space key is for. Also emacs controlling tabs is the liberating genius of python dev in emacs.
I've been using Spacemacs for about 3 months now, moving from Sublime Text, and while the initial experience was mixed, there are things that I just couldn't do without (project management felt weird at first, but now feels seamless, the fact you can edit over SSH transparently etc).
There are still many pain points, such as the sub-standard multiple cursor implementation (with `evil-mc`, `iedit` isn't much better) or the fragmented and incomplete tagging implementation (GNU Global doesn't support everything and generating isn't transparent, though `dumb-jump` is being implemented which may help).
However, I feel that both Emacs and Spacemacs have very strong foundations and extremely vibrant communities, and am confident a lot of the pain points (at least the ones that aren't architecture-related) will be fixed given enough time. Spacemacs is well on its way for a new major release, which should fix a few things.
I've never really been a fan of multiple cursors, Vim users tend to use macros to solve this. It's a highly valuable thing to learn and practise.
Came from vim as well and i wont go back. Spacemacs just fuses both vim / emacs world together seamlessly.
All important keystrokes are the same across languages which is nice.
Cant see me leaving the emacs-evil world anytime soon.
In your .spacemacs there's a function dotspacemacs/user-config. That runs _after_ spacemacs loads and inits all its layers. It's a good place to configure all the various modes in ways that the layer may not have exposed. Regarding indent, I have this kind of thing:
;; tab for indent, me like
(define-key prog-mode-map (kbd "<tab>") 'indent-for-tab-command)
(setq web-mode-markup-indent-offset 2)
(setq web-mode-css-indent-offset 2)
(setq web-mode-code-indent-offset 2)
(setq css-indent-offset 2)
(setq-default js-indent-level 2)
but for any given mode, you can find the variables to set, usually involving the word 'offset' and go from there.
You can also use the customize feature -- space colon customize.I've really found emacs and spacemacs worth the effort, but there definitely is effort.