Sha256: 1fdd297913e5082c3548484d9bf78279860b3f7a1eedd2ead60f1a0d3b28956d
Contents?: true
Size: 1.68 KB
Versions: 1
Compression:
Stored size: 1.68 KB
Contents
# typed: strict # frozen_string_literal: true module RubyLsp module Requests # The [formatting](https://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 # ``` class Formatting < RuboCopRequest extend T::Sig RUBOCOP_FLAGS = T.let((COMMON_RUBOCOP_FLAGS + ["--auto-correct"]).freeze, T::Array[String]) sig { params(uri: String, document: Document).void } def initialize(uri, document) super @formatted_text = T.let(nil, T.nilable(String)) end sig { override.returns(T.nilable(T.all(T::Array[LanguageServer::Protocol::Interface::TextEdit], Object))) } def run super @formatted_text = @options[: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 private sig { returns(T::Array[String]) } def rubocop_flags RUBOCOP_FLAGS end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby-lsp-0.1.0 | lib/ruby_lsp/requests/formatting.rb |