class RubyLsp::Requests::Formatting
The formatting request uses RuboCop
to fix auto-correctable offenses in the document. This requires enabling format on save and registering the ruby-lsp as the Ruby formatter.
The rubyLsp.formatter
setting specifies which formatter to use. If set to auto
then it behaves as follows: * It will use RuboCop
if it is part of the bundle. * If RuboCop
is not available, and syntax_tree
is a direct dependency, it will use that. * Otherwise, no formatting will be applied.
Example¶ ↑
def say_hello puts "Hello" # --> formatting: fixes the indentation on save end
Public Class Methods
new(document, formatter: "auto")
click to toggle source
Calls superclass method
RubyLsp::Requests::BaseRequest::new
# File lib/ruby_lsp/requests/formatting.rb, line 35 def initialize(document, formatter: "auto") super(document) @uri = T.let(document.uri, String) @formatter = formatter end
Public Instance Methods
run()
click to toggle source
# File lib/ruby_lsp/requests/formatting.rb, line 43 def run # Don't try to format files outside the current working directory return unless @uri.sub("file://", "").start_with?(Dir.pwd) return if @document.syntax_error? formatted_text = formatted_file return unless formatted_text size = @document.source.size return if formatted_text.size == size && formatted_text == @document.source [ Interface::TextEdit.new( range: Interface::Range.new( start: Interface::Position.new(line: 0, character: 0), end: Interface::Position.new(line: size, character: size), ), new_text: formatted_text, ), ] end