Sha256: f7a5325c87632fad6e2739ea90b279c64913f220f8889ff75346f43a5e73e73b

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

# typed: strict
# frozen_string_literal: true

require "ruby_lsp/extension"

require_relative "rails_client"
require_relative "hover"
require_relative "code_lens"

module RubyLsp
  module Rails
    class Extension < ::RubyLsp::Extension
      extend T::Sig

      sig { returns(RailsClient) }
      def client
        @client ||= T.let(RailsClient.new, T.nilable(RailsClient))
      end

      sig { override.void }
      def activate
        client.check_if_server_is_running!
      end

      sig { override.void }
      def deactivate; end

      # Creates a new CodeLens listener. This method is invoked on every CodeLens request
      sig do
        override.params(
          uri: URI::Generic,
          emitter: EventEmitter,
          message_queue: Thread::Queue,
        ).returns(T.nilable(Listener[T::Array[Interface::CodeLens]]))
      end
      def create_code_lens_listener(uri, emitter, message_queue)
        CodeLens.new(uri, emitter, message_queue)
      end

      sig do
        override.params(
          emitter: EventEmitter,
          message_queue: Thread::Queue,
        ).returns(T.nilable(Listener[T.nilable(Interface::Hover)]))
      end
      def create_hover_listener(emitter, message_queue)
        Hover.new(client, emitter, message_queue)
      end

      sig { override.returns(String) }
      def name
        "Ruby LSP Rails"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruby-lsp-rails-0.2.5 lib/ruby_lsp/ruby_lsp_rails/extension.rb
ruby-lsp-rails-0.2.4 lib/ruby_lsp/ruby_lsp_rails/extension.rb
ruby-lsp-rails-0.2.3 lib/ruby_lsp/ruby_lsp_rails/extension.rb