I use SublimeText since a few months with ruby, and I have a issue with comment auto-indentation. Indentation uses the comment's indentation, and indent all the following code using this indentation. I expect auto-indentation to ignore(at least) or set indent of previous code (at best), but not to take comment's indentation at all :
All my colleagues who use this editor have the same issue Here's a sample code re-indented by SublimeText
class Test
  def method1
  end
    #Bad indentation
    def method2
      somecode
    end
    def method3
      somecode
    end
  end
Wanted :
class Test
  def method1
  end
  #Bad indentation
  def method2
    somecode
  end
  def method3
    somecode
  end
end
I did a quickfix on ~/.config/sublime-text-2/Packages/Default/Indentation Rules - Comments.tmPreferences
Replacing
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
    <key>preserveIndent</key>
    <true/>
</dict>
With
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
    <key>preserveIndent</key>
    <false/>
</dict>
But it affects the default behavior, and I do prefer only affect Ruby's behavior. Does anyone has greater solution ?
I suggest you use the BeautifyRuby ST2 package. You will also need to install the htmlbeautifier gem. Not only your comments, but also your code will be indented nicely.
If you use rvm, you might need to change the  BeautifyRuby.sublime-settings to use the ruby installed by the rvm, instead of the system installed ruby. To find out the path of ruby you are using, type which ruby at the shell prompt. Paste this path as the value for the key named "ruby" such as:
"ruby": "/home/thetuxracer/.rvm/rubies/ruby-2.0.0-p247/bin/ruby"
and beautifyruby can be use with : edit->beautify ruby
or you can change it keybind:
    { 
  "keys": ["alt+tab"],
  "command": "beautify_ruby", 
  "context": { "key": "selector",
    "operator": "equal", 
    "operand": "source.rb, source.ruby" }
  },
{
  "keys": ["alt+tab"],
  "command": "reindent", 
  "args": {
    "single_line": false
    },
  "context": { "key": "selector",
    "operator": "not_equal", 
    "operand": "source.rb, source.ruby" }
  },
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With