I'm checking out Sublime Text 2, as a lot of folks have much good to say about it, and it so far has every key feture I"ve been looking for for years.
The smart-indenting is, not to put too fine a point on it, really lame. Perhaps I haven't found the right setting yet, but this is what I would like, and indeed, it's really pretty critical to my productivity -- I use primarily Python, where indenting is key -- but in any language I want clean consistent indenting.
What do I want? in short, I should NEVER have to delete or add a single space to get a line indented right, or hit <tab> or <backspace> more than once (or maybe once per level of detent I want.
There needs to be a way, with a single keystroke (ideally <tab>, and I think I can map <tab> to "reindent"), to say "indent this line correctly". "reindent" professes to do this, but it's really pretty lame. In a delimted language, indenting be very clearly defined, in Python, there is a bit of ambiguity, but only a little.
- the line should indent to be the same as the line above, unless the line above begins a new block (a : in python ), in which case it should increase the indentation level one.
- if the line is a continuation line (the previous line has an unclosed parentheses, etc), the line should be indented (with spaces) to line up with the unclosed paren in the line above.
- the cursor should be placed at the end of the indentation -- at the beginning of the real line
- if <backspace> is hit at the end of the indentation level, the level of indentation is decreased by one.
There are a number of details to doing it right, but I think that's about it for the big things.
(X)emacs does this well
Peppy does this well
I think VIM does this well.
Sublime, at least with the settings I've found, does this horribly.
(Actually, remarkably few editors do this well!)
This is a deal breaker for me, but I can't believe this is an unusual desire, so wondering is someone has already done this.
Am I going to need to write a new plug-in? If so can someone point me to one that would be good to start from?