Class: RubyLsp::Requests::Formatting
- Inherits:
-
RuboCopRequest
- Object
- RuboCop::Runner
- RuboCopRequest
- RubyLsp::Requests::Formatting
- Extended by:
- T::Sig
- Defined in:
- lib/ruby_lsp/requests/formatting.rb
Overview
The [formatting](microsoft.github.io/language-server-protocol/specification#textDocument_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.
# Example
“‘ruby def say_hello puts “Hello” # –> formatting: fixes the indentation on save end “`
Constant Summary collapse
- RUBOCOP_FLAGS =
T.let((COMMON_RUBOCOP_FLAGS + ["--auto-correct"]).freeze, T::Array[String])
Constants inherited from RuboCopRequest
RuboCopRequest::COMMON_RUBOCOP_FLAGS
Instance Attribute Summary
Attributes inherited from RuboCopRequest
Instance Method Summary collapse
-
#initialize(uri, document) ⇒ Formatting
constructor
A new instance of Formatting.
- #run ⇒ Object
Constructor Details
#initialize(uri, document) ⇒ Formatting
Returns a new instance of Formatting.
23 24 25 26 |
# File 'lib/ruby_lsp/requests/formatting.rb', line 23 def initialize(uri, document) super @formatted_text = T.let(nil, T.nilable(String)) end |
Instance Method Details
#run ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ruby_lsp/requests/formatting.rb', line 29 def run super @formatted_text = [:stdin] # Rubocop applies the corrections on stdin return unless @formatted_text [ LanguageServer::Protocol::Interface::TextEdit.new( range: LanguageServer::Protocol::Interface::Range.new( start: LanguageServer::Protocol::Interface::Position.new(line: 0, character: 0), end: LanguageServer::Protocol::Interface::Position.new( line: text.size, character: text.size ) ), new_text: @formatted_text ), ] end |