diff --git a/docs/ADDONS_md.html b/docs/ADDONS_md.html new file mode 100644 index 0000000000..95996e8319 --- /dev/null +++ b/docs/ADDONS_md.html @@ -0,0 +1,659 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

Ruby LSP addons

+ +
+

[!WARNING] The Ruby LSP addon system is currently experimental and subject to changes in the API

+
+ +

Need help writing addons? Consider joining the ruby-lsp-addons channel in the Ruby DX Slack workspace.

+ +

Motivation and goals

+ +

Editor features that are specific to certain tools or frameworks can be incredibly powerful. Typically, language servers are aimed at providing features for a particular programming language (like Ruby!) and not specific tools. This is reasonable since not every programmer uses the same combination of tools.

+ +

Including tool specific functionality in the Ruby LSP would not scale well given the large number of tools in the ecosystem. It would also create a bottleneck for authors to push new features. Building separate tooling, on the other hand, increases fragmentation which tends to increase the effort required by users to configure their development environments.

+ +

For these reasons, the Ruby LSP ships with an addon system that authors can use to enhance the behavior of the base LSP with tool specific functionality, aimed at

+ + +

Guidelines

+ +

When building a Ruby LSP addon, refer to these guidelines to ensure a good developer experience.

+ + +

Building a Ruby LSP addon

+ +

Note: the Ruby LSP uses Sorbet. We recommend using Sorbet in addons as well, which allows authors to benefit from types declared by the Ruby LSP.

+ +

As an example, check out Ruby LSP Rails, which is a Ruby LSP addon to provide Rails related features.

+ +

Activating the addon

+ +

The Ruby LSP discovers addons based on the existence of an addon.rb file placed inside a ruby_lsp folder. For example, my_gem/lib/ruby_lsp/my_gem/addon.rb. This file must declare the addon class, which can be used to perform any necessary activation when the server starts.

+ +
# frozen_string_literal: true
+
+require "ruby_lsp/addon"
+
+module RubyLsp
+  module MyGem
+    class Addon < ::RubyLsp::Addon
+      # Performs any activation that needs to happen once when the language server is booted
+      def activate(global_state, message_queue)
+      end
+
+      # Performs any cleanup when shutting down the server, like terminating a subprocess
+      def deactivate
+      end
+
+      # Returns the name of the addon
+      def name
+        "Ruby LSP My Gem"
+      end
+    end
+  end
+end
+
+ +

Listeners

+ +

An essential component to addons are listeners. All Ruby LSP requests are listeners that handle specific node types.

+ +

Listeners work in conjunction with a Prism::Dispatcher, which is responsible for dispatching events during the parsing of Ruby code. Each event corresponds to a specific node in the Abstract Syntax Tree (AST) of the code being parsed.

+ +

Here’s a simple example of a listener:

+ +
# frozen_string_literal: true
+
+class MyListener
+  def initialize(dispatcher)
+    # Register to listen to `on_class_node_enter` events
+    dispatcher.register(self, :on_class_node_enter)
+  end
+
+  # Define the handler method for the `on_class_node_enter` event
+  def on_class_node_enter(node)
+    puts "Hello, #{node.constant_path.slice}!"
+  end
+end
+
+dispatcher = Prism::Dispatcher.new
+MyListener.new(dispatcher)
+
+parse_result = Prism.parse("class Foo; end")
+dispatcher.dispatch(parse_result.value)
+
+# Prints
+# => Hello, Foo!
+
+ +

In this example, the listener is registered to the dispatcher to listen for the :on_class_node_enter event. When a class node is encountered during the parsing of the code, a greeting message is outputted with the class name.

+ +

This approach enables all addon responses to be captured in a single round of AST visits, greatly improving performance.

+ +

Enhancing features

+ +

To enhance a request, the addon must create a listener that will collect extra results that will be automatically appended to the base language server response. Additionally, Addon has to implement a factory method that instantiates the listener. When instantiating the listener, also note that a ResponseBuilders object is passed in. This object should be used to return responses back to the Ruby LSP.

+ +

For example: to add a message on hover saying “Hello!” on top of the base hover behavior of the Ruby LSP, we can use the following listener implementation.

+ +
# frozen_string_literal: true
+
+module RubyLsp
+  module MyGem
+    class Addon < ::RubyLsp::Addon
+      def activate(global_state, message_queue)
+        @message_queue = message_queue
+        @config = SomeConfiguration.new
+      end
+
+      def deactivate
+      end
+
+      def name
+        "Ruby LSP My Gem"
+      end
+
+      def create_hover_listener(response_builder, node_context, index, dispatcher)
+        # Use the listener factory methods to instantiate listeners with parameters sent by the LSP combined with any
+        # pre-computed information in the addon. These factory methods are invoked on every request
+        Hover.new(client, response_builder, @config, dispatcher)
+      end
+    end
+
+    class Hover
+      # The Requests::Support::Common module provides some helper methods you may find helpful.
+      include Requests::Support::Common
+
+      # Listeners are initialized with the Prism::Dispatcher. This object is used by the Ruby LSP to emit the events
+      # when it finds nodes during AST analysis. Listeners must register which nodes they want to handle with the
+      # dispatcher (see below).
+      # Listeners are initialized with a `ResponseBuilders` object. The listener will push the associated content
+      # to this object, which will then build the Ruby LSP's response.
+      # Additionally, listeners are instantiated with a message_queue to push notifications (not used in this example).
+      # See "Sending notifications to the client" for more information.
+      def initialize(client, response_builder, config, dispatcher)
+        super(dispatcher)
+
+        @client = client
+        @response_builder = response_builder
+        @config = config
+
+        # Register that this listener will handle `on_constant_read_node_enter` events (i.e.: whenever a constant read
+        # is found in the code)
+        dispatcher.register(self, :on_constant_read_node_enter)
+      end
+
+      # Listeners must define methods for each event they registered with the dispatcher. In this case, we have to
+      # define `on_constant_read_node_enter` to specify what this listener should do every time we find a constant
+      def on_constant_read_node_enter(node)
+        # Certain builders are made available to listeners to build LSP responses. The classes under
+        # `RubyLsp::ResponseBuilders` are used to build responses conforming to the LSP Specification.
+        # ResponseBuilders::Hover itself also requires a content category to be specified (title, links,
+        # or documentation).
+        @response_builder.push("Hello!", category: :documentation)
+      end
+    end
+  end
+end
+
+ +

Registering formatters

+ +

Gems may also provide a formatter to be used by the Ruby LSP. To do that, the addon must create a formatter runner and register it. The formatter is used if the rubyLsp.formatter option configured by the user matches the identifier registered.

+ +
class MyFormatterRubyLspAddon < RubyLsp::Addon
+  def name
+    "My Formatter"
+  end
+
+  def activate(global_state, message_queue)
+    # The first argument is an identifier users can pick to select this formatter. To use this formatter, users must
+    # have rubyLsp.formatter configured to "my_formatter"
+    # The second argument is a class instance that implements the `FormatterRunner` interface (see below)
+    global_state.register_formatter("my_formatter", MyFormatterRunner.new)
+  end
+end
+
+# Custom formatter
+class MyFormatter
+  # If using Sorbet to develop the addon, then include this interface to make sure the class is properly implemented
+  include RubyLsp::Requests::Support::Formatter
+
+  # Use the initialize method to perform any sort of ahead of time work. For example, reading configurations for your
+  # formatter since they are unlikely to change between requests
+  def initialize
+    @config = read_config_file!
+  end
+
+  # IMPORTANT: None of the following methods should mutate the document in any way or that will lead to a corrupt state!
+
+  # Provide formatting for a given document. This method should return the formatted string for the entire document
+  def run_formatting(uri, document)
+    source = document.source
+    formatted_source = format_the_source_using_my_formatter(source)
+    formatted_source
+  end
+
+  # Provide diagnostics for the given document. This method must return an array of `RubyLsp::Interface::Diagnostic`
+  # objects
+  def run_diagnostic(uri, document)
+  end
+end
+
+ +

Sending notifications to the client

+ +

Sometimes, addons may need to send asynchronous information to the client. For example, a slow request might want to indicate progress or diagnostics may be computed in the background without blocking the language server.

+ +

For this purpose, all addons receive the message queue when activated, which is a thread queue that can receive notifications for the client. The addon should keep a reference to this message queue and pass it to listeners that are interested in using it.

+ +

Note: do not close the message queue anywhere. The Ruby LSP will handle closing the message queue when appropriate.

+ +
module RubyLsp
+  module MyGem
+    class Addon < ::RubyLsp::Addon
+      def activate(global_state, message_queue)
+        @message_queue = message_queue
+      end
+
+      def deactivate; end
+
+      def name
+        "Ruby LSP My Gem"
+      end
+
+      def create_hover_listener(response_builder, node_context, index, dispatcher)
+        MyHoverListener.new(@message_queue, response_builder, node_context, index, dispatcher)
+      end
+    end
+
+    class MyHoverListener
+      def initialize(message_queue, response_builder, node_context, index, dispatcher)
+        @message_queue = message_queue
+
+        @message_queue << Notification.new(
+          message: "$/progress",
+          params: Interface::ProgressParams.new(
+            token: "progress-token-id",
+            value: Interface::WorkDoneProgressBegin.new(kind: "begin", title: "Starting slow work!"),
+          ),
+        )
+      end
+    end
+  end
+end
+
+ +

Registering for file update events

+ +

By default, the Ruby LSP listens for changes to files ending in .rb to continuously update its index when Ruby source code is modified. If your addon uses a tool that is configured through a file (like RuboCop and its .rubocop.yml) you can register for changes to these files and react when the configuration changes.

+ +

Note: you will receive events from ruby-lsp and other addons as well, in addition to your own registered ones.

+ +
module RubyLsp
+  module MyGem
+    class Addon < ::RubyLsp::Addon
+      def activate(global_state, message_queue)
+        register_additional_file_watchers(global_state, message_queue)
+      end
+
+      def deactivate; end
+
+      def register_additional_file_watchers(global_state, message_queue)
+        # Clients are not required to implement this capability
+        return unless global_state.supports_watching_files
+
+        message_queue << Request.new(
+          id: "ruby-lsp-my-gem-file-watcher",
+          method: "client/registerCapability",
+          params: Interface::RegistrationParams.new(
+            registrations: [
+              Interface::Registration.new(
+                id: "workspace/didChangeWatchedFilesMyGem",
+                method: "workspace/didChangeWatchedFiles",
+                register_options: Interface::DidChangeWatchedFilesRegistrationOptions.new(
+                  watchers: [
+                    Interface::FileSystemWatcher.new(
+                      glob_pattern: "**/.my-config.yml",
+                      kind: Constant::WatchKind::CREATE | Constant::WatchKind::CHANGE | Constant::WatchKind::DELETE,
+                    ),
+                  ],
+                ),
+              ),
+            ],
+          ),
+        )
+      end
+
+      def workspace_did_change_watched_files(changes)
+        if changes.any? { |change| change[:uri].end_with?(".my-config.yml") }
+          # Do something to reload the config here
+        end
+      end
+    end
+  end
+end
+
+ +

Ensuring consistent documentation

+ +

The Ruby LSP exports a Rake task to help authors make sure all of their listeners are documented and include demos and examples of the feature in action. Configure the Rake task and run bundle exec rake ruby_lsp:check_docs on CI to ensure documentation is always up to date and consistent.

+ +
require "ruby_lsp/check_docs"
+
+# The first argument is the file list including all of the listeners declared by the addon
+# The second argument is the file list of GIF files with the demos of all listeners
+RubyLsp::CheckDocs.new(
+  FileList["#{__dir__}/lib/ruby_lsp/ruby_lsp_rails/**/*.rb"],
+  FileList.new("#{__dir__}/misc/**/*.gif"),
+)
+
+ +

Dependency constraints

+ +

While we figure out a good design for the addons API, breaking changes are bound to happen. To avoid having your addon accidentally break editor functionality, always restrict the dependency on the ruby-lsp gem based on minor versions (breaking changes may land on minor versions until we reach v1.0.0).

+ +
spec.add_dependency("ruby-lsp", "~> 0.6.0")
+
+ +

Testing addons

+ +

When writing unit tests for addons, it’s essential to keep in mind that code is rarely in its final state while the developer is coding. Therefore, be sure to test valid scenarios where the code is still incomplete.

+ +

For example, if you are writing a feature related to require, do not test require "library" exclusively. Consider intermediate states the user might end up while typing. Additionally, consider syntax that is uncommon, yet still valid Ruby.

+ +
# Still no argument
+require
+
+# With quotes autocompleted, but no content on the string
+require ""
+
+# Using uncommon, but valid syntax, such as invoking require directly on Kernel using parenthesis
+Kernel.require("library")
+
+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/CODE_OF_CONDUCT_md.html b/docs/CODE_OF_CONDUCT_md.html new file mode 100644 index 0000000000..9d6218d279 --- /dev/null +++ b/docs/CODE_OF_CONDUCT_md.html @@ -0,0 +1,349 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

Contributor Covenant Code of Conduct

+ +

Our Pledge

+ +

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

+ +

Our Standards

+ +

Examples of behavior that contributes to creating a positive environment include:

+ + +

Examples of unacceptable behavior by participants include:

+ + +

Our Responsibilities

+ +

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

+ +

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

+ +

Scope

+ +

This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

+ +

Enforcement

+ +

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource@shopify.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

+ +

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

+ +

Attribution

+ +

This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at www.contributor-covenant.org/version/1/4/code-of-conduct.html

+ +

For answers to common questions about this code of conduct, see www.contributor-covenant.org/faq

+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/CONTRIBUTING_md.html b/docs/CONTRIBUTING_md.html new file mode 100644 index 0000000000..6993e72574 --- /dev/null +++ b/docs/CONTRIBUTING_md.html @@ -0,0 +1,431 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

CONTRIBUTING

+ +

Testing changes

+ +

Tracing LSP requests and responses

+ +

LSP server tracing (logging) can be controlled through the ruby lsp.trace.server config key in the .vscode/settings.json config file.

+ +

Possible values are:

+ + +

Manually testing a change

+ +

There are a few options for manually testing changes to Ruby LSP:

+ +

You can test against Ruby LSP’s own code if using VS Code, and you have the ruby-lsp project open. Choose ‘Ruby LSP: Restart’ from the command menu and the VS Code extension will detect that you are working on ruby-lsp, and use the locally checked out code instead of the installed extension.

+ +

The other way is to use a separate project, and add a Gemfile entry pointing to your local checkout of ruby-lsp, e.g.:

+ +
gem "ruby-lsp", path: "../../Shopify/ruby-lsp"
+
+ +

With both approaches, there is a risk of ‘breaking’ your local development experience, so keep an eye on the Ruby LSP output panel for exceptions as your make changes.

+ +

Running the test suite

+ +

The test suite can be executed by running

+ +
# The default runner
+bin/test
+# or the spec reporter
+SPEC_REPORTER=1 bin/test
+# Warnings are turned off by default. If you wish to see warnings use
+VERBOSE=1 bin/test
+# Run a single test like this: "bin/test my_test.rb test_name_regex", e.g.
+bin/test test/requests/diagnostics_expectations_test.rb test_diagnostics__def_bad_formatting
+ +

Expectation testing

+ +

To simplify the way we run tests over different pieces of Ruby code, we use a custom expectations test framework against a set of Ruby fixtures.

+ +

All fixtures are defined under test/fixtures. By default, every request will be executed against every fixture and the test framework will assert that nothing was raised to verify if all requests succeed in processing all fixtures.

+ +

Expectations can be added on a per request and per fixture basis. For example, we can have expectations for semantic highlighting for a fixture called foo.rb, but no expectations for the same fixture for any other requests.

+ +

We define expectations as .exp files, of which there are two variants: - .exp.rb, to indicate the resulting code after an operation - .exp.json, consisting of a result, and an optional set of input params

+ +

To add a new test scenario

+
  1. +

    Add a new fixture my_fixture.rb file under test/fixtures

    +
  2. +

    For applicable requests, add expectation files related to this fixture. For example, test/expectations/semantic_highlighting/my_fixture.exp.json

    +
+ +

To add a new expectations test runner for a new request handler:

+ + +
require "test_helper"
+require_relative "support/expectations_test_runner"
+
+class MyRequestExpectationsTest < ExpectationsTestRunner
+  # The first argument is the fully qualified name of the request class
+  # The second argument is the folder name where the expectation files are
+  expectations_tests RubyLsp::Requests::MyRequest, "my_request"
+end
+
+ + +
require "test_helper"
+require_relative "support/expectations_test_runner"
+
+class MyRequestExpectationsTest < ExpectationsTestRunner
+  expectations_tests RubyLsp::Requests::MyRequest, "my_request"
+
+  def run_expectations(source)
+    # Run your request for the given source
+  end
+
+  def assert_expectations(source, expected)
+    # Invoke run_expectations and then customize how to assert the correct responses
+  end
+end
+
+ +

Debugging with VS Code

+ +

Debugging Tests

+
  1. +

    Open the test file

    +
  2. +

    Set breakpoints in the code as desired

    +
  3. +

    Click the debug button on top of test examples

    +
+ +

Live debugging

+
  1. +

    Under Run and Debug, select Run extension and click the start button (or press F5)

    +
  2. +

    The extension host window opened will be running the development version of the VS Code extension. Putting break points in the extension code will allow debugging

    +
  3. +

    If you wish to debug the server process, go under Run and Debug in the extension host window, select Attach to existing server and click the start button (or press F5)

    +
  4. +

    Add breakpoints and perform the actions necessary for triggering the requests you wish to debug

    +
+ +

Screen Captures

+ +

We include animated screen captures to illustrate Ruby LSP features. For recording new captures, use LICEcap. For consistency, install the Ruby LSP profile included with this repo. Configure LICEcap to record at 24fps, at 640 x 480. If appropriate, you can adjust the height of the capture, but keep the width at 640.

+ +

Spell Checking

+ +

VS Code users will be prompted to enable the Code Spell Checker extension. By default this will be enabled for all workspaces, but you can choose to selectively enable or disable it per workspace.

+ +

If you introduce a word which the spell checker does not recognize, you can add it to the cspell.json configuration alongside your PR.

+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/DESIGN_AND_ROADMAP_md.html b/docs/DESIGN_AND_ROADMAP_md.html new file mode 100644 index 0000000000..5d2b8e7b4b --- /dev/null +++ b/docs/DESIGN_AND_ROADMAP_md.html @@ -0,0 +1,483 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

Ruby LSP design and roadmap

+ + +

Design principles

+ +

These are the mental models used to make decisions in respect to the Ruby LSP.

+ +

Favoring common development setups

+ +

There are infinite ways in which one can configure their development environment. Not only is there a vast combination of tools that one can use (such as shells, plugins, version managers, operating systems and so on), but many tools allow for customization to alter their default behaviors.

+ +

While there is no “right way” to use Ruby and configure the development environment, we have to draw a line somewhere in terms of what the Ruby LSP can support. Trying to account for every different setup and customization diverts efforts from improving the experience for the larger audience and increases the long term maintenance costs.

+ +

Example: the Ruby on Rails Community survey reports that only 2% of developers are not using a version manager to install and configure their Ruby versions. While the popularity of each version manager varies, it’s reasonable to consider that using a version manager is the common way of working with Ruby.

+ +

Based on this, we will always: - Favor more common development setups and ways of working with Ruby - Favor defaults and conventions over customization - Aim to deliver a zero-configuration experience for common setups - Provide flexibility where possible as long as it does not compromise the default experience

+ +

Stability and performance over features

+ +

Adding a more complete set of editor features or improving correctness is always desired. However, we will always prioritize the stability and the performance of Ruby LSP over adding new features.

+ +

Even if a feature is useful or if a modification improves the correctness of existing functionality, if it degrades performance and negatively impacts the responsiveness of the editor it may actually result in a worse developer experience.

+ +

Example: the Ruby syntax for constant references is ambiguous. It’s not possible to tell if a reference to Foo is referring to a class, a module or a constant just based on the syntax alone. Therefore, we started the semantic highlighting feature considering all constant references as namespaces, which is the token type available that more closely represents the three possibilities.

+ +

To improve highlighting correctness, the Ruby LSP must resolve the references to figure out to which declaration they point to, so that we can assign the correct token type (class, namespace or constant). However, semantic highlighting is executed on every keypress and resolving constant references is an expensive operation - which could lead to lag in the editor. We may decide to not correct this behavior intentionally in favor of maintaining responsiveness.

+ +

Accuracy, correctness and type checking

+ +

The Ruby LSP does not ship with a type system. It performs static analysis with some level of type checking, but falls back to built-in heuristics for scenarios where type annotations would be necessary.

+ +

That means that it will provide accurate results where possible and fallback to simpler behavior in situations where a complete type system would be needed, delegating decisions to the user. Additionally, performance over features also governs accuracy. We may prefer showing a list of options to let the user decide instead of increasing the complexity of an implementation or degrading the overall LSP performance.

+ +

If you require more accuracy in your editor, consider adopting a type system and type checker, such as Sorbet or Steep.

+ +

This applies to multiple language server features such as go to definition, hover, completion and automated refactors. Consider the following examples:

+ +
+

[!NOTE] not all of the examples below are supported at the moment and this is not an exhaustive list. Please check the long term roadmap to see what’s planned

+
+ +
# Cases where we can provide a satisfactory experience without a type system
+
+## Literals
+"".upcase
+1.to_s
+{}.merge!({ a: 1 })
+[].push(1)
+
+## Scenarios where can assume the receiver type
+class Foo
+  def bar; end
+
+  def baz
+    bar # method invoked directly on self
+  end
+end
+
+## Singleton methods with an explicit receiver
+Foo.some_singleton_method
+
+## Constant references
+Foo::Bar
+
+# Cases where a type system would be required and we fallback to heuristics to provide features
+
+## Meta-programming
+Foo.define_method("some#{interpolation}") do |arg|
+end
+
+## Methods invoked on the return values of other methods
+## Not possible to provide accurate features without knowing the return type
+## of invoke_foo
+var = invoke_foo
+var.upcase # <- not accurate
+
+## Same thing for chained method calls
+## To know where the definition of `baz` is, we need to know the return type
+## of `foo` and `bar`
+foo.bar.baz
+
+ +

Example: when using refactoring features you may be prompted to confirm a code modification as it could be incorrect. Or when trying to go to the definition of a method, you may be prompted with all declarations that match the method call’s name and arguments instead of jumping to the correct one directly.

+ +

As another fallback mechanism, we want to explore using variable or method call names as a type hint to assist accuracy (not yet implemented). For example

+ +
# Typically, a type annotation for `find` would be necessary to discover
+# that the type of the `user` variable is `User`, allowing the LSP to
+# find the declaration of `do_something`.
+#
+# If we consider the variable name as a snake_case version of its type
+# we may be able to improve accuracy and deliver a nicer experience even
+# without the adoption of a type system
+user = User.find(1)
+user.do_something
+
+ +

Extensibility

+ +

In an effort to reduce tooling fragmentation in the Ruby ecosystem, we are experimenting with an addon system for the Ruby LSP server. This allows other gems to enhance the Ruby LSP’s functionality without having to write a complete language server of their own, avoiding handling text synchronization, implementing features that depend exclusively on syntax (such as folding range) or caring about the editor’s encoding.

+ +

We believe that a less fragmented tooling ecosystem leads to a better user experience that requires less configuration and consolidates efforts from the community.

+ +

Our goal is to allow the Ruby LSP to connect to different formatters, linters, type checkers or even extract runtime information from running applications like Rails servers. You can learn more in the addons documentation.

+ +

Relying on Bundler

+ +

Understanding the dependencies of projects where the Ruby LSP is being used on allows it to provide a zero configuration experience to users. It can automatically figure out which gems have to be indexed to provide features like go to definition or completion. That also allows it to connect to the formatter/linter being used, without asking for any configuration.

+ +

To make that work, the Ruby LSP relies on Bundler, Ruby’s official dependency manager. This decision allows the LSP to easily get information about dependencies, but it also means that it is subject to how Bundler works.

+ +

Example: gems need to be installed on the Ruby version used by the project for the Ruby LSP to find it (bundle install needs to be satisfied). It needs to be the same Ruby version because otherwise Bundler might resolve to a different set of versions for those dependencies, which could result in failure to install due to version constraints or the LSP indexing the incorrect version of a gem (which could lead to surfacing constants that do not exist in the version used by the project).

+ +

Example: if we tried to run the Ruby LSP without the context of the project’s bundle, then we would not be able to require gems from it. Bundler only adds dependencies that are part of the current bundle to the load path. Ignoring the project’s bundle would make the LSP unable to require tools like RuboCop and its extensions.

+ +

Based on this, we will always: - Rely on Bundler to provide dependency information - Focus our efforts on Bundler integrations and helping improve Bundler itself - Only support other dependency management tools if it does not compromise the default experience through Bundler

+ +

Long term roadmap

+ +

The goal of this roadmap is to bring visibility into what we have planned for the Ruby LSP. This is not an exhaustive task list, but rather large milestones we wish to achieve.

+ +

Please note that there are no guarantees about the order in which entries will be implemented or if they will be implemented at all given that we may uncover blockers along the way.

+ +

Interested in contributing? Check out the issues tagged with help-wanted or good-first-issue.

+ +
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/EDITORS_md.html b/docs/EDITORS_md.html new file mode 100644 index 0000000000..f858195066 --- /dev/null +++ b/docs/EDITORS_md.html @@ -0,0 +1,472 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

Editors

+ +

This file contains community driven instructions on how to set up the Ruby LSP in editors other than VS Code. For VS Code, use the official Ruby LSP extension.

+ +
+

[!NOTE] Some Ruby LSP features may be unavailable or limited due to incomplete implementations of the Language Server Protocol, such as dynamic feature registration, or file watching.

+
+ +

If you need to select particular features to enable or disable, see {vscode/package.json} for the full list.

+ + +

Emacs Eglot

+ +

Eglot runs solargraph server by default. To set it up with ruby-lsp you need to put that in your init file:

+ +
(with-eval-after-load 'eglot
+ (add-to-list 'eglot-server-programs '((ruby-mode ruby-ts-mode) "ruby-lsp")))
+ +

When you run eglot command it will run ruby-lsp process for you.

+ +

Neovim

+ +

Note: Ensure that you are using Neovim 0.10 or newer.

+ +

nvim-lspconfig

+ +

The nvim-lspconfig plugin has support for Ruby LSP.

+ +

Mason

+ +

You can use mason.nvim, along with mason-lspconfig.nvim:

+ +
local capabilities = vim.lsp.protocol.make_client_capabilities()
+local mason_lspconfig = require("mason-lspconfig")
+local servers = {
+  ruby_lsp = {},
+}
+
+mason_lspconfig.setup {
+  ensure_installed = vim.tbl_keys(servers),
+}
+
+mason_lspconfig.setup_handlers {
+  function(server_name)
+    require("lspconfig")[server_name].setup {
+      capabilities = capabilities,
+      on_attach = on_attach,
+      settings = servers[server_name],
+      filetypes = (servers[server_name] or {}).filetypes,
+    }
+  end
+}
+ +

Additional setup (optional)

+ +

rubyLsp/workspace/dependencies is a custom method currently supported only in the VS Code plugin. The following snippet adds ShowRubyDeps command to show dependencies in the quickfix list.

+ +
local function add_ruby_deps_command(client, bufnr)
+  vim.api.nvim_buf_create_user_command(bufnr, "ShowRubyDeps", function(opts)
+    local params = vim.lsp.util.make_text_document_params()
+    local showAll = opts.args == "all"
+
+    client.request("rubyLsp/workspace/dependencies", params, function(error, result)
+      if error then
+        print("Error showing deps: " .. error)
+        return
+      end
+
+      local qf_list = {}
+      for _, item in ipairs(result) do
+        if showAll or item.dependency then
+          table.insert(qf_list, {
+            text = string.format("%s (%s) - %s", item.name, item.version, item.dependency),
+            filename = item.path
+          })
+        end
+      end
+
+      vim.fn.setqflist(qf_list)
+      vim.cmd('copen')
+    end, bufnr)
+  end,
+  {nargs = "?", complete = function() return {"all"} end})
+end
+
+require("lspconfig").ruby_lsp.setup({
+  on_attach = function(client, buffer)
+    add_ruby_deps_command(client, buffer)
+  end,
+})
+ +

LazyVim LSP

+ +

For LazyVim, you can add the ruby-lsp by creating a file in your plugins folder (~/.config/nvim/lua/plugins/ruby_lsp.lua) and adding the following:

+ +
-- ~/.config/nvim/lua/plugins/ruby_lsp.lua
+
+return {
+  {
+    "neovim/nvim-lspconfig",
+    ---@class PluginLspOpts
+    opts = {
+      ---@type lspconfig.options
+      servers = {
+        -- disable solargraph from auto running when you open ruby files
+        solargraph = {
+          autostart = false
+        },
+        -- ruby_lsp will be automatically installed with mason and loaded with lspconfig
+        ruby_lsp = {},
+      },
+    },
+  },
+}
+ +

Sublime Text LSP

+ +

To configure the Ruby LSP using LSP for Sublime Text, add the following configuration to your LSP client configuration:

+ +
"clients": {
+  "ruby-lsp": {
+    "enabled": true,
+    "command": [
+      "ruby-lsp"
+    ],
+    "selector": "source.ruby",
+    "initializationOptions": {
+      "enabledFeatures": {
+        "diagnostics": false
+      },
+      "experimentalFeaturesEnabled": true
+    }
+  }
+}
+ +

Restart LSP or Sublime Text and ruby-lsp will automatically activate when opening ruby files.

+ +

Zed

+ +

Setting up Ruby LSP

+ +

Zed has added support for Ruby LSP as a alternative language server in version v0.0.2 of the Ruby extension.

+ +

See github.com/zed-industries/zed/issues/4834 for discussion of the limitations.

+ +

RubyMine

+ +

You can use the Ruby LSP with RubyMine (or IntelliJ IDEA Ultimate) through the following plugin.

+ +

Note that there might be overlapping functionality when using it with RubyMine, given that the IDE provides similar features as the ones coming from the Ruby LSP.

+ +

[plugins.jetbrains.com/plugin/24413-ruby-lsp](Ruby LSP plugin)

+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/LICENSE.txt b/docs/LICENSE.txt new file mode 100644 index 0000000000..c3ef6620b6 --- /dev/null +++ b/docs/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022-present, Shopify Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/docs/README_md.html b/docs/README_md.html new file mode 100644 index 0000000000..33cef9879a --- /dev/null +++ b/docs/README_md.html @@ -0,0 +1,438 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +

+ Ruby LSP logo +

+

+ +

Ruby LSP

+ +

The Ruby LSP is an implementation of the language server protocol for Ruby, used to improve rich features in editors. It is a part of a wider goal to provide a state-of-the-art experience to Ruby developers using modern standards for cross-editor features, documentation and debugging.

+ +

Want to discuss Ruby developer experience? Consider joining the public Ruby DX Slack workspace.

+ +

Features

+ +

+ +

The Ruby LSP features include

+ + +

Adding method support for definition, completion, hover and workspace symbol is partially supported, but not yet complete. Follow progress in github.com/Shopify/ruby-lsp/issues/899

+ +

See complete information about features here.

+ +

If you experience issues, please see the troubleshooting guide.

+ +

Usage

+ +

With VS Code

+ +

If using VS Code, all you have to do is install the Ruby LSP extension to get the extra features in the editor. Do not install the ruby-lsp gem manually.

+ +

For more information on using and configuring the extension, see vscode/README.md.

+ +

With other editors

+ +

See editors for community instructions on setting up the Ruby LSP, which current includes Emacs, Neovim, Sublime Text, and Zed.

+ +

The gem can be installed by doing

+ +
gem install ruby-lsp
+
+ +

and the language server can be launched running ruby-lsp (without bundle exec in order to properly hook into your project’s dependencies).

+ +

Documentation

+ +

See the documentation for more in-depth details about the supported features.

+ +

For creating rich themes for Ruby using the semantic highlighting information, see the semantic highlighting documentation.

+ +

Configuring code indexing

+ +

By default, the Ruby LSP indexes all Ruby files defined in the current project and all of its dependencies, including default gems, except for

+ + +

By creating a .index.yml file, these configurations can be overridden and tuned. Note that indexing dependent behavior, such as definition, hover, completion or workspace symbol will be impacted by the configurations placed here.

+ +
# Exclude files based on a given pattern. Often used to exclude test files or fixtures
+excluded_patterns:
+  - "**/spec/**/*.rb"
+
+# Include files based on a given pattern. Can be used to index Ruby files that use different extensions
+included_patterns:
+  - "**/bin/*"
+
+# Exclude gems by name. If a gem is never referenced in the project's code and is only used as a tool, excluding it will
+# speed up indexing and reduce the amount of results in features like definition or completion
+excluded_gems:
+  - rubocop
+  - pathname
+
+# Include gems by name. Normally used to include development gems that are excluded by default
+included_gems:
+  - prism
+ +

Addons

+ +

The Ruby LSP provides an addon system that allows other gems to enhance the base functionality with more editor features. This is the mechanism that powers addons like

+ + +

Other community driven addons can be found in rubygems by searching for the ruby-lsp prefix.

+ +

For instructions on how to create addons, see the addons documentation.

+ +

Learn More

+ + +

Contributing

+ +

Bug reports and pull requests are welcome on GitHub at github.com/Shopify/ruby-lsp. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

+ +

If you wish to contribute, see CONTRIBUTING for development instructions and check out our pinned roadmap issue for a list of tasks to get started.

+ +

License

+ +

The gem is available as open source under the terms of the MIT License.

+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RuboCop.html b/docs/RuboCop.html new file mode 100644 index 0000000000..b63b869a71 --- /dev/null +++ b/docs/RuboCop.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RuboCop

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RuboCop/Cop.html b/docs/RuboCop/Cop.html new file mode 100644 index 0000000000..086aaad190 --- /dev/null +++ b/docs/RuboCop/Cop.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RuboCop::Cop

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RuboCop/Cop/RubyLsp.html b/docs/RuboCop/Cop/RubyLsp.html new file mode 100644 index 0000000000..e08745ff57 --- /dev/null +++ b/docs/RuboCop/Cop/RubyLsp.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RuboCop::Cop::RubyLsp

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RuboCop/Cop/RubyLsp/UseLanguageServerAliases.html b/docs/RuboCop/Cop/RubyLsp/UseLanguageServerAliases.html new file mode 100644 index 0000000000..ca0edd71e2 --- /dev/null +++ b/docs/RuboCop/Cop/RubyLsp/UseLanguageServerAliases.html @@ -0,0 +1,383 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RuboCop::Cop::RubyLsp::UseLanguageServerAliases

+
+

Prefer using Interface, Transport and Constant aliases within the RubyLsp module, without having to prefix with LanguageServer::Protocol

+ +

@example # bad module RubyLsp class FoldingRanges sig { override.returns(T.all(T::Array, Object)) } def run; end end

+ +

# good module RubyLsp class FoldingRanges sig { override.returns(T.all(T::Array, Object)) } def run; end end end

+
+ +
+ + +
+

Constants

+ +
+
>ALIASED_CONSTANTS
+
+
>MSG
+
+
+
+ + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_new_investigation() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RuboCop/Cop/RubyLsp/UseRegisterWithHandlerMethod.html b/docs/RuboCop/Cop/RubyLsp/UseRegisterWithHandlerMethod.html new file mode 100644 index 0000000000..c14aa77f13 --- /dev/null +++ b/docs/RuboCop/Cop/RubyLsp/UseRegisterWithHandlerMethod.html @@ -0,0 +1,403 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RuboCop::Cop::RubyLsp::UseRegisterWithHandlerMethod

+
+

Avoid using register without handler method, or handler without register.

+ +

@example

+ +

Register without handler method.

+ +

bad

+ +

class MyListener def initialize(dispatcher) dispatcher.register( self, :on_string_node_enter, ) end end

+ +

good

+ +

class MyListener def initialize(dispatcher) dispatcher.register( self, :on_string_node_enter, ) end

+ +

def on_string_node_enter(node) end end

+ +

@example

+ +

Handler method without register.

+ +

bad

+ +

class MyListener def initialize(dispatcher) dispatcher.register( self, ) end

+ +

def on_string_node_enter(node) end end

+ +

good

+ +

class MyListener def initialize(dispatcher) dispatcher.register( self, :on_string_node_enter, ) end

+ +

def on_string_node_enter(node) end end

+
+ +
+ + +
+

Constants

+ +
+
>MSG_MISSING_HANDLER
+
+
>MSG_MISSING_LISTENER
+
+
+
+ + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_new_investigation() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer.html b/docs/RubyIndexer.html new file mode 100644 index 0000000000..79629f548b --- /dev/null +++ b/docs/RubyIndexer.html @@ -0,0 +1,345 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyIndexer

+
+

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: true

+ +

typed: strict

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ configuration (attr_reader) +

+ +
+ +
+
+ +
+ + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/ClassesAndModulesTest.html b/docs/RubyIndexer/ClassesAndModulesTest.html new file mode 100644 index 0000000000..519c98a362 --- /dev/null +++ b/docs/RubyIndexer/ClassesAndModulesTest.html @@ -0,0 +1,1267 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::ClassesAndModulesTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ test_class_with_statements() + + +

+ + + + + +
+ + +
+
+
+

+ test_colon_colon_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_colon_colon_class_inside_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_colon_colon_module() + + +

+ + + + + +
+ + +
+
+
+

+ test_comments_can_be_attached_to_a_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_comments_can_be_attached_to_a_namespaced_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_comments_can_be_attached_to_a_reopened_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_comments_removes_the_leading_pound_and_space() + + +

+ + + + + +
+ + +
+
+
+

+ test_conditional_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_conditional_module() + + +

+ + + + + +
+ + +
+
+
+

+ test_deleting_from_index_based_on_file_path() + + +

+ + + + + +
+ + +
+
+
+

+ test_dynamically_namespaced_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_dynamically_namespaced_class_doesnt_affect_other_classes() + + +

+ + + + + +
+ + +
+
+
+

+ test_dynamically_namespaced_module() + + +

+ + + + + +
+ + +
+
+
+

+ test_dynamically_namespaced_module_doesnt_affect_other_modules() + + +

+ + + + + +
+ + +
+
+
+

+ test_empty_statements_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_empty_statements_module() + + +

+ + + + + +
+ + +
+
+
+

+ test_keeping_track_of_extended_modules() + + +

+ + + + + +
+ + +
+
+
+

+ test_keeping_track_of_included_modules() + + +

+ + + + + +
+ + +
+
+
+

+ test_keeping_track_of_prepended_modules() + + +

+ + + + + +
+ + +
+
+
+

+ test_keeping_track_of_super_classes() + + +

+ + + + + +
+ + +
+
+
+

+ test_module_with_statements() + + +

+ + + + + +
+ + +
+
+
+

+ test_namespaced_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_namespaced_module() + + +

+ + + + + +
+ + +
+
+
+

+ test_nested_modules_and_classes() + + +

+ + + + + +
+ + +
+
+
+

+ test_private_class_and_module_indexing() + + +

+ + + + + +
+ + +
+
+
+

+ test_skips_comments_containing_invalid_encodings() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Configuration.html b/docs/RubyIndexer/Configuration.html new file mode 100644 index 0000000000..fc693dff4e --- /dev/null +++ b/docs/RubyIndexer/Configuration.html @@ -0,0 +1,559 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Configuration

+
+ +
+ + +
+

Constants

+ +
+
>CONFIGURATION_SCHEMA
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ apply_config(config) + + +

+ + + + + +
+ + +
+
+
+

+ indexables() + + +

+ + + + + +
+ + +
+
+
+

+ magic_comment_regex() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/ConfigurationTest.html b/docs/RubyIndexer/ConfigurationTest.html new file mode 100644 index 0000000000..98a14a1cab --- /dev/null +++ b/docs/RubyIndexer/ConfigurationTest.html @@ -0,0 +1,672 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::ConfigurationTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ setup() + + +

+ + + + + +
+ + +
+
+
+

+ test_configuration_raises_for_unknown_keys() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_avoids_duplicates_if_bundle_path_is_inside_project() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_does_not_include_default_gem_path_when_in_bundle() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_does_not_include_gems_own_installed_files() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_does_not_include_non_ruby_files_inside_rubylibdir() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_have_expanded_full_paths() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_includes_default_gems() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_includes_project_files() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexables_only_includes_gem_require_paths() + + +

+ + + + + +
+ + +
+
+
+

+ test_load_configuration_executes_configure_block() + + +

+ + + + + +
+ + +
+
+
+

+ test_magic_comments_regex() + + +

+ + + + + +
+ + +
+
+
+

+ test_paths_are_unique() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/ConstantTest.html b/docs/RubyIndexer/ConstantTest.html new file mode 100644 index 0000000000..1b43d60710 --- /dev/null +++ b/docs/RubyIndexer/ConstantTest.html @@ -0,0 +1,990 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::ConstantTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ test_aliasing_namespaces() + + +

+ + + + + +
+ + +
+
+
+

+ test_comments_for_constants() + + +

+ + + + + +
+ + +
+
+
+

+ test_constant_or_writes() + + +

+ + + + + +
+ + +
+
+
+

+ test_constant_path_or_writes() + + +

+ + + + + +
+ + +
+
+
+

+ test_constant_path_writes() + + +

+ + + + + +
+ + +
+
+
+

+ test_constant_writes() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexing_constant_aliases() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexing_constant_targets() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexing_constant_targets_with_splats() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexing_destructuring_an_array() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexing_or_and_operator_nodes() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexing_same_line_constant_aliases() + + +

+ + + + + +
+ + +
+
+
+

+ test_marking_constants_as_private_reopening_namespaces() + + +

+ + + + + +
+ + +
+
+
+

+ test_marking_constants_as_private_with_receiver() + + +

+ + + + + +
+ + +
+
+
+

+ test_private_constant_indexing() + + +

+ + + + + +
+ + +
+
+
+

+ test_variable_path_constants_are_ignored() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/DeclarationListener.html b/docs/RubyIndexer/DeclarationListener.html new file mode 100644 index 0000000000..300257b72d --- /dev/null +++ b/docs/RubyIndexer/DeclarationListener.html @@ -0,0 +1,1087 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::DeclarationListener

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(index, dispatcher, parse_result, file_path) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_alias_method_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_multi_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry.html b/docs/RubyIndexer/Entry.html new file mode 100644 index 0000000000..c0d62bbaf1 --- /dev/null +++ b/docs/RubyIndexer/Entry.html @@ -0,0 +1,502 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ comments (attr_reader) +

+ +
+ +
+
+ +
+

+ file_path (attr_reader) +

+ +
+ +
+
+ +
+

+ location (attr_reader) +

+ +
+ +
+
+ +
+

+ name (attr_reader) +

+ +
+ +
+
+ +
+

+ visibility (attr_accessor) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(name, file_path, location, comments) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ file_name() + + +

+ + + + + +
+ + +
+
+
+

+ private?() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Accessor.html b/docs/RubyIndexer/Entry/Accessor.html new file mode 100644 index 0000000000..b7372efc48 --- /dev/null +++ b/docs/RubyIndexer/Entry/Accessor.html @@ -0,0 +1,340 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Accessor

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ parameters() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Alias.html b/docs/RubyIndexer/Entry/Alias.html new file mode 100644 index 0000000000..6185da26a5 --- /dev/null +++ b/docs/RubyIndexer/Entry/Alias.html @@ -0,0 +1,375 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Alias

+
+

Alias represents a resolved alias, which points to an existing constant target

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ target (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(target, unresolved_alias) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::new +
+ + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/BlockParameter.html b/docs/RubyIndexer/Entry/BlockParameter.html new file mode 100644 index 0000000000..ac032928e6 --- /dev/null +++ b/docs/RubyIndexer/Entry/BlockParameter.html @@ -0,0 +1,360 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::BlockParameter

+
+

A block method parameter, e.g. def foo(&block)

+
+ +
+ + +
+

Constants

+ +
+
>DEFAULT_NAME
+
+
+
+ + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ decorated_name() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Class.html b/docs/RubyIndexer/Entry/Class.html new file mode 100644 index 0000000000..69718b59b7 --- /dev/null +++ b/docs/RubyIndexer/Entry/Class.html @@ -0,0 +1,409 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Class

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ parent_class (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(nesting, file_path, location, comments, parent_class) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::Namespace::new +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ ancestor_hash() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Constant.html b/docs/RubyIndexer/Entry/Constant.html new file mode 100644 index 0000000000..d74469c26d --- /dev/null +++ b/docs/RubyIndexer/Entry/Constant.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Constant

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Extend.html b/docs/RubyIndexer/Entry/Extend.html new file mode 100644 index 0000000000..a7e1f9a2ae --- /dev/null +++ b/docs/RubyIndexer/Entry/Extend.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Extend

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Include.html b/docs/RubyIndexer/Entry/Include.html new file mode 100644 index 0000000000..55060eb9a5 --- /dev/null +++ b/docs/RubyIndexer/Entry/Include.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Include

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/InstanceMethod.html b/docs/RubyIndexer/Entry/InstanceMethod.html new file mode 100644 index 0000000000..9a7c594829 --- /dev/null +++ b/docs/RubyIndexer/Entry/InstanceMethod.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::InstanceMethod

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/InstanceVariable.html b/docs/RubyIndexer/Entry/InstanceVariable.html new file mode 100644 index 0000000000..1013090506 --- /dev/null +++ b/docs/RubyIndexer/Entry/InstanceVariable.html @@ -0,0 +1,373 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::InstanceVariable

+
+

Represents an instance variable e.g.: @a = 1

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ owner (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(name, file_path, location, comments, owner) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::new +
+ + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/KeywordParameter.html b/docs/RubyIndexer/Entry/KeywordParameter.html new file mode 100644 index 0000000000..395c29d66f --- /dev/null +++ b/docs/RubyIndexer/Entry/KeywordParameter.html @@ -0,0 +1,340 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::KeywordParameter

+
+

An required keyword method parameter, e.g. def foo(a:)

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ decorated_name() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/KeywordRestParameter.html b/docs/RubyIndexer/Entry/KeywordRestParameter.html new file mode 100644 index 0000000000..42b3eae19d --- /dev/null +++ b/docs/RubyIndexer/Entry/KeywordRestParameter.html @@ -0,0 +1,360 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::KeywordRestParameter

+
+

A keyword rest method parameter, e.g. def foo(**a)

+
+ +
+ + +
+

Constants

+ +
+
>DEFAULT_NAME
+
+
+
+ + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ decorated_name() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Member.html b/docs/RubyIndexer/Entry/Member.html new file mode 100644 index 0000000000..cac13f4d65 --- /dev/null +++ b/docs/RubyIndexer/Entry/Member.html @@ -0,0 +1,407 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Member

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ owner (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(name, file_path, location, comments, visibility, owner) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::new +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ parameters() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Method.html b/docs/RubyIndexer/Entry/Method.html new file mode 100644 index 0000000000..e9043a148e --- /dev/null +++ b/docs/RubyIndexer/Entry/Method.html @@ -0,0 +1,372 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Method

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ parameters (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(name, file_path, location, comments, parameters_node, visibility, owner) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::Member::new +
+ + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Module.html b/docs/RubyIndexer/Entry/Module.html new file mode 100644 index 0000000000..e46f0d71d5 --- /dev/null +++ b/docs/RubyIndexer/Entry/Module.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Module

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/ModuleOperation.html b/docs/RubyIndexer/Entry/ModuleOperation.html new file mode 100644 index 0000000000..9735e7f3e2 --- /dev/null +++ b/docs/RubyIndexer/Entry/ModuleOperation.html @@ -0,0 +1,366 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::ModuleOperation

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ module_name (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(module_name) + + +

+ + + + + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Namespace.html b/docs/RubyIndexer/Entry/Namespace.html new file mode 100644 index 0000000000..17529623b2 --- /dev/null +++ b/docs/RubyIndexer/Entry/Namespace.html @@ -0,0 +1,455 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Namespace

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ nesting (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(nesting, file_path, location, comments) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::new +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ ancestor_hash() + + +

+ + + + + +
+ + +
+
+
+

+ mixin_operation_module_names() + + +

+ + + + + +
+ + +
+
+
+

+ mixin_operations() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/OptionalKeywordParameter.html b/docs/RubyIndexer/Entry/OptionalKeywordParameter.html new file mode 100644 index 0000000000..fc036e59eb --- /dev/null +++ b/docs/RubyIndexer/Entry/OptionalKeywordParameter.html @@ -0,0 +1,340 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::OptionalKeywordParameter

+
+

An optional keyword method parameter, e.g. def foo(a: 123)

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ decorated_name() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/OptionalParameter.html b/docs/RubyIndexer/Entry/OptionalParameter.html new file mode 100644 index 0000000000..2015bffc9e --- /dev/null +++ b/docs/RubyIndexer/Entry/OptionalParameter.html @@ -0,0 +1,303 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::OptionalParameter

+
+

An optional method parameter, e.g. def foo(a = 123)

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Parameter.html b/docs/RubyIndexer/Entry/Parameter.html new file mode 100644 index 0000000000..3673691bc3 --- /dev/null +++ b/docs/RubyIndexer/Entry/Parameter.html @@ -0,0 +1,381 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Parameter

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ decorated_name (attr_reader) +

+ +
+ +
+
+ +
+

+ name (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(name:) + + +

+ + + + + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Prepend.html b/docs/RubyIndexer/Entry/Prepend.html new file mode 100644 index 0000000000..bf70fd7d9d --- /dev/null +++ b/docs/RubyIndexer/Entry/Prepend.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Prepend

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/RequiredParameter.html b/docs/RubyIndexer/Entry/RequiredParameter.html new file mode 100644 index 0000000000..a4b99a0fb8 --- /dev/null +++ b/docs/RubyIndexer/Entry/RequiredParameter.html @@ -0,0 +1,303 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::RequiredParameter

+
+

A required method parameter, e.g. def foo(a)

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/RestParameter.html b/docs/RubyIndexer/Entry/RestParameter.html new file mode 100644 index 0000000000..0874d6deea --- /dev/null +++ b/docs/RubyIndexer/Entry/RestParameter.html @@ -0,0 +1,360 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::RestParameter

+
+

A rest method parameter, e.g. def foo(*a)

+
+ +
+ + +
+

Constants

+ +
+
>DEFAULT_NAME
+
+
+
+ + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ decorated_name() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/SingletonMethod.html b/docs/RubyIndexer/Entry/SingletonMethod.html new file mode 100644 index 0000000000..deaa363ef1 --- /dev/null +++ b/docs/RubyIndexer/Entry/SingletonMethod.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::SingletonMethod

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/UnresolvedAlias.html b/docs/RubyIndexer/Entry/UnresolvedAlias.html new file mode 100644 index 0000000000..f7c69388ad --- /dev/null +++ b/docs/RubyIndexer/Entry/UnresolvedAlias.html @@ -0,0 +1,395 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::UnresolvedAlias

+
+

An UnresolvedAlias points to a constant alias with a right hand side that has not yet been resolved. For example, if we find

+ +
CONST = Foo
+
+ +

Before we have discovered Foo, there’s no way to eagerly resolve this alias to the correct target constant. All aliases are inserted as UnresolvedAlias in the index first and then we lazily resolve them to the correct target in [Index#resolve]. If the right hand side contains a constant that doesn’t exist, then it’s not possible to resolve the alias and it will remain an UnresolvedAlias until the right hand side constant exists

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ nesting (attr_reader) +

+ +
+ +
+
+ +
+

+ target (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(target, nesting, name, file_path, location, comments) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::new +
+ + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/UnresolvedMethodAlias.html b/docs/RubyIndexer/Entry/UnresolvedMethodAlias.html new file mode 100644 index 0000000000..f84ba768c0 --- /dev/null +++ b/docs/RubyIndexer/Entry/UnresolvedMethodAlias.html @@ -0,0 +1,404 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::UnresolvedMethodAlias

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ new_name (attr_reader) +

+ +
+ +
+
+ +
+

+ old_name (attr_reader) +

+ +
+ +
+
+ +
+

+ owner (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(new_name, old_name, owner, file_path, location, comments) + + +

+ + + +
+ Calls superclass method + RubyIndexer::Entry::new +
+ + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Entry/Visibility.html b/docs/RubyIndexer/Entry/Visibility.html new file mode 100644 index 0000000000..7ef188cc35 --- /dev/null +++ b/docs/RubyIndexer/Entry/Visibility.html @@ -0,0 +1,335 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Entry::Visibility

+
+ +
+ + +
+

Constants

+ +
+
>PRIVATE
+
+
>PROTECTED
+
+
>PUBLIC
+
+
+
+ + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Index.html b/docs/RubyIndexer/Index.html new file mode 100644 index 0000000000..944543a3b0 --- /dev/null +++ b/docs/RubyIndexer/Index.html @@ -0,0 +1,1016 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Index

+
+ +
+ + +
+

Constants

+ +
+
>ENTRY_SIMILARITY_THRESHOLD
+

The minimum Jaro-Winkler similarity score for an entry to be considered a match for a given fuzzy search query

+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ <<(entry) + + +

+ + + + + +
+ + +
+
+
+

+ [](fully_qualified_name) + + +

+ + + + + +
+ + +
+
+
+

+ delete(indexable) + + +

+ + + + + +
+ + +
+
+
+

+ follow_aliased_namespace(name, seen_names = []) + + +

+ + + + + +
+ + +
+
+
+

+ fuzzy_search(query) + + +

+ + + + + +
+ + +
+
+
+

+ handle_change(indexable) + + +

+ + + + + +
+ + +
+
+
+

+ index_all(indexable_paths: RubyIndexer.configuration.indexables, &block) + + +

+ + + + + +
+ + +
+
+
+

+ index_single(indexable_path, source = nil) + + +

+ + + + + +
+ + +
+
+
+

+ instance_variable_completion_candidates(name, owner_name) + + +

+ + + + + +
+ + +
+
+
+

+ linearized_ancestors_of(fully_qualified_name) + + +

+ + + + + +
+ + +
+
+
+

+ method_completion_candidates(name, receiver_name) + + +

+ + + + + +
+ + +
+
+
+

+ prefix_search(query, nesting = nil) + + +

+ + + + + +
+ + +
+
+
+

+ resolve(name, nesting, seen_names = []) + + +

+ + + + + +
+ + +
+
+
+

+ resolve_instance_variable(variable_name, owner_name) + + +

+ + + + + +
+ + +
+
+
+

+ resolve_method(method_name, receiver_name) + + +

+ + + + + +
+ + +
+
+
+

+ search_require_paths(query) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Index/NonExistingNamespaceError.html b/docs/RubyIndexer/Index/NonExistingNamespaceError.html new file mode 100644 index 0000000000..ab3e656799 --- /dev/null +++ b/docs/RubyIndexer/Index/NonExistingNamespaceError.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Index::NonExistingNamespaceError

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Index/UnresolvableAliasError.html b/docs/RubyIndexer/Index/UnresolvableAliasError.html new file mode 100644 index 0000000000..7f42c6a4a9 --- /dev/null +++ b/docs/RubyIndexer/Index/UnresolvableAliasError.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Index::UnresolvableAliasError

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/IndexTest.html b/docs/RubyIndexer/IndexTest.html new file mode 100644 index 0000000000..dcc3d3cdbe --- /dev/null +++ b/docs/RubyIndexer/IndexTest.html @@ -0,0 +1,2301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::IndexTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ test_accessing_with_colon_colon_prefix() + + +

+ + + + + +
+ + +
+
+
+

+ test_ancestors_linearization_complex_include_duplication() + + +

+ + + + + +
+ + +
+
+
+

+ test_ancestors_linearization_complex_prepend_duplication() + + +

+ + + + + +
+ + +
+
+
+

+ test_deleting_all_entries_for_a_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_deleting_one_entry_for_a_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_duplicate_prepend_include() + + +

+ + + + + +
+ + +
+
+
+

+ test_fuzzy_search() + + +

+ + + + + +
+ + +
+
+
+

+ test_handle_change_clears_ancestor_cache_if_parent_class_changed() + + +

+ + + + + +
+ + +
+
+
+

+ test_handle_change_clears_ancestor_cache_if_tree_changed() + + +

+ + + + + +
+ + +
+
+
+

+ test_handle_change_does_not_clear_ancestor_cache_if_tree_not_changed() + + +

+ + + + + +
+ + +
+
+
+

+ test_index_resolve() + + +

+ + + + + +
+ + +
+
+
+

+ test_index_single_does_not_fail_for_non_existing_file() + + +

+ + + + + +
+ + +
+
+
+

+ test_index_single_ignores_directories() + + +

+ + + + + +
+ + +
+
+
+

+ test_indexing_prism_fixtures_succeeds() + + +

+ + + + + +
+ + +
+
+
+

+ test_instance_variables_completions_from_different_owners_with_conflicting_names() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearized_ancestors() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearized_ancestors_basic_ordering() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearized_ancestors_duplicates() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearizing_ancestors_for_non_existing_namespaces() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearizing_ancestors_handles_circular_parent_class() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearizing_ancestors_is_cached() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearizing_ancestors_that_need_to_be_resolved() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearizing_circular_aliased_dependency() + + +

+ + + + + +
+ + +
+
+
+

+ test_linearizing_circular_ancestors() + + +

+ + + + + +
+ + +
+
+
+

+ test_prefix_search_for_methods() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolve_method_attribute() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolve_method_with_class_name_conflict() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolve_method_with_known_receiver() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolve_method_with_two_definitions() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolve_normalizes_top_level_names() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_aliases_to_non_existing_constants_with_conflicting_names() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_an_inherited_method() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_an_inherited_method_lands_on_first_match() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_circular_alias() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_circular_alias_three_levels() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_constants_favors_ancestors_over_top_level() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_inherited_alised_namespace() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_inherited_constants() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_prepended_constants() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_qualified_references() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_references_with_only_top_level_declaration() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_references_with_redundant_namespaces() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_same_constant_from_different_scopes() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_top_level_compact_reference() + + +

+ + + + + +
+ + +
+
+
+

+ test_resolving_unqualified_references() + + +

+ + + + + +
+ + +
+
+
+

+ test_searching_for_entries_based_on_prefix() + + +

+ + + + + +
+ + +
+
+
+

+ test_searching_for_require_paths() + + +

+ + + + + +
+ + +
+
+
+

+ test_visitor_does_not_visit_unnecessary_nodes() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/IndexablePath.html b/docs/RubyIndexer/IndexablePath.html new file mode 100644 index 0000000000..6a07260a1b --- /dev/null +++ b/docs/RubyIndexer/IndexablePath.html @@ -0,0 +1,385 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::IndexablePath

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ full_path (attr_reader) +

+ +
+ +
+
+ +
+

+ require_path (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(load_path_entry, full_path) + + +

+ + + + + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/InstanceVariableTest.html b/docs/RubyIndexer/InstanceVariableTest.html new file mode 100644 index 0000000000..07c5b797cd --- /dev/null +++ b/docs/RubyIndexer/InstanceVariableTest.html @@ -0,0 +1,565 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::InstanceVariableTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ test_class_instance_variables() + + +

+ + + + + +
+ + +
+
+
+

+ test_empty_name_instance_variables() + + +

+ + + + + +
+ + +
+
+
+

+ test_instance_variable_and_write() + + +

+ + + + + +
+ + +
+
+
+

+ test_instance_variable_operator_write() + + +

+ + + + + +
+ + +
+
+
+

+ test_instance_variable_or_write() + + +

+ + + + + +
+ + +
+
+
+

+ test_instance_variable_target() + + +

+ + + + + +
+ + +
+
+
+

+ test_instance_variable_write() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/Location.html b/docs/RubyIndexer/Location.html new file mode 100644 index 0000000000..61cbc96c17 --- /dev/null +++ b/docs/RubyIndexer/Location.html @@ -0,0 +1,414 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::Location

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ end_column (attr_reader) +

+ +
+ +
+
+ +
+

+ end_line (attr_reader) +

+ +
+ +
+
+ +
+

+ start_column (attr_reader) +

+ +
+ +
+
+ +
+

+ start_line (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(start_line, end_line, start_column, end_column) + + +

+ + + + + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/MethodTest.html b/docs/RubyIndexer/MethodTest.html new file mode 100644 index 0000000000..a312c2df65 --- /dev/null +++ b/docs/RubyIndexer/MethodTest.html @@ -0,0 +1,1106 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::MethodTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ test_conditional_method() + + +

+ + + + + +
+ + +
+
+
+

+ test_ignores_attributes_invoked_on_constant() + + +

+ + + + + +
+ + +
+
+
+

+ test_keeps_track_of_aliases() + + +

+ + + + + +
+ + +
+
+
+

+ test_keeps_track_of_attributes() + + +

+ + + + + +
+ + +
+
+
+

+ test_keeps_track_of_method_owner() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_under_dynamic_class_or_module() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_anonymous_rest_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_block_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_destructed_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_destructured_rest_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_forbidden_keyword_splat_parameter() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_keyword_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_no_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_optional_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_post_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_method_with_rest_and_keyword_rest_parameters() + + +

+ + + + + +
+ + +
+
+
+

+ test_properly_tracks_multiple_levels_of_nesting() + + +

+ + + + + +
+ + +
+
+
+

+ test_singleton_method_using_other_receiver_is_not_indexed() + + +

+ + + + + +
+ + +
+
+
+

+ test_singleton_method_using_self_receiver() + + +

+ + + + + +
+ + +
+
+
+

+ test_visibility_tracking() + + +

+ + + + + +
+ + +
+
+
+

+ test_visibility_tracking_with_nested_class_or_modules() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/PrefixTree.html b/docs/RubyIndexer/PrefixTree.html new file mode 100644 index 0000000000..87c8e95c9f --- /dev/null +++ b/docs/RubyIndexer/PrefixTree.html @@ -0,0 +1,492 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::PrefixTree

+
+

A PrefixTree is a data structure that allows searching for partial strings fast. The tree is similar to a nested hash structure, where the keys are the characters of the inserted strings.

+ +

Example

+ +
tree = PrefixTree[String].new
+# Insert entries using the same key and value
+tree.insert("bar", "bar")
+tree.insert("baz", "baz")
+# Internally, the structure is analogous to this, but using nodes:
+# {
+#   "b" => {
+#     "a" => {
+#       "r" => "bar",
+#       "z" => "baz"
+#     }
+#   }
+# }
+# When we search it, it finds all possible values based on partial (or complete matches):
+tree.search("") # => ["bar", "baz"]
+tree.search("b") # => ["bar", "baz"]
+tree.search("ba") # => ["bar", "baz"]
+tree.search("bar") # => ["bar"]
+
+ +

A PrefixTree is useful for autocomplete, since we always want to find all alternatives while the developer hasn’t finished typing yet. This PrefixTree implementation allows for string keys and any arbitrary value using the generic Value type.

+ +

See en.wikipedia.org/wiki/Trie for more information

+
+ +
+ + +
+

Constants

+ +
+
>Value
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ delete(key) + + +

+ + + + + +
+ + +
+
+
+

+ insert(key, value) + + +

+ + + + + +
+ + +
+
+
+

+ search(prefix) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/PrefixTree/Node.html b/docs/RubyIndexer/PrefixTree/Node.html new file mode 100644 index 0000000000..329a3a7a35 --- /dev/null +++ b/docs/RubyIndexer/PrefixTree/Node.html @@ -0,0 +1,494 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::PrefixTree::Node

+
+ +
+ + +
+

Constants

+ +
+
>Value
+
+
+
+ + +
+

Attributes

+ + +
+

+ children (attr_reader) +

+ +
+ +
+
+ +
+

+ key (attr_reader) +

+ +
+ +
+
+ +
+

+ leaf (attr_accessor) +

+ +
+ +
+
+ +
+

+ parent (attr_reader) +

+ +
+ +
+
+ +
+

+ value (attr_accessor) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(key, value, parent = nil) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ collect() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/PrefixTreeTest.html b/docs/RubyIndexer/PrefixTreeTest.html new file mode 100644 index 0000000000..a4d383e2d2 --- /dev/null +++ b/docs/RubyIndexer/PrefixTreeTest.html @@ -0,0 +1,638 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::PrefixTreeTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ test_delete_does_not_impact_other_keys_with_the_same_value() + + +

+ + + + + +
+ + +
+
+
+

+ test_deleted_node_is_removed_from_the_tree() + + +

+ + + + + +
+ + +
+
+
+

+ test_deleting_non_terminal_nodes() + + +

+ + + + + +
+ + +
+
+
+

+ test_deletion() + + +

+ + + + + +
+ + +
+
+
+

+ test_empty() + + +

+ + + + + +
+ + +
+
+
+

+ test_multiple_items() + + +

+ + + + + +
+ + +
+
+
+

+ test_multiple_prefixes() + + +

+ + + + + +
+ + +
+
+
+

+ test_multiple_prefixes_with_shuffled_order() + + +

+ + + + + +
+ + +
+
+
+

+ test_overriding_values() + + +

+ + + + + +
+ + +
+
+
+

+ test_single_item() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/RBSIndexer.html b/docs/RubyIndexer/RBSIndexer.html new file mode 100644 index 0000000000..d526ecb721 --- /dev/null +++ b/docs/RubyIndexer/RBSIndexer.html @@ -0,0 +1,380 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::RBSIndexer

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(index) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ index_core_classes() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/RBSIndexerTest.html b/docs/RubyIndexer/RBSIndexerTest.html new file mode 100644 index 0000000000..76ccef3ddc --- /dev/null +++ b/docs/RubyIndexer/RBSIndexerTest.html @@ -0,0 +1,373 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::RBSIndexerTest

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ setup() + + +

+ + + + + +
+ + +
+
+
+

+ test_index_core_classes() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyIndexer/TestCase.html b/docs/RubyIndexer/TestCase.html new file mode 100644 index 0000000000..493739bdba --- /dev/null +++ b/docs/RubyIndexer/TestCase.html @@ -0,0 +1,338 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyIndexer::TestCase

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ setup() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp.html b/docs/RubyLsp.html new file mode 100644 index 0000000000..0aa7222cd9 --- /dev/null +++ b/docs/RubyLsp.html @@ -0,0 +1,446 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp

+
+

typed: true

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

typed: strict

+ +

NOTE: This module is intended to be used by addons for writing their own tests, so keep that in mind if changing.

+ +

typed: strict

+
+ +
+ + +
+

Constants

+ +
+
>BUNDLE_PATH
+

Used to indicate that a request shouldn’t return a response

+
>Constant
+
+
>GEMFILE_NAME
+
+
>Interface
+

rubocop:disable RubyLsp/UseLanguageServerAliases

+
>Transport
+
+
>VERSION
+
+
+
+ + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Addon.html b/docs/RubyLsp/Addon.html new file mode 100644 index 0000000000..ea87de2f07 --- /dev/null +++ b/docs/RubyLsp/Addon.html @@ -0,0 +1,767 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Addon

+
+

To register an addon, inherit from this class and implement both name and activate

+ +

Example

+ +
module MyGem
+  class MyAddon < Addon
+    def activate
+      # Perform any relevant initialization
+    end
+
+    def name
+      "My addon name"
+    end
+  end
+end
+
+
+ +
+ + + + +
+

Attributes

+ + +
+

+ addon_classes (attr_reader) +

+ +
+ +
+
+ +
+

+ addons (attr_accessor) +

+ +
+ +
+
+ +
+

+ file_watcher_addons (attr_accessor) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ inherited(child_class) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ load_addons(global_state, outgoing_queue) + + +

+ + + + + +
+ + +
+
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ activate(global_state, outgoing_queue) + + +

+ + + + + +
+ + +
+
+
+

+ add_error(error) + + +

+ + + + + +
+ + +
+
+
+

+ create_code_lens_listener(response_builder, uri, dispatcher) + + +

+ + + + + +
+ + +
+
+
+

+ create_completion_listener(response_builder, node_context, dispatcher, uri) + + +

+ + + + + +
+ + +
+
+
+

+ create_definition_listener(response_builder, uri, node_context, dispatcher) + + +

+ + + + + +
+ + +
+
+
+

+ create_document_symbol_listener(response_builder, dispatcher) + + +

+ + + + + +
+ + +
+
+
+

+ create_hover_listener(response_builder, node_context, dispatcher) + + +

+ + + + + +
+ + +
+
+
+

+ create_semantic_highlighting_listener(response_builder, dispatcher) + + +

+ + + + + +
+ + +
+
+
+

+ deactivate() + + +

+ + + + + +
+ + +
+
+
+

+ error?() + + +

+ + + + + +
+ + +
+
+
+

+ errors_details() + + +

+ + + + + +
+ + +
+
+
+

+ formatted_errors() + + +

+ + + + + +
+ + +
+
+
+

+ name() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/BaseServer.html b/docs/RubyLsp/BaseServer.html new file mode 100644 index 0000000000..254113fd9c --- /dev/null +++ b/docs/RubyLsp/BaseServer.html @@ -0,0 +1,621 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::BaseServer

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(test_mode: false) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ new_worker() + + +

+ + + + + +
+ + +
+
+
+

+ pop_response() + + +

+ + + + + +
+ + +
+
+
+

+ process_message(message) + + +

+ + + + + +
+ + +
+
+
+

+ run_shutdown() + + +

+ + + + + +
+ + +
+
+
+

+ send_empty_response(id) + + +

+ + + + + +
+ + +
+
+
+

+ send_message(message) + + +

+ + + + + +
+ + +
+
+
+

+ shutdown() + + +

+ + + + + +
+ + +
+
+
+

+ start() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/CheckDocs.html b/docs/RubyLsp/CheckDocs.html new file mode 100644 index 0000000000..44848c5880 --- /dev/null +++ b/docs/RubyLsp/CheckDocs.html @@ -0,0 +1,351 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::CheckDocs

+
+

This rake task checks that all requests or addons are fully documented. Add the rake task to your Rakefile and specify the absolute path for all files that must be required in order to discover all requests and their related GIFs

+ +

# Rakefile request_files = FileList.new(“#{__dir__}/lib/ruby_lsp/requests/.rb”) do |fl| fl.exclude(/base_request.rb/) end gif_files = FileList.new(“#{__dir__}//.gif”) RubyLsp::CheckDocs.new(request_files, gif_files) # Run with bundle exec rake ruby_lsp:check_docs

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(require_files, gif_files) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Document.html b/docs/RubyLsp/Document.html new file mode 100644 index 0000000000..3da04895a7 --- /dev/null +++ b/docs/RubyLsp/Document.html @@ -0,0 +1,819 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Document

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ encoding (attr_reader) +

+ +
+ +
+
+ +
+

+ parse_result (attr_reader) +

+ +
+ +
+
+ +
+

+ source (attr_reader) +

+ +
+ +
+
+ +
+

+ uri (attr_reader) +

+ +
+ +
+
+ +
+

+ version (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(source:, version:, uri:, encoding: Encoding::UTF_8) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ ==(other) + + +

+ + + + + +
+ + +
+
+
+

+ cache_fetch(request_name, &block) + + +

+ + + + + +
+ + +
+
+
+

+ cache_get(request_name) + + +

+ + + + + +
+ + +
+
+
+

+ cache_set(request_name, value) + + +

+ + + + + +
+ + +
+
+
+

+ comments() + + +

+ + + + + +
+ + +
+
+
+

+ create_scanner() + + +

+ + + + + +
+ + +
+
+
+

+ locate(node, char_position, node_types: []) + + +

+ + + + + +
+ + +
+
+
+

+ locate_node(position, node_types: []) + + +

+ + + + + +
+ + +
+
+
+

+ parse() + + +

+ + + + + +
+ + +
+
+
+

+ push_edits(edits, version:) + + +

+ + + + + +
+ + +
+
+
+

+ sorbet_sigil_is_true_or_higher() + + +

+ + + + + +
+ + +
+
+
+

+ syntax_error?() + + +

+ + + + + +
+ + +
+
+
+

+ tree() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Document/Scanner.html b/docs/RubyLsp/Document/Scanner.html new file mode 100644 index 0000000000..b3aac0d0f4 --- /dev/null +++ b/docs/RubyLsp/Document/Scanner.html @@ -0,0 +1,451 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Document::Scanner

+
+ +
+ + +
+

Constants

+ +
+
>LINE_BREAK
+
+
>SURROGATE_PAIR_START
+

After character 0xFFFF, UTF-16 considers characters to have length 2 and we have to account for that

+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(source, encoding) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ find_char_position(position) + + +

+ + + + + +
+ + +
+
+
+

+ utf_16_character_position_correction(current_position, requested_position) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Error.html b/docs/RubyLsp/Error.html new file mode 100644 index 0000000000..ce057d5e77 --- /dev/null +++ b/docs/RubyLsp/Error.html @@ -0,0 +1,413 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Error

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ message (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(id:, code:, message:, data: nil) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ to_hash() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/GlobalState.html b/docs/RubyLsp/GlobalState.html new file mode 100644 index 0000000000..2b891fb3e3 --- /dev/null +++ b/docs/RubyLsp/GlobalState.html @@ -0,0 +1,631 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::GlobalState

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ encoding (attr_reader) +

+ +
+ +
+
+ +
+

+ formatter (attr_accessor) +

+ +
+ +
+
+ +
+

+ index (attr_reader) +

+ +
+ +
+
+ +
+

+ supports_watching_files (attr_reader) +

+ +
+ +
+
+ +
+

+ test_library (attr_reader) +

+ +
+ +
+
+ +
+

+ typechecker (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ active_formatter() + + +

+ + + + + +
+ + +
+
+
+

+ active_linters() + + +

+ + + + + +
+ + +
+
+
+

+ apply_options(options) + + +

+ + + + + +
+ + +
+
+
+

+ encoding_name() + + +

+ + + + + +
+ + +
+
+
+

+ register_formatter(identifier, instance) + + +

+ + + + + +
+ + +
+
+
+

+ workspace_path() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/InlineTypeAssertions.html b/docs/RubyLsp/InlineTypeAssertions.html new file mode 100644 index 0000000000..04a703cff0 --- /dev/null +++ b/docs/RubyLsp/InlineTypeAssertions.html @@ -0,0 +1,516 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::InlineTypeAssertions

+
+

No-op all inline type assertions defined in T

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ absurd(value) + + +

+ + + + + +
+ + +
+
+
+

+ any(type_a, type_b, *types) + + +

+ + + + + +
+ + +
+
+
+

+ assert_type!(value, type, checked: true) + + +

+ + + + + +
+ + +
+
+
+

+ bind(value, type, checked: true) + + +

+ + + + + +
+ + +
+
+
+

+ cast(value, type, checked: true) + + +

+ + + + + +
+ + +
+
+
+

+ let(value, type, checked: true) + + +

+ + + + + +
+ + +
+
+
+

+ must(arg) + + +

+ + + + + +
+ + +
+
+
+

+ nilable(type) + + +

+ + + + + +
+ + +
+
+
+

+ unsafe(value) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners.html b/docs/RubyLsp/Listeners.html new file mode 100644 index 0000000000..6be4816b39 --- /dev/null +++ b/docs/RubyLsp/Listeners.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::Listeners

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/CodeLens.html b/docs/RubyLsp/Listeners/CodeLens.html new file mode 100644 index 0000000000..5d5caa8718 --- /dev/null +++ b/docs/RubyLsp/Listeners/CodeLens.html @@ -0,0 +1,677 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::CodeLens

+
+ +
+ + +
+

Constants

+ +
+
>ACCESS_MODIFIERS
+
+
>BASE_COMMAND
+
+
>DESCRIBE_KEYWORD
+
+
>DYNAMIC_REFERENCE_MARKER
+
+
>IT_KEYWORD
+
+
>SUPPORTED_TEST_LIBRARIES
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, global_state, uri, dispatcher) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_leave(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/Completion.html b/docs/RubyLsp/Listeners/Completion.html new file mode 100644 index 0000000000..81a0e0f433 --- /dev/null +++ b/docs/RubyLsp/Listeners/Completion.html @@ -0,0 +1,624 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::Completion

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, global_state, node_context, typechecker_enabled, dispatcher, uri) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/Definition.html b/docs/RubyLsp/Listeners/Definition.html new file mode 100644 index 0000000000..16e4321c0a --- /dev/null +++ b/docs/RubyLsp/Listeners/Definition.html @@ -0,0 +1,656 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::Definition

+
+ +
+ + +
+

Constants

+ +
+
>MAX_NUMBER_OF_DEFINITION_CANDIDATES_WITHOUT_RECEIVER
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, global_state, uri, node_context, dispatcher, typechecker_enabled) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_block_argument_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_string_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/DocumentHighlight.html b/docs/RubyLsp/Listeners/DocumentHighlight.html new file mode 100644 index 0000000000..b05a5d5e13 --- /dev/null +++ b/docs/RubyLsp/Listeners/DocumentHighlight.html @@ -0,0 +1,1616 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::DocumentHighlight

+
+ +
+ + +
+

Constants

+ +
+
>CLASS_VARIABLE_NODES
+
+
>CONSTANT_NODES
+
+
>CONSTANT_PATH_NODES
+
+
>GLOBAL_VARIABLE_NODES
+
+
>INSTANCE_VARIABLE_NODES
+
+
>LOCAL_NODES
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, target, parent, dispatcher) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_block_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_global_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_global_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_global_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_global_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_global_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_global_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_keyword_rest_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_optional_keyword_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_optional_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_required_keyword_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_required_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_rest_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/DocumentLink.html b/docs/RubyLsp/Listeners/DocumentLink.html new file mode 100644 index 0000000000..522d51710e --- /dev/null +++ b/docs/RubyLsp/Listeners/DocumentLink.html @@ -0,0 +1,557 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::DocumentLink

+
+ +
+ + +
+

Constants

+ +
+
>GEM_TO_VERSION_MAP
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ gem_paths() + + +

+ + + + + +
+ + +
+
+
+

+ new(response_builder, uri, comments, dispatcher) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/DocumentSymbol.html b/docs/RubyLsp/Listeners/DocumentSymbol.html new file mode 100644 index 0000000000..754de9353c --- /dev/null +++ b/docs/RubyLsp/Listeners/DocumentSymbol.html @@ -0,0 +1,1029 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::DocumentSymbol

+
+ +
+ + +
+

Constants

+ +
+
>ATTR_ACCESSORS
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, uri, dispatcher) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_alias_method_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_singleton_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_singleton_class_node_leave(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/FoldingRanges.html b/docs/RubyLsp/Listeners/FoldingRanges.html new file mode 100644 index 0000000000..b2424365a1 --- /dev/null +++ b/docs/RubyLsp/Listeners/FoldingRanges.html @@ -0,0 +1,932 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::FoldingRanges

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, comments, dispatcher) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ finalize_response!() + + +

+ + + + + +
+ + +
+
+
+

+ on_array_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_begin_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_block_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_case_match_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_case_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_else_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_ensure_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_for_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_hash_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_if_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_in_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_interpolated_string_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_lambda_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_rescue_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_singleton_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_unless_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_until_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_when_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_while_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/Hover.html b/docs/RubyLsp/Listeners/Hover.html new file mode 100644 index 0000000000..0db31ec8ac --- /dev/null +++ b/docs/RubyLsp/Listeners/Hover.html @@ -0,0 +1,648 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::Hover

+
+ +
+ + +
+

Constants

+ +
+
>ALLOWED_REMOTE_PROVIDERS
+
+
>ALLOWED_TARGETS
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, global_state, uri, node_context, dispatcher, typechecker_enabled) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_instance_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/InlayHints.html b/docs/RubyLsp/Listeners/InlayHints.html new file mode 100644 index 0000000000..169fffc013 --- /dev/null +++ b/docs/RubyLsp/Listeners/InlayHints.html @@ -0,0 +1,456 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::InlayHints

+
+ +
+ + +
+

Constants

+ +
+
>RESCUE_STRING_LENGTH
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, range, hints_configuration, dispatcher) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_implicit_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_rescue_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/SemanticHighlighting.html b/docs/RubyLsp/Listeners/SemanticHighlighting.html new file mode 100644 index 0000000000..cf315cbf99 --- /dev/null +++ b/docs/RubyLsp/Listeners/SemanticHighlighting.html @@ -0,0 +1,1288 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::SemanticHighlighting

+
+ +
+ + +
+

Constants

+ +
+
>SPECIAL_RUBY_METHODS
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(dispatcher, response_builder, range: nil) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_block_local_variable_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_block_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_block_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_block_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_class_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_path_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_constant_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_def_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_implicit_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_implicit_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_keyword_rest_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_and_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_operator_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_or_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_read_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_target_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_local_variable_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_match_write_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_match_write_node_leave(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_module_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_optional_keyword_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_optional_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_required_keyword_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_required_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_rest_parameter_node_enter(node) + + +

+ + + + + +
+ + +
+
+
+

+ on_self_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Listeners/SignatureHelp.html b/docs/RubyLsp/Listeners/SignatureHelp.html new file mode 100644 index 0000000000..b63c5ab493 --- /dev/null +++ b/docs/RubyLsp/Listeners/SignatureHelp.html @@ -0,0 +1,424 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Listeners::SignatureHelp

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(response_builder, global_state, node_context, dispatcher, typechecker_enabled) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ on_call_node_enter(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Message.html b/docs/RubyLsp/Message.html new file mode 100644 index 0000000000..d43b65fd76 --- /dev/null +++ b/docs/RubyLsp/Message.html @@ -0,0 +1,419 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Message

+
+

A notification to be sent to the client

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ method (attr_reader) +

+ +
+ +
+
+ +
+

+ params (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(method:, params:) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ to_hash() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/NodeContext.html b/docs/RubyLsp/NodeContext.html new file mode 100644 index 0000000000..82b4ed745d --- /dev/null +++ b/docs/RubyLsp/NodeContext.html @@ -0,0 +1,453 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::NodeContext

+
+

This class allows listeners to access contextual information about a node in the AST, such as its parent, its namespace nesting, and the surrounding CallNode (e.g. a method call).

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ call_node (attr_reader) +

+ +
+ +
+
+ +
+

+ nesting (attr_reader) +

+ +
+ +
+
+ +
+

+ node (attr_reader) +

+ +
+ +
+
+ +
+

+ parent (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(node, parent, nesting, call_node) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ fully_qualified_name() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Notification.html b/docs/RubyLsp/Notification.html new file mode 100644 index 0000000000..aaeb67eca5 --- /dev/null +++ b/docs/RubyLsp/Notification.html @@ -0,0 +1,381 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Notification

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ window_show_error(message) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ to_hash() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ParameterScope.html b/docs/RubyLsp/ParameterScope.html new file mode 100644 index 0000000000..01ba71b6c3 --- /dev/null +++ b/docs/RubyLsp/ParameterScope.html @@ -0,0 +1,449 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ParameterScope

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ parent (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(parent = nil) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ <<(name) + + +

+ + + + + +
+ + +
+
+
+

+ parameter?(name) + + +

+ + + + + +
+ + +
+
+
+

+ type_for(name) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Request.html b/docs/RubyLsp/Request.html new file mode 100644 index 0000000000..ef73549878 --- /dev/null +++ b/docs/RubyLsp/Request.html @@ -0,0 +1,380 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Request

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(id:, method:, params:) + + +

+ + + +
+ Calls superclass method + RubyLsp::Message::new +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ to_hash() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/RequestConfig.html b/docs/RubyLsp/RequestConfig.html new file mode 100644 index 0000000000..e8e21dce38 --- /dev/null +++ b/docs/RubyLsp/RequestConfig.html @@ -0,0 +1,405 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::RequestConfig

+
+

A request configuration, to turn on/off features

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ configuration (attr_accessor) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(configuration) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ enabled?(feature) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests.html b/docs/RubyLsp/Requests.html new file mode 100644 index 0000000000..24d14d0326 --- /dev/null +++ b/docs/RubyLsp/Requests.html @@ -0,0 +1,344 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::Requests

+
+

Supported features

+ +
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/CodeActionResolve.html b/docs/RubyLsp/Requests/CodeActionResolve.html new file mode 100644 index 0000000000..576ad57940 --- /dev/null +++ b/docs/RubyLsp/Requests/CodeActionResolve.html @@ -0,0 +1,614 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::CodeActionResolve

+
+

+ +

The code action resolve request is used to to resolve the edit field for a given code action, if it is not already provided in the textDocument/codeAction response. We can use it for scenarios that require more computation such as refactoring.

+ +

Example: Extract to variable

+ +
# Before:
+1 + 1 # Select the text and use Refactor: Extract Variable
+
+# After:
+new_variable = 1 + 1
+new_variable
+
+
+ +
+ + +
+

Constants

+ +
+
>NEW_METHOD_NAME
+
+
>NEW_VARIABLE_NAME
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, code_action) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+
+

+ refactor_method() + + +

+ + + + + +
+ + +
+
+
+

+ refactor_variable() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/CodeActionResolve/CodeActionError.html b/docs/RubyLsp/Requests/CodeActionResolve/CodeActionError.html new file mode 100644 index 0000000000..cdfba52785 --- /dev/null +++ b/docs/RubyLsp/Requests/CodeActionResolve/CodeActionError.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::CodeActionResolve::CodeActionError

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/CodeActionResolve/Error.html b/docs/RubyLsp/Requests/CodeActionResolve/Error.html new file mode 100644 index 0000000000..7a95fba9a4 --- /dev/null +++ b/docs/RubyLsp/Requests/CodeActionResolve/Error.html @@ -0,0 +1,335 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::CodeActionResolve::Error

+
+ +
+ + +
+

Constants

+ +
+
>EmptySelection
+
+
>InvalidTargetRange
+
+
>UnknownCodeAction
+
+
+
+ + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/CodeActions.html b/docs/RubyLsp/Requests/CodeActions.html new file mode 100644 index 0000000000..9e931a6e87 --- /dev/null +++ b/docs/RubyLsp/Requests/CodeActions.html @@ -0,0 +1,463 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::CodeActions

+
+

+ +

The code actions request informs the editor of RuboCop quick fixes that can be applied. These are accessible by hovering over a specific diagnostic.

+ +

Example

+ +
def say_hello
+puts "Hello" # --> code action: quick fix indentation
+end
+
+
+ +
+ + +
+

Constants

+ +
+
>EXTRACT_TO_METHOD_TITLE
+
+
>EXTRACT_TO_VARIABLE_TITLE
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, range, context) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/CodeLens.html b/docs/RubyLsp/Requests/CodeLens.html new file mode 100644 index 0000000000..f67b6ecaa0 --- /dev/null +++ b/docs/RubyLsp/Requests/CodeLens.html @@ -0,0 +1,421 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::CodeLens

+
+

+ +

The code lens request informs the editor of runnable commands such as testing and debugging

+ +

Example

+ +
# Run | Run in Terminal | Debug
+class Test < Minitest::Test
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(global_state, uri, dispatcher) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Completion.html b/docs/RubyLsp/Requests/Completion.html new file mode 100644 index 0000000000..d78c5b6d12 --- /dev/null +++ b/docs/RubyLsp/Requests/Completion.html @@ -0,0 +1,483 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Completion

+
+

+ +

The completion suggests possible completions according to what the developer is typing.

+ +

Currently supported targets:

+
  • +

    Classes

    +
  • +

    Modules

    +
  • +

    Constants

    +
  • +

    Require paths

    +
  • +

    Methods invoked on self only

    +
  • +

    Instance variables

    +
+ +

Example

+ +
require "ruby_lsp/requests" # --> completion: suggests `base_request`, `code_actions`, ...
+
+RubyLsp::Requests:: # --> completion: suggests `Completion`, `Hover`, ...
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, global_state, position, typechecker_enabled, dispatcher) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/CompletionResolve.html b/docs/RubyLsp/Requests/CompletionResolve.html new file mode 100644 index 0000000000..76b9468d0d --- /dev/null +++ b/docs/RubyLsp/Requests/CompletionResolve.html @@ -0,0 +1,441 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::CompletionResolve

+
+

+ +

The completionItem/resolve request provides additional information about the currently selected completion. Specifically, the labelDetails and documentation fields are provided, which are omitted from the completion items returned by textDocument/completion.

+ +

The labelDetails field lists the files where the completion item is defined, and the documentation field includes any available documentation for those definitions.

+ +

At most 10 definitions are included, to ensure low latency during request processing and rendering the completion item.

+ +

Example

+ +
A # -> as the user cycles through completion items, the documentation will be resolved and displayed
+
+
+ +
+ + +
+

Constants

+ +
+
>MAX_DOCUMENTATION_ENTRIES
+

set a limit on the number of documentation entries returned, to avoid rendering performance issues github.com/Shopify/ruby-lsp/pull/1798

+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(global_state, item) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Definition.html b/docs/RubyLsp/Requests/Definition.html new file mode 100644 index 0000000000..e23e7c3662 --- /dev/null +++ b/docs/RubyLsp/Requests/Definition.html @@ -0,0 +1,466 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Definition

+
+

+ +

The definition request jumps to the definition of the symbol under the cursor.

+ +

Currently supported targets:

+
  • +

    Classes

    +
  • +

    Modules

    +
  • +

    Constants

    +
  • +

    Require paths

    +
  • +

    Methods invoked on self only and on receivers where the type is unknown

    +
  • +

    Instance variables

    +
+ +

Example

+ +
require "some_gem/file" # <- Request go to definition on this string will take you to the file
+Product.new # <- Request go to definition on this class name will take you to its declaration.
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, global_state, position, dispatcher, typechecker_enabled) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Diagnostics.html b/docs/RubyLsp/Requests/Diagnostics.html new file mode 100644 index 0000000000..ad15eb9b15 --- /dev/null +++ b/docs/RubyLsp/Requests/Diagnostics.html @@ -0,0 +1,429 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Diagnostics

+
+

+ +

The diagnostics request informs the editor of RuboCop offenses for a given file.

+ +

Example

+ +
def say_hello
+puts "Hello" # --> diagnostics: incorrect indentation
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(global_state, document) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/DocumentHighlight.html b/docs/RubyLsp/Requests/DocumentHighlight.html new file mode 100644 index 0000000000..265ef3eb43 --- /dev/null +++ b/docs/RubyLsp/Requests/DocumentHighlight.html @@ -0,0 +1,400 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::DocumentHighlight

+
+

+ +

The document highlight informs the editor all relevant elements of the currently pointed item for highlighting. For example, when the cursor is on the F of the constant FOO, the editor should identify other occurrences of FOO and highlight them.

+ +

For writable elements like constants or variables, their read/write occurrences should be highlighted differently. This is achieved by sending different “kind” attributes to the editor (2 for read and 3 for write).

+ +

Example

+ +
FOO = 1 # should be highlighted as "write"
+
+def foo
+  FOO # should be highlighted as "read"
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, position, dispatcher) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/DocumentLink.html b/docs/RubyLsp/Requests/DocumentLink.html new file mode 100644 index 0000000000..82881755d7 --- /dev/null +++ b/docs/RubyLsp/Requests/DocumentLink.html @@ -0,0 +1,417 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::DocumentLink

+
+

+ +

The document link makes # source://PATH_TO_FILE#line comments in a Ruby/RBI file clickable if the file exists. When the user clicks the link, it’ll open that location.

+ +

Example

+ +
# source://syntax_tree/3.2.1/lib/syntax_tree.rb#51 <- it will be clickable and will take the user to that location
+def format(source, maxwidth = T.unsafe(nil))
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(uri, comments, dispatcher) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/DocumentSymbol.html b/docs/RubyLsp/Requests/DocumentSymbol.html new file mode 100644 index 0000000000..fe076dc3bc --- /dev/null +++ b/docs/RubyLsp/Requests/DocumentSymbol.html @@ -0,0 +1,432 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::DocumentSymbol

+
+

+ +

The document symbol request informs the editor of all the important symbols, such as classes, variables, and methods, defined in a file. With this information, the editor can populate breadcrumbs, file outline and allow for fuzzy symbol searches.

+ +

In VS Code, fuzzy symbol search can be accessed by opening the command palette and inserting an @ symbol.

+ +

Example

+ +
class Person # --> document symbol: class
+  attr_reader :age # --> document symbol: field
+
+  def initialize
+    @age = 0 # --> document symbol: variable
+  end
+
+  def age # --> document symbol: method
+  end
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(uri, dispatcher) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/FoldingRanges.html b/docs/RubyLsp/Requests/FoldingRanges.html new file mode 100644 index 0000000000..ca01d8a5c0 --- /dev/null +++ b/docs/RubyLsp/Requests/FoldingRanges.html @@ -0,0 +1,421 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::FoldingRanges

+
+

+ +

The folding ranges request informs the editor of the ranges where and how code can be folded.

+ +

Example

+ +
def say_hello # <-- folding range start
+  puts "Hello"
+end # <-- folding range end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(comments, dispatcher) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Formatting.html b/docs/RubyLsp/Requests/Formatting.html new file mode 100644 index 0000000000..327f30cdc4 --- /dev/null +++ b/docs/RubyLsp/Requests/Formatting.html @@ -0,0 +1,412 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

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(global_state, document) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Formatting/Error.html b/docs/RubyLsp/Requests/Formatting/Error.html new file mode 100644 index 0000000000..55b3bfb811 --- /dev/null +++ b/docs/RubyLsp/Requests/Formatting/Error.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Formatting::Error

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Hover.html b/docs/RubyLsp/Requests/Hover.html new file mode 100644 index 0000000000..9de71ba891 --- /dev/null +++ b/docs/RubyLsp/Requests/Hover.html @@ -0,0 +1,471 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Hover

+
+

+ +

The hover request displays the documentation for the symbol currently under the cursor.

+ +

Example

+ +
String # -> Hovering over the class reference will show all declaration locations and the documentation
+
+
+ +
+ + +
+

Constants

+ +
+
>ResponseType
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, global_state, position, dispatcher, typechecker_enabled) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/InlayHints.html b/docs/RubyLsp/Requests/InlayHints.html new file mode 100644 index 0000000000..c39051921d --- /dev/null +++ b/docs/RubyLsp/Requests/InlayHints.html @@ -0,0 +1,439 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::InlayHints

+
+

+ +

Inlay hints are labels added directly in the code that explicitly show the user something that might otherwise just be implied.

+ +

Configuration

+ +

To enable rescue hints, set rubyLsp.featuresConfiguration.inlayHint.implicitRescue to true.

+ +

To enable hash value hints, set rubyLsp.featuresConfiguration.inlayHint.implicitHashValue to true.

+ +

To enable all hints, set rubyLsp.featuresConfiguration.inlayHint.enableAll to true.

+ +

Example

+ +
begin
+  puts "do something that might raise"
+rescue # Label "StandardError" goes here as a bare rescue implies rescuing StandardError
+  puts "handle some rescue"
+end
+
+ +

Example

+ +
var = "foo"
+{
+  var: var, # Label "var" goes here in cases where the value is omitted
+  a: "hello",
+}
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, range, hints_configuration, dispatcher) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/OnTypeFormatting.html b/docs/RubyLsp/Requests/OnTypeFormatting.html new file mode 100644 index 0000000000..45f0f0f6d9 --- /dev/null +++ b/docs/RubyLsp/Requests/OnTypeFormatting.html @@ -0,0 +1,467 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::OnTypeFormatting

+
+

+ +

The on type formatting request formats code as the user is typing. For example, automatically adding end to class definitions.

+ +

Example

+ +
class Foo # <-- upon adding a line break, on type formatting is triggered
+  # <-- cursor ends up here
+end # <-- end is automatically added
+
+
+ +
+ + +
+

Constants

+ +
+
>END_REGEXES
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, position, trigger_character, client_name) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Request.html b/docs/RubyLsp/Requests/Request.html new file mode 100644 index 0000000000..0ec072ee2a --- /dev/null +++ b/docs/RubyLsp/Requests/Request.html @@ -0,0 +1,336 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Request

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Request/InvalidFormatter.html b/docs/RubyLsp/Requests/Request/InvalidFormatter.html new file mode 100644 index 0000000000..1438c62ee7 --- /dev/null +++ b/docs/RubyLsp/Requests/Request/InvalidFormatter.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Request::InvalidFormatter

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/SelectionRanges.html b/docs/RubyLsp/Requests/SelectionRanges.html new file mode 100644 index 0000000000..7d523226aa --- /dev/null +++ b/docs/RubyLsp/Requests/SelectionRanges.html @@ -0,0 +1,409 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::SelectionRanges

+
+

+ +

The selection ranges request informs the editor of ranges that the user may want to select based on the location(s) of their cursor(s).

+ +

Trigger this request with: Ctrl + Shift + -> or Ctrl + Shift + <-

+ +

Note that if using VSCode Neovim, you will need to be in Insert mode for this to work correctly.

+ +

Example

+ +
def foo # --> The next selection range encompasses the entire method definition.
+  puts "Hello, world!" # --> Cursor is on this line
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/SemanticHighlighting.html b/docs/RubyLsp/Requests/SemanticHighlighting.html new file mode 100644 index 0000000000..2d672967b0 --- /dev/null +++ b/docs/RubyLsp/Requests/SemanticHighlighting.html @@ -0,0 +1,431 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::SemanticHighlighting

+
+

+ +

The semantic highlighting request informs the editor of the correct token types to provide consistent and accurate highlighting for themes.

+ +

Example

+ +
def foo
+  var = 1 # --> semantic highlighting: local variable
+  some_invocation # --> semantic highlighting: method invocation
+  var # --> semantic highlighting: local variable
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(global_state, dispatcher, range: nil) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/ShowSyntaxTree.html b/docs/RubyLsp/Requests/ShowSyntaxTree.html new file mode 100644 index 0000000000..c4131dc356 --- /dev/null +++ b/docs/RubyLsp/Requests/ShowSyntaxTree.html @@ -0,0 +1,396 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::ShowSyntaxTree

+
+

+ +

Show syntax tree is a custom LSP request that displays the AST for the current document or for the current selection in a new tab.

+ +

Example

+ +
# Executing the Ruby LSP: Show syntax tree command will display the AST for the document
+1 + 1
+# (program (statements ((binary (int "1") + (int "1")))))
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, range) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/SignatureHelp.html b/docs/RubyLsp/Requests/SignatureHelp.html new file mode 100644 index 0000000000..8585cfbc63 --- /dev/null +++ b/docs/RubyLsp/Requests/SignatureHelp.html @@ -0,0 +1,435 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::SignatureHelp

+
+

+ +

The signature help request displays information about the parameters of a method as you type an invocation.

+ +

Currently only supports methods invoked directly on self without taking inheritance into account.

+ +

Example

+ +
class Foo
+ def bar(a, b, c)
+ end
+
+ def baz
+   bar( # -> Signature help will show the parameters of `bar`
+ end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, global_state, position, context, dispatcher, typechecker_enabled) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+
+

+ provider() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support.html b/docs/RubyLsp/Requests/Support.html new file mode 100644 index 0000000000..adb153608c --- /dev/null +++ b/docs/RubyLsp/Requests/Support.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::Requests::Support

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/Annotation.html b/docs/RubyLsp/Requests/Support/Annotation.html new file mode 100644 index 0000000000..f6d0b0cce2 --- /dev/null +++ b/docs/RubyLsp/Requests/Support/Annotation.html @@ -0,0 +1,376 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::Annotation

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(arity:, receiver: false) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ match?(node) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/Common.html b/docs/RubyLsp/Requests/Support/Common.html new file mode 100644 index 0000000000..0e9fdf23bb --- /dev/null +++ b/docs/RubyLsp/Requests/Support/Common.html @@ -0,0 +1,641 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::Requests::Support::Common

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ categorized_markdown_from_index_entries(title, entries, max_entries = nil) + + +

+ + + + + +
+ + +
+
+
+

+ constant_name(node) + + +

+ + + + + +
+ + +
+
+
+

+ create_code_lens(node, title:, command_name:, arguments:, data:) + + +

+ + + + + +
+ + +
+
+
+

+ each_constant_path_part(node, &block) + + +

+ + + + + +
+ + +
+
+
+

+ markdown_from_index_entries(title, entries, max_entries = nil) + + +

+ + + + + +
+ + +
+
+
+

+ namespace_constant_name(node) + + +

+ + + + + +
+ + +
+
+
+

+ not_in_dependencies?(file_path) + + +

+ + + + + +
+ + +
+
+
+

+ range_from_location(location) + + +

+ + + + + +
+ + +
+
+
+

+ range_from_node(node) + + +

+ + + + + +
+ + +
+
+
+

+ self_receiver?(node) + + +

+ + + + + +
+ + +
+
+
+

+ visible?(node, range) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/Formatter.html b/docs/RubyLsp/Requests/Support/Formatter.html new file mode 100644 index 0000000000..4b4b1118bc --- /dev/null +++ b/docs/RubyLsp/Requests/Support/Formatter.html @@ -0,0 +1,356 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::Requests::Support::Formatter

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ run_diagnostic(uri, document) + + +

+ + + + + +
+ + +
+
+
+

+ run_formatting(uri, document) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/InternalRuboCopError.html b/docs/RubyLsp/Requests/Support/InternalRuboCopError.html new file mode 100644 index 0000000000..02f12cfdaf --- /dev/null +++ b/docs/RubyLsp/Requests/Support/InternalRuboCopError.html @@ -0,0 +1,368 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::InternalRuboCopError

+
+ +
+ + +
+

Constants

+ +
+
>MESSAGE
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(rubocop_error) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/RuboCopDiagnostic.html b/docs/RubyLsp/Requests/Support/RuboCopDiagnostic.html new file mode 100644 index 0000000000..8f63dba3ce --- /dev/null +++ b/docs/RubyLsp/Requests/Support/RuboCopDiagnostic.html @@ -0,0 +1,454 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::RuboCopDiagnostic

+
+ +
+ + +
+

Constants

+ +
+
>ENHANCED_DOC_URL
+
+
>RUBOCOP_TO_LSP_SEVERITY
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(document, offense, uri) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ to_lsp_code_actions() + + +

+ + + + + +
+ + +
+
+
+

+ to_lsp_diagnostic(config) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/RuboCopFormatter.html b/docs/RubyLsp/Requests/Support/RuboCopFormatter.html new file mode 100644 index 0000000000..b01b717816 --- /dev/null +++ b/docs/RubyLsp/Requests/Support/RuboCopFormatter.html @@ -0,0 +1,413 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::RuboCopFormatter

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ run_diagnostic(uri, document) + + +

+ + + + + +
+ + +
+
+
+

+ run_formatting(uri, document) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/RuboCopRunner.html b/docs/RubyLsp/Requests/Support/RuboCopRunner.html new file mode 100644 index 0000000000..5a9f2aabc6 --- /dev/null +++ b/docs/RubyLsp/Requests/Support/RuboCopRunner.html @@ -0,0 +1,517 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::RuboCopRunner

+
+ +
+ + +
+

Constants

+ +
+
>DEFAULT_ARGS
+
+
+
+ + +
+

Attributes

+ + +
+

+ config_for_working_directory (attr_reader) +

+ +
+ +
+
+ +
+

+ offenses (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ find_cop_by_name(cop_name) + + +

+ + + + + +
+ + +
+
+
+

+ new(*args) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ formatted_source() + + +

+ + + + + +
+ + +
+
+
+

+ run(path, contents) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/RuboCopRunner/ConfigurationError.html b/docs/RubyLsp/Requests/Support/RuboCopRunner/ConfigurationError.html new file mode 100644 index 0000000000..5551ff24c7 --- /dev/null +++ b/docs/RubyLsp/Requests/Support/RuboCopRunner/ConfigurationError.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::RuboCopRunner::ConfigurationError

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/SelectionRange.html b/docs/RubyLsp/Requests/Support/SelectionRange.html new file mode 100644 index 0000000000..1f4e8e4981 --- /dev/null +++ b/docs/RubyLsp/Requests/Support/SelectionRange.html @@ -0,0 +1,342 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::SelectionRange

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ cover?(position) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/Sorbet.html b/docs/RubyLsp/Requests/Support/Sorbet.html new file mode 100644 index 0000000000..7bf24c1695 --- /dev/null +++ b/docs/RubyLsp/Requests/Support/Sorbet.html @@ -0,0 +1,358 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::Sorbet

+
+ +
+ + +
+

Constants

+ +
+
>ANNOTATIONS
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ annotation?(node) + + +

+ + + + + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/Support/SyntaxTreeFormatter.html b/docs/RubyLsp/Requests/Support/SyntaxTreeFormatter.html new file mode 100644 index 0000000000..3b801ff7fb --- /dev/null +++ b/docs/RubyLsp/Requests/Support/SyntaxTreeFormatter.html @@ -0,0 +1,408 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::Support::SyntaxTreeFormatter

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ run_diagnostic(uri, document) + + +

+ + + + + +
+ + +
+
+
+

+ run_formatting(uri, document) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Requests/WorkspaceSymbol.html b/docs/RubyLsp/Requests/WorkspaceSymbol.html new file mode 100644 index 0000000000..48ac04f992 --- /dev/null +++ b/docs/RubyLsp/Requests/WorkspaceSymbol.html @@ -0,0 +1,424 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Requests::WorkspaceSymbol

+
+

+ +

The workspace symbol request allows fuzzy searching declarations in the entire project. On VS Code, use CTRL/CMD + T to search for symbols.

+ +

Example

+ +
# Searching for `Floo` will fuzzy match and return all declarations according to the query, including this `Foo`
+class
+class Foo
+end
+
+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new(global_state, query) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ perform() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders.html b/docs/RubyLsp/ResponseBuilders.html new file mode 100644 index 0000000000..fc58c64383 --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::ResponseBuilders

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/CollectionResponseBuilder.html b/docs/RubyLsp/ResponseBuilders/CollectionResponseBuilder.html new file mode 100644 index 0000000000..344d523f10 --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/CollectionResponseBuilder.html @@ -0,0 +1,422 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::CollectionResponseBuilder

+
+ +
+ + +
+

Constants

+ +
+
>ResponseType
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ <<(item) + + +

+ + + + + +
+ + +
+
+
+

+ response() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/DocumentSymbol.html b/docs/RubyLsp/ResponseBuilders/DocumentSymbol.html new file mode 100644 index 0000000000..b7f3115f1e --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/DocumentSymbol.html @@ -0,0 +1,494 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::DocumentSymbol

+
+ +
+ + +
+

Constants

+ +
+
>ResponseType
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ <<(symbol) + +

+ + + + + +
+ Alias for: push +
+
+ +
+
+
+

+ last() + + +

+ + + + + +
+ + +
+
+
+

+ pop() + + +

+ + + + + +
+ + +
+
+
+

+ push(symbol) + + +

+ + + + +
+ Aliased as: << +
+ +
+ + +
+
+
+

+ response() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/DocumentSymbol/SymbolHierarchyRoot.html b/docs/RubyLsp/ResponseBuilders/DocumentSymbol/SymbolHierarchyRoot.html new file mode 100644 index 0000000000..5dfac4828e --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/DocumentSymbol/SymbolHierarchyRoot.html @@ -0,0 +1,366 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::DocumentSymbol::SymbolHierarchyRoot

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ children (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/Hover.html b/docs/RubyLsp/ResponseBuilders/Hover.html new file mode 100644 index 0000000000..746a063b1c --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/Hover.html @@ -0,0 +1,459 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::Hover

+
+ +
+ + +
+

Constants

+ +
+
>ResponseType
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ empty?() + + +

+ + + + + +
+ + +
+
+
+

+ push(content, category:) + + +

+ + + + + +
+ + +
+
+
+

+ response() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/ResponseBuilder.html b/docs/RubyLsp/ResponseBuilders/ResponseBuilder.html new file mode 100644 index 0000000000..dcaa83c01e --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/ResponseBuilder.html @@ -0,0 +1,336 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::ResponseBuilder

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ response() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/SemanticHighlighting.html b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting.html new file mode 100644 index 0000000000..793f25e979 --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting.html @@ -0,0 +1,495 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::SemanticHighlighting

+
+ +
+ + +
+

Constants

+ +
+
>ResponseType
+
+
>TOKEN_MODIFIERS
+
+
>TOKEN_TYPES
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(encoding) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ add_token(location, type, modifiers = []) + + +

+ + + + + +
+ + +
+
+
+

+ last() + + +

+ + + + + +
+ + +
+
+
+

+ last_token_matches?(location) + + +

+ + + + + +
+ + +
+
+
+

+ response() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticToken.html b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticToken.html new file mode 100644 index 0000000000..195a6797ad --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticToken.html @@ -0,0 +1,497 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticToken

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ length (attr_reader) +

+ +
+ +
+
+ +
+

+ modifier (attr_reader) +

+ +
+ +
+
+ +
+

+ start_code_unit_column (attr_reader) +

+ +
+ +
+
+ +
+

+ start_line (attr_reader) +

+ +
+ +
+
+ +
+

+ type (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(start_line:, start_code_unit_column:, length:, type:, modifier:) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ replace_modifier(modifier_symbols) + + +

+ + + + + +
+ + +
+
+
+

+ replace_type(type_symbol) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html new file mode 100644 index 0000000000..4af86b243f --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html @@ -0,0 +1,446 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticTokenEncoder

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ compute_delta(token) + + +

+ + + + + +
+ + +
+
+
+

+ encode(tokens) + + +

+ + + + + +
+ + +
+
+
+

+ encode_modifiers(modifiers) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/UndefinedTokenType.html b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/UndefinedTokenType.html new file mode 100644 index 0000000000..27f4e77b8c --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/SemanticHighlighting/UndefinedTokenType.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::SemanticHighlighting::UndefinedTokenType

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/ResponseBuilders/SignatureHelp.html b/docs/RubyLsp/ResponseBuilders/SignatureHelp.html new file mode 100644 index 0000000000..968b645e6d --- /dev/null +++ b/docs/RubyLsp/ResponseBuilders/SignatureHelp.html @@ -0,0 +1,422 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::ResponseBuilders::SignatureHelp

+
+ +
+ + +
+

Constants

+ +
+
>ResponseType
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ replace(signature_help) + + +

+ + + + + +
+ + +
+
+
+

+ response() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Result.html b/docs/RubyLsp/Result.html new file mode 100644 index 0000000000..b16b42ab1d --- /dev/null +++ b/docs/RubyLsp/Result.html @@ -0,0 +1,406 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Result

+
+

The final result of running a request before its IO is finalized

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ response (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(id:, response:) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ to_hash() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/RubyDocument.html b/docs/RubyLsp/RubyDocument.html new file mode 100644 index 0000000000..7f091615f3 --- /dev/null +++ b/docs/RubyLsp/RubyDocument.html @@ -0,0 +1,341 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::RubyDocument

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ parse() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Server.html b/docs/RubyLsp/Server.html new file mode 100644 index 0000000000..69138640ac --- /dev/null +++ b/docs/RubyLsp/Server.html @@ -0,0 +1,513 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Server

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ global_state (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new(test_mode: false) + + +

+ + + +
+ Calls superclass method + RubyLsp::BaseServer::new +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ load_addons() + + +

+ + + + + +
+ + +
+
+
+

+ process_message(message) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/SetupBundler.html b/docs/RubyLsp/SetupBundler.html new file mode 100644 index 0000000000..7e69e2e13c --- /dev/null +++ b/docs/RubyLsp/SetupBundler.html @@ -0,0 +1,463 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::SetupBundler

+
+ +
+ + +
+

Constants

+ +
+
>FOUR_HOURS
+
+
+
+ + + + + + +
+

Public Class Methods

+ +
+
+

+ new(project_path, **options) + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ setup!() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/SetupBundler/BundleInstallFailure.html b/docs/RubyLsp/SetupBundler/BundleInstallFailure.html new file mode 100644 index 0000000000..14e9b23961 --- /dev/null +++ b/docs/RubyLsp/SetupBundler/BundleInstallFailure.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::SetupBundler::BundleInstallFailure

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/SetupBundler/BundleNotLocked.html b/docs/RubyLsp/SetupBundler/BundleNotLocked.html new file mode 100644 index 0000000000..015613ab03 --- /dev/null +++ b/docs/RubyLsp/SetupBundler/BundleNotLocked.html @@ -0,0 +1,301 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::SetupBundler::BundleNotLocked

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/Store.html b/docs/RubyLsp/Store.html new file mode 100644 index 0000000000..e57ebbe97b --- /dev/null +++ b/docs/RubyLsp/Store.html @@ -0,0 +1,599 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class RubyLsp::Store

+
+ +
+ + + + +
+

Attributes

+ + +
+

+ client_name (attr_accessor) +

+ +
+ +
+
+ +
+

+ experimental_features (attr_accessor) +

+ +
+ +
+
+ +
+

+ features_configuration (attr_accessor) +

+ +
+ +
+
+ +
+

+ supports_progress (attr_accessor) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ new() + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ cache_fetch(uri, request_name, &block) + + +

+ + + + + +
+ + +
+
+
+

+ clear() + + +

+ + + + + +
+ + +
+
+
+

+ delete(uri) + + +

+ + + + + +
+ + +
+
+
+

+ empty?() + + +

+ + + + + +
+ + +
+
+
+

+ get(uri) + + +

+ + + + + +
+ + +
+
+
+

+ push_edits(uri:, edits:, version:) + + +

+ + + + + +
+ + +
+
+
+

+ set(uri:, source:, version:, encoding: Encoding::UTF_8) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/RubyLsp/TestHelper.html b/docs/RubyLsp/TestHelper.html new file mode 100644 index 0000000000..1c5d25b601 --- /dev/null +++ b/docs/RubyLsp/TestHelper.html @@ -0,0 +1,367 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module RubyLsp::TestHelper

+
+ +
+ + + + + + + + + + + + +
+

Public Instance Methods

+ +
+
+

+ with_server(source = nil, uri = Kernel.URI("file:///fake.rb"), stub_no_typechecker: false, load_addons: true, &block) + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/SEMANTIC_HIGHLIGHTING_md.html b/docs/SEMANTIC_HIGHLIGHTING_md.html new file mode 100644 index 0000000000..62c70a4c36 --- /dev/null +++ b/docs/SEMANTIC_HIGHLIGHTING_md.html @@ -0,0 +1,360 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

Semantic highlighting

+ +

The Ruby LSP supports semantic highlighting. This feature informs editors about the right token types for each part of the code to allow for rich and accurate highlighting. The strategy taken by the Ruby LSP is to only return tokens for syntax that is ambiguous in Ruby (as opposed to all existing tokens) to optimize for performance.

+ +

An example of ambiguous syntax in Ruby are local variables and method calls. If you look at this line in isolation:

+ +
foo
+
+ +

it is not possible to tell if foo is a local variable or a method call. It depends on whether foo was assigned to something before or not. This is one scenario where semantic highlighting removes the ambiguity for themes, returning the correct token type by statically analyzing the code.

+ +

To enhance a theme’s Ruby syntax highlighting using the Ruby LSP, check the information below. You may also want to check out the Spinel theme as an example, which uses all of the Ruby LSP’s semantic highlighting information.

+ +

Token types

+ +

According to the LSP specification, language servers can either use token types and modifiers from the default list or contribute new semantic tokens of their own. Currently, the Ruby LSP does not contribute any new semantic tokens and only uses the ones contained in the default list.

+ +

Token list

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SyntaxType.ModifierNote
Sorbet annotation methods such as ‘let` or `cast`typeNot every annotation is handled
Method calls with any syntaxmethod
Constant references (including classes and modules)namespaceWe don’t yet differentiate between module and class references
Method definitionmethod.declaration
selfvariable.default_library
Method, block and lambda argumentsparameter
Class declarationclass.declaration
Module declarationclass.declaration
+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/TROUBLESHOOTING_md.html b/docs/TROUBLESHOOTING_md.html new file mode 100644 index 0000000000..d7a897912c --- /dev/null +++ b/docs/TROUBLESHOOTING_md.html @@ -0,0 +1,467 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

Troubleshooting

+ +

How the Ruby LSP activation works

+ +

The Ruby LSP extension runs inside VS Code’s NodeJS runtime, like any other VS Code extension. This means that environment variables that are properly set in your shell may not exist inside the NodeJS process. To run the LSP server with the same Ruby version as your projects, we need to properly set these environment variables, which is done by invoking your Ruby version manager.

+ +

The extension runs a command using your shell’s interactive mode, so that version managers configured in files such as ~/.zshrc are picked up automatically. The command then exports the environment information into JSON, so that we can inject it into the NodeJS process and appropriately set the Ruby version and gem installation paths.

+ +

As an example, the activation script for zsh using rbenv as a version manager will look something like this:

+ +
# Invoke zsh using interactive mode (loads ~/.zshrc) to run a single command
+# The command is `rbenv exec ruby`, which automatically sets all relevant environment variables and selects the
+# specified Ruby version
+# We then print the activated environment as JSON. We read that JSON from the NodeJS process to insert the needed
+# environment variables in order to run Ruby correctly
+/bin/zsh -ic 'rbenv exec ruby -rjson -e "puts JSON.dump(ENV.to_h)"'
+ +

After activating the Ruby version, we then proceed to boot the server gem (ruby-lsp). To avoid having users include the ruby-lsp in their Gemfile, we currently create a custom bundle under the .ruby-lsp directory inside your project. That directory contains another Gemfile, that includes the ruby-lsp gem in addition to your project’s dependencies. This approach allows us to automatically detect which formatter your project uses and which gems we need to index for features such as go to definition.

+ +
+

We are working with the RubyGems/Bundler team to have this type of mechanism properly supported from within Bundler itself, which is currently being experimented with in a plugin called bundler-compose. Once bundler-composeis production ready, the entire custom bundle created under the .ruby-lsp directory will go away and we’ll rely on Bundler to compose the LOAD_PATH including the ruby-lsp gem.

+
+ +

Common issues

+ +

There are two main sources of issues users typically face during activation: shell or Bundler related problems.

+ +

Shell issues

+ +

When the extension invokes the shell and loads its config file (~/.zshrc, ~/.bashrc, etc), it is susceptible to issues that may be caused by how the shell or its plugins interact with the NodeJS process. For example

+ + +

Additionally, some users experience an issue where VS Code selects the wrong shell, not respecting the SHELL environment variable. This usually ends up in having /bin/sh selected instead of your actual shell. If you are facing this problem, please try to

+ + +

More context about this issue on github.com/Shopify/vscode-ruby-lsp/issues/901.

+ +

Bundler issues

+ +

If the extension successfully activated the Ruby environment, it may still fail when trying to compose the custom bundle to run the server gem. This could be a regular Bundler issue, like not being able to satisfy dependencies due to a conflicting version requirement, or it could be a configuration issue.

+ +

For example, if the project has its linter/formatter put in an optional Gemfile group and that group is excluded in the Bundler configuration, the Ruby LSP will not be able to see those gems.

+ +
# Gemfile
+
+# ...
+
+# If Bundler is configured to exclude this group, the Ruby LSP will not be able to find `rubocop`
+group :optional_group do
+  gem "rubocop"
+end
+
+ +

If you experience Bundler related issues, double-check both your global and project-specific configuration to check if there’s anything that could be preventing the server from booting. You can print your Bundler configuration with

+ +
bundle config
+
+ +

Format on save dialogue won’t disappear

+ +

When VS Code requests formatting for a document, it opens a dialogue showing progress a couple of seconds after sending the request, closing it once the server has responded with the formatting result.

+ +

If you are seeing that the dialogue is not going away, this likely doesn’t mean that formatting is taking very long or hanging. It likely means that the server crashed or got into a corrupt state and is simply not responding to any requests, which means the dialogue will never go away.

+ +

This is always the result of a bug in the server. It should always fail gracefully without getting into a corrupt state that prevents it from responding to new requests coming from the editor. If you encounter this, please submit a bug report here including the steps that led to the server getting stuck.

+ +

Gem installation locations and permissions

+ +

To launch the Ruby LSP server, the ruby-lsp gem must be installed. And in order to automatically index your project’s dependencies, they must also be installed so that we can read, parse and analyze their source files. The ruby-lsp gem is installed via gem install (using RubyGems). The project dependencies are installed via bundle install (using Bundler).

+ +

If you use a non-default path to install your gems, please remember that RubyGems and Bundler require separate configurations to achieve that.

+ +

For example, if you configure BUNDLE_PATH to point to vendor/bundle so that gems are installed inside the same directory as your project, bundle install will automatically pick that up and install them in the right place. But gem install will not as it requires a different setting to achieve it.

+ +

You can apply your prefered installed locations for RubyGems by using the ~/.gemrc file. In that file, you can decide to either install it with --user-install or select a specific installation directory with --install-dir.

+ +
gem: --user-install
+# Or
+gem: --install-dir /my/preferred/path/for/gem/install
+ +

One scenario where this is useful is if the user doesn’t have permissions for the default gem installation directory and gem install fails. For example, when using the system Ruby on certain Linux distributions.

+ +
+

Using non-default gem installation paths may lead to other integration issues with version managers. For example, for Ruby 3.3.1 the default GEM_HOME is ~/.gem/ruby/3.3.0 (without the patch part of the version). However, chruby (and potentially other version managers) override GEM_HOME to include the version patch resulting in ~/.gem/ruby/3.3.1. When you install a gem using gem install --user-install, RubyGems ignores the GEM_HOME override and installs the gem inside ~/.gem/ruby/3.3.0. This results in executables not being found because chruby modified the PATH to only include executables installed under ~/.gem/ruby/3.3.1.

+ +

Similarly, the majority of version managers don’t read your ~/.gemrc configurations. If you use a custom installation with --install-dir, it’s unlikely that the version manager will know about it. This may result in the gem executables not being found.

+ +

Incompatibilities between RubyGems and version managers like this one are beyond the scope of the Ruby LSP and should be reported either to RubyGems or the respective version manager.

+
+ +

Developing on containers

+ +

See the documentation.

+ +

Diagnosing the problem

+ +

Many activation issues are specific to how your development environment is configured. If you can reproduce the problem you are seeing, including information about these steps is the best way to ensure that we can fix the issue in a timely manner. Please include the steps taken to diagnose in your bug report.

+ +

Check if the server is running

+ +

Check the . Does the server status say it’s running? If it is running, but you are missing certain features, please check our documentation to ensure we already added support for it.

+ +

If the feature is listed as fully supported, but not working for you, report an issue so that we can assist.

+ +

Check the VS Code output tab

+ +

Many of the activation steps taken are logged in the Ruby LSP channel of VS Code’s Output tab. Check the logs to see if any entries hint at what the issue might be. Did the extension select your preferred shell?

+ +

Did it select your preferred version manager? You can define which version manager to use with the "rubyLsp.rubyVersionManager" setting.

+ +

Enable logging

+ +

You can enable logging to the VS Code output tab, as described in the CONTRIBUTING docs.

+ +

Environment activation failed

+ +

We listed version manager related information and tips in this documentation.

+ +

My preferred version manager is not supported

+ +

We default to supporting the most common version managers, but that may not cover every single tool available. For these cases, we offer custom activation support. More context in the version manager documentation.

+ +

Try to run the Ruby activation manually

+ +

If the extension is failing to activate the Ruby environment, try running the same command manually in your shell to see if the issue is exclusively related with the extension. The exact command used for activation is printed to the output tab.

+ +

Try booting the server manually

+ +

If the Ruby environment seems to activate properly, but the server won’t boot, try to launch is manually from the terminal with

+ +
# Do not use bundle exec
+ruby-lsp
+
+ +

Is there any extra information given from booting the server manually? Or does it only fail when booting through the extension?

+ +

After troubleshooting

+ +

If after troubleshooting the Ruby LSP is still not initializing properly, please report an issue here so that we can assist in fixing the problem. Remember to include the steps taken when trying to diagnose the issue.

+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/URI.html b/docs/URI.html new file mode 100644 index 0000000000..4170825294 --- /dev/null +++ b/docs/URI.html @@ -0,0 +1,303 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

module URI

+
+

typed: strict

+
+ +
+ + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/URI/Generic.html b/docs/URI/Generic.html new file mode 100644 index 0000000000..ecbba933b9 --- /dev/null +++ b/docs/URI/Generic.html @@ -0,0 +1,396 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class URI::Generic

+
+ +
+ + + + + + + + +
+

Public Class Methods

+ +
+
+

+ from_path(path:, fragment: nil, scheme: "file") + + +

+ + + + + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ to_standardized_path() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/URI/Source.html b/docs/URI/Source.html new file mode 100644 index 0000000000..15b5b5b780 --- /dev/null +++ b/docs/URI/Source.html @@ -0,0 +1,492 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+

class URI::Source

+
+

Must be kept in sync with the one in Tapioca

+
+ +
+ + +
+

Constants

+ +
+
>COMPONENT
+
+
+
+ + +
+

Attributes

+ + +
+

+ gem_version (attr_reader) +

+ +
+ +
+
+ +
+ + + + + +
+

Public Class Methods

+ +
+
+

+ build(gem_name:, gem_version:, path:, line_number:) + + +

+ + + +
+ Calls superclass method + +
+ + +
+ + +
+
+ + + + + + +
+

Public Instance Methods

+ +
+
+

+ check_host(v) + + +

+ + + + + +
+ + +
+
+
+

+ set_path(v) + + +

+ + + + + +
+ + +
+
+
+

+ to_s() + + +

+ + + + + +
+ + +
+
+ + + + +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/VERSION_MANAGERS_md.html b/docs/VERSION_MANAGERS_md.html new file mode 100644 index 0000000000..ca53dcf212 --- /dev/null +++ b/docs/VERSION_MANAGERS_md.html @@ -0,0 +1,323 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + +
+

Version Managers

+ +

This document contains information and tips to help Ruby LSP’s VS Code extension work with your Ruby version manager.

+ +

asdf

+ +

If you use asdf and the VS Code extension fails to activate the environment (as described in this issue), you may resolve it by updating asdf to the latest version with asdf update, and then restart VS Code. If asdf was installed through Homebrew then you may need to first run brew update asdf.

+ +

Chruby

+ +

If you use chruby but don’t have a .ruby-version file in the project root, you can add .ruby-version to its parent folder as a fallback.

+ +

For example, if /projects/my_project doesn’t have .ruby-version, chruby would read /projects/.ruby-version instead.

+ +

Custom activation

+ +

If you’re using a different version manager that’s not supported by this extension or if you’re manually inserting the Ruby executable into the PATH, you will probably need to define custom activation so that the extension can find the correct Ruby.

+ +

For these cases, set rubyLsp.rubyVersionManager.identifier to "custom" and then set rubyLsp.customRubyCommand to a shell command that will activate the right Ruby version or add the Ruby bin folder to the PATH. Some examples:

+ +
{
+  // Don't forget to set the manager to custom when using this option
+  "rubyLsp.rubyVersionManager": {
+    "identifier": "custom",
+  },
+
+  // Using a different version manager than the ones included by default
+  "rubyLsp.customRubyCommand": "my_custom_version_manager activate",
+
+  // Adding a custom Ruby bin folder to the PATH
+  "rubyLsp.customRubyCommand": "PATH=/path/to/ruby/bin:$PATH",
+}
+
+
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/code_action_resolve.gif b/docs/code_action_resolve.gif new file mode 100644 index 0000000000..223ff9bee0 Binary files /dev/null and b/docs/code_action_resolve.gif differ diff --git a/docs/code_actions.gif b/docs/code_actions.gif new file mode 100644 index 0000000000..dbd22bb986 Binary files /dev/null and b/docs/code_actions.gif differ diff --git a/docs/code_lens.gif b/docs/code_lens.gif new file mode 100644 index 0000000000..6188fd7ddf Binary files /dev/null and b/docs/code_lens.gif differ diff --git a/docs/completion.gif b/docs/completion.gif new file mode 100644 index 0000000000..e3153bc451 Binary files /dev/null and b/docs/completion.gif differ diff --git a/docs/completion_resolve.gif b/docs/completion_resolve.gif new file mode 100644 index 0000000000..b0dbbe9d95 Binary files /dev/null and b/docs/completion_resolve.gif differ diff --git a/docs/created.rid b/docs/created.rid new file mode 100644 index 0000000000..f92e49f08e --- /dev/null +++ b/docs/created.rid @@ -0,0 +1,97 @@ +Mon, 10 Jun 2024 21:21:31 +0000 +ADDONS.md Mon, 10 Jun 2024 21:21:21 +0000 +CODE_OF_CONDUCT.md Mon, 10 Jun 2024 21:21:21 +0000 +CONTRIBUTING.md Mon, 10 Jun 2024 21:21:21 +0000 +DESIGN_AND_ROADMAP.md Mon, 10 Jun 2024 21:21:21 +0000 +EDITORS.md Mon, 10 Jun 2024 21:21:21 +0000 +README.md Mon, 10 Jun 2024 21:21:21 +0000 +SEMANTIC_HIGHLIGHTING.md Mon, 10 Jun 2024 21:21:21 +0000 +TROUBLESHOOTING.md Mon, 10 Jun 2024 21:21:21 +0000 +VERSION_MANAGERS.md Mon, 10 Jun 2024 21:21:21 +0000 +lib/core_ext/uri.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/rubocop/cop/ruby_lsp/use_language_server_aliases.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby-lsp.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/configuration.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/entry.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/index.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/indexable_path.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/location.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/ruby_indexer.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/classes_and_modules_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/configuration_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/constant_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/index_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/instance_variables_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/method_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/prefix_tree_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/rbs_indexer_test.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_indexer/test/test_case.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/addon.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/base_server.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/check_docs.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/document.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/global_state.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/internal.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/code_lens.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/completion.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/definition.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/document_highlight.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/document_link.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/document_symbol.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/folding_ranges.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/hover.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/inlay_hints.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/semantic_highlighting.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/listeners/signature_help.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/load_sorbet.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/node_context.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/parameter_scope.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/code_action_resolve.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/code_actions.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/code_lens.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/completion.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/completion_resolve.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/definition.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/diagnostics.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/document_highlight.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/document_link.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/document_symbol.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/folding_ranges.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/formatting.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/hover.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/inlay_hints.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/on_type_formatting.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/request.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/selection_ranges.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/semantic_highlighting.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/show_syntax_tree.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/signature_help.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/annotation.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/common.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/formatter.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/rubocop_diagnostic.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/rubocop_formatter.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/rubocop_runner.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/selection_range.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/sorbet.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/source_uri.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/support/syntax_tree_formatter.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/requests/workspace_symbol.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/response_builders.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/response_builders/collection_response_builder.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/response_builders/document_symbol.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/response_builders/hover.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/response_builders/response_builder.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/response_builders/semantic_highlighting.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/response_builders/signature_help.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/ruby_document.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/server.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/setup_bundler.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/store.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/test_helper.rb Mon, 10 Jun 2024 21:21:21 +0000 +lib/ruby_lsp/utils.rb Mon, 10 Jun 2024 21:21:21 +0000 diff --git a/docs/css/snapper.css b/docs/css/snapper.css new file mode 100644 index 0000000000..3b449e270c --- /dev/null +++ b/docs/css/snapper.css @@ -0,0 +1,499 @@ +:root { + --font-size: 1.55rem; + --line-height: 1.5; + + --space: calc(var(--font-size) * var(--line-height)); + + --font-sans: "SF Pro Display", system-ui, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif; + --font-mono: Menlo, 'Lucida Console', Consolas, Monaco, Cousine, 'Courier New', Courier, monospace; + + --red: rgb(255, 80, 80); +} + +html { + font-family: var(--font-sans); + font-size: 62.5%; + line-height: var(--line-height); + color: rgb(35, 50, 60); + box-sizing: border-box; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + font-size: var(--font-size); +} + +h1 { + margin-top: var(--space); + margin-bottom: calc(var(--space) * 2); + font-size: 2.35em; +} + +h2 { + margin-top: var(--space); + margin-bottom: var(--space); + font-size: 1.75em; +} + +h3 { + margin-top: var(--space); + margin-bottom: 0; + font-size: 1.35em; +} + +h4 { + margin-top: var(--space); + margin-bottom: 0; +} + +a { + color: var(--red); + text-underline-offset: 2px; +} + +a:has(code) { + text-decoration: none; + overflow-x: hidden; + margin-top: 0; + margin-right: 0; +} + +footer { + text-align: center; +} + +#main-container { + display: flex; + justify-content: flex-start; + transition: filter 0.2s ease-in-out; +} + +#main-container article { + width: 100%; + min-width: 500px; + padding: 0 25px 0 25px; +} + +h1:hover span a, +h2:hover span a, +h3:hover span a, +h4:hover span a, +h5:hover span a, +h6:hover span a { + color: var(--red); +} + +h1 span a, +h2 span a, +h3 span a, +h4 span a, +h5 span a, +h6 span a { + vertical-align: super; + font-size: 14px; + text-decoration: none; + color: transparent; +} + +pre, +code { + font-size: 0.85em; + font-family: var(--font-mono); + background-color: #F6F6F9; + border-radius: 5px; +} + +pre { + padding: calc(var(--space) / 2); + border: 1px solid #DFDFE8; +} + +code { + margin: 0 calc(var(--space) / 6); + padding: calc(var(--space) / 6); +} + +#nav { + border-right: 1px solid #E3E7EC; + width: auto; + padding: 15px 10px 0 0; +} + +#nav .separator { + color: #47484A; + font-size: 12px; + font-weight: 500; +} + +#navigation-list { + list-style-type: none; + color: black; + font-style: normal; + font-size: 16px; + font-weight: 400; + padding: 0 0 0 10px; + min-width: 250px; +} + +#navigation-list ul { + list-style-type: none; + padding-inline-start: 20px; +} + +#navigation-list a { + color: black; + text-decoration: none; +} + +#navigation-list a:hover { + color: var(--red); +} + +.index-entry, +.expandable-index-entry summary { + border-radius: 8px; + padding: 10px; + margin: 5px 0 5px 0; +} + +#getting-started { + padding: 10px 0 10px 0; +} + +.title { + white-space: nowrap; +} + +.title:before { + content: ""; + padding: 0 0.5em; + font-size: 0.8em; + font-weight: normal; + color: rgb(175, 190, 195); +} + +.expandable-index-entry:hover>details>summary, +.expandable-index-entry details[open]>summary { + background-color: #F6F6F9; +} + +summary::after { + content: " ›"; + font-size: 20px; + float: right; + /* padding-top: 4px; */ + position: relative; + bottom: 4px; +} + +details[open]>summary:after { + content: " ⌄"; + bottom: 8px; +} + +.link-list summary::after { + bottom: 10px; +} + +.link-list details[open]>summary:after { + bottom: 12px; +} + +details>summary { + list-style: none; +} + +details>summary::marker, +details>summary::-webkit-details-marker { + display: none; +} + +#side-search { + width: 90%; + border-radius: 7px; + outline: none; + border: 1px solid #0B1324; + padding: 10px; + box-shadow: 0px 1px 3.3px 0px #0B13241A; + box-shadow: 0px -1px 0px 0px #0000001A inset; + display: block; + margin: 15px auto; +} + +#search-modal { + filter: none; + display: none; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + align-items: center; + justify-content: center; + z-index: 9999; +} + +#search-modal-content { + background: white; + width: 70%; + height: 60%; + box-shadow: 0px 0px 1px 0px #42474C7A inset; + box-shadow: 0px 5px 8px 2px #36363636; + border: 1px solid #efefef; + border-radius: 9px; + overflow-y: scroll; + overflow-x: hidden; +} + +article section { + margin-top: calc(var(--space) * 3); +} + +#search-modal-content::-webkit-scrollbar { + display: none; +} + +#search-modal-input { + font-size: 20px; + line-height: 3; + color: #656C78; + border: none; + outline: none; + width: 100%; + padding: 15px 30px; + border-radius: 9px; +} + +#search-modal-input::placeholder { + color: #656C78; +} + +#search-results { + margin: 0; + border-top: 1px solid #E6E7E8; + width: 100%; + font-size: 16px; + list-style-type: none; + padding: 0; +} + +#search-results .result-link { + text-decoration: none; + width: 100%; + display: flex; + gap: calc(var(--space) / 2); + padding: 0 var(--space); + text-overflow: ellipsis; + white-space: nowrap; +} + +#search-results .result-link:hover, +#search-results .result-link:focus { + background-color: #F6F6F9; + outline: none; +} + +#search-results .result-link pre { + background-color: inherit; + margin: 16px 16px 16px 0; + padding: 0; + color: #828282; +} + +#search-results .result-link p { + color: #828282; +} + +#search-results .result-link .result-title { + margin: 16px 16px 16px 0; + flex-basis: 20%; + overflow: hidden; + text-overflow: ellipsis; + text-align: right; + color: #212121; +} + +/* Ride side-bar */ +@media screen and (max-width: 1100px) { + .right-section { + display: none !important; + } +} + +.right-side-bar-title { + font-size: 1em; + text-transform: uppercase; +} + +.right-section { + min-width: 300px; + height: 90vh; + padding: 1em; + padding-left: 2em; + overflow-y: scroll; + font-size: 0.8em; + color: #424242; + position: sticky; + top: 20px; +} + +.right-section nav a { + color: inherit; + text-decoration: none; +} + +.right-section nav a:hover { + color: var(--red); +} + +.right-section nav ul { + list-style-type: none; + padding: 0; +} + +.right-section nav ul li { + overflow-x: hidden; + text-overflow: ellipsis; + margin-bottom: 0.5em; +} + +.right-section nav ul ul { + padding-left: 1em; + border-left: #E3E7EC solid 1px; +} + +.right-section nav ul ul li { + padding: 1em 0 0 0; + margin-bottom: 0.25em; +} + +.right-side-bar-class { + text-transform: capitalize; +} + +.right-side-bar-class * { + text-transform: none; +} + +.right-side-bar-section { + text-transform: capitalize; +} + +.method-name { + margin: 0; + color: black; + font-weight: 400; +} + +.method-entry { + background-color: #F6F6F9; + border-radius: 5px; + margin: 25px 0 25px 0; + color: #4E5260; +} + +.method-info { + padding: 10px; +} + +.method-source { + font-family: var(--font-mono); + margin: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-color: white; +} + +hr { + border: 1px solid #E3E7EC; + margin-top: 15px; +} + +.description { + color: #4E5260; +} + +.attribute-type { + color: #656C78; +} + +.show-source { + outline: none; + border: none; + border-radius: 7px; + padding: 8px; + background-color: #F6F6F9; +} + +.section-title { + color: #47484A; + text-transform: uppercase; + font-size: 12px; + margin-bottom: 25px; +} + +.show-source:hover { + background-color: #DFDFE8; +} + +.method-name { + display: flex; + justify-content: space-between; + align-items: center; +} + +.hidden { + display: none; +} + +/* Code blocks syntax highlighting */ +.ruby-constant { + color: #4b82e9; +} + +.ruby-keyword { + color: #dd5555; + font-weight: bold; +} + +.ruby-ivar { + color: #837c7c; +} + +.ruby-operator { + color: black; +} + +.ruby-identifier { + color: black; +} + +.ruby-identifier.ruby-title { + color: #d464eb; +} + +.ruby-node { + color: black; +} + +.ruby-comment { + color: #bea17f; + font-style: italic; +} + +.ruby-regexp { + color: #a6cc5f; +} + +.ruby-value { + color: #6bb7b7; +} + +.ruby-string { + color: #5ac16c; +} diff --git a/docs/definition.gif b/docs/definition.gif new file mode 100644 index 0000000000..dc8c233321 Binary files /dev/null and b/docs/definition.gif differ diff --git a/docs/diagnostics.gif b/docs/diagnostics.gif new file mode 100644 index 0000000000..e2b9986629 Binary files /dev/null and b/docs/diagnostics.gif differ diff --git a/docs/document_highlight.gif b/docs/document_highlight.gif new file mode 100644 index 0000000000..eee18d8c9c Binary files /dev/null and b/docs/document_highlight.gif differ diff --git a/docs/document_link.gif b/docs/document_link.gif new file mode 100644 index 0000000000..6d7bb02da0 Binary files /dev/null and b/docs/document_link.gif differ diff --git a/docs/document_symbol.gif b/docs/document_symbol.gif new file mode 100644 index 0000000000..1b8e7b315c Binary files /dev/null and b/docs/document_symbol.gif differ diff --git a/docs/folding_ranges.gif b/docs/folding_ranges.gif new file mode 100644 index 0000000000..3d193bab10 Binary files /dev/null and b/docs/folding_ranges.gif differ diff --git a/docs/formatting.gif b/docs/formatting.gif new file mode 100644 index 0000000000..1a3f1ca352 Binary files /dev/null and b/docs/formatting.gif differ diff --git a/docs/hover.gif b/docs/hover.gif new file mode 100644 index 0000000000..82a33c5a35 Binary files /dev/null and b/docs/hover.gif differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000000..ac4601c419 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,443 @@ + + + + + + + Ruby LSP documentation + + + + + + + + + +
+ + + +
+ +

+ Ruby LSP logo +

+

+ +

Ruby LSP

+ +

The Ruby LSP is an implementation of the language server protocol for Ruby, used to improve rich features in editors. It is a part of a wider goal to provide a state-of-the-art experience to Ruby developers using modern standards for cross-editor features, documentation and debugging.

+ +

Want to discuss Ruby developer experience? Consider joining the public Ruby DX Slack workspace.

+ +

Features

+ +

+ +

The Ruby LSP features include

+ + +

Adding method support for definition, completion, hover and workspace symbol is partially supported, but not yet complete. Follow progress in github.com/Shopify/ruby-lsp/issues/899

+ +

See complete information about features here.

+ +

If you experience issues, please see the troubleshooting guide.

+ +

Usage

+ +

With VS Code

+ +

If using VS Code, all you have to do is install the Ruby LSP extension to get the extra features in the editor. Do not install the ruby-lsp gem manually.

+ +

For more information on using and configuring the extension, see vscode/README.md.

+ +

With other editors

+ +

See editors for community instructions on setting up the Ruby LSP, which current includes Emacs, Neovim, Sublime Text, and Zed.

+ +

The gem can be installed by doing

+ +
gem install ruby-lsp
+
+ +

and the language server can be launched running ruby-lsp (without bundle exec in order to properly hook into your project’s dependencies).

+ +

Documentation

+ +

See the documentation for more in-depth details about the supported features.

+ +

For creating rich themes for Ruby using the semantic highlighting information, see the semantic highlighting documentation.

+ +

Configuring code indexing

+ +

By default, the Ruby LSP indexes all Ruby files defined in the current project and all of its dependencies, including default gems, except for

+ + +

By creating a .index.yml file, these configurations can be overridden and tuned. Note that indexing dependent behavior, such as definition, hover, completion or workspace symbol will be impacted by the configurations placed here.

+ +
# Exclude files based on a given pattern. Often used to exclude test files or fixtures
+excluded_patterns:
+  - "**/spec/**/*.rb"
+
+# Include files based on a given pattern. Can be used to index Ruby files that use different extensions
+included_patterns:
+  - "**/bin/*"
+
+# Exclude gems by name. If a gem is never referenced in the project's code and is only used as a tool, excluding it will
+# speed up indexing and reduce the amount of results in features like definition or completion
+excluded_gems:
+  - rubocop
+  - pathname
+
+# Include gems by name. Normally used to include development gems that are excluded by default
+included_gems:
+  - prism
+ +

Addons

+ +

The Ruby LSP provides an addon system that allows other gems to enhance the base functionality with more editor features. This is the mechanism that powers addons like

+ + +

Other community driven addons can be found in rubygems by searching for the ruby-lsp prefix.

+ +

For instructions on how to create addons, see the addons documentation.

+ +

Learn More

+ + +

Contributing

+ +

Bug reports and pull requests are welcome on GitHub at github.com/Shopify/ruby-lsp. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

+ +

If you wish to contribute, see CONTRIBUTING for development instructions and check out our pinned roadmap issue for a list of tasks to get started.

+ +

License

+ +

The gem is available as open source under the terms of the MIT License.

+ +
+ +
+ +
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/docs/inlay_hints.gif b/docs/inlay_hints.gif new file mode 100644 index 0000000000..668e4029cd Binary files /dev/null and b/docs/inlay_hints.gif differ diff --git a/docs/js/search_index.js b/docs/js/search_index.js new file mode 100644 index 0000000000..cd299688ed --- /dev/null +++ b/docs/js/search_index.js @@ -0,0 +1 @@ +let searchIndex = {"addons":{"title":"ADDONS","namespace":"","path":"ADDONS_md.html","snippet":"

Ruby LSP addons\n\n

[!WARNING]\nThe Ruby LSP addon system is currently experimental and subject to changes ...\n

\n"},"code_of_conduct":{"title":"CODE_OF_CONDUCT","namespace":"","path":"CODE_OF_CONDUCT_md.html","snippet":"

Contributor Covenant Code of Conduct\n

Our Pledge\n

In the interest of fostering an open and welcoming environment, …\n"},"contributing":{"title":"CONTRIBUTING","namespace":"","path":"CONTRIBUTING_md.html","snippet":"

CONTRIBUTING\n

Testing changes\n

Tracing LSP requests and responses\n"},"design_and_roadmap":{"title":"DESIGN_AND_ROADMAP","namespace":"","path":"DESIGN_AND_ROADMAP_md.html","snippet":"

Ruby LSP design and roadmap\n

Design principles\n

Favoring common development setups\n"},"editors":{"title":"EDITORS","namespace":"","path":"EDITORS_md.html","snippet":"

Editors\n

This file contains community driven instructions on how to set up the Ruby LSP in editors other …\n\n

"},"readme":{"title":"README","namespace":"","path":"README_md.html","snippet":"

\n ...\n"},"semantic_highlighting":{"title":"SEMANTIC_HIGHLIGHTING","namespace":"","path":"SEMANTIC_HIGHLIGHTING_md.html","snippet":"

Semantic highlighting\n

The Ruby LSP supports semantic highlighting. This feature informs editors about …\n"},"troubleshooting":{"title":"TROUBLESHOOTING","namespace":"","path":"TROUBLESHOOTING_md.html","snippet":"

Troubleshooting\n

How the Ruby LSP activation works\n

The Ruby LSP extension runs inside VS Code’s NodeJS …\n"},"version_managers":{"title":"VERSION_MANAGERS","namespace":"","path":"VERSION_MANAGERS_md.html","snippet":"

Version Managers\n

This document contains information and tips to help Ruby LSP’s VS Code extension …\n"},"rubocop::cop::rubylsp::uselanguageserveraliases#on_new_investigation()":{"title":"on_new_investigation","namespace":"RuboCop::Cop::RubyLsp::UseLanguageServerAliases","path":"RuboCop/Cop/RubyLsp/UseLanguageServerAliases.html#method-i-on_new_investigation","snippet":""},"rubocop::cop::rubylsp::useregisterwithhandlermethod#on_new_investigation()":{"title":"on_new_investigation","namespace":"RuboCop::Cop::RubyLsp::UseRegisterWithHandlerMethod","path":"RuboCop/Cop/RubyLsp/UseRegisterWithHandlerMethod.html#method-i-on_new_investigation","snippet":""},"rubyindexer::classesandmodulestest#test_empty_statements_class()":{"title":"test_empty_statements_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_empty_statements_class","snippet":""},"rubyindexer::classesandmodulestest#test_conditional_class()":{"title":"test_conditional_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_conditional_class","snippet":""},"rubyindexer::classesandmodulestest#test_class_with_statements()":{"title":"test_class_with_statements","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_class_with_statements","snippet":""},"rubyindexer::classesandmodulestest#test_colon_colon_class()":{"title":"test_colon_colon_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_colon_colon_class","snippet":""},"rubyindexer::classesandmodulestest#test_colon_colon_class_inside_class()":{"title":"test_colon_colon_class_inside_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_colon_colon_class_inside_class","snippet":""},"rubyindexer::classesandmodulestest#test_namespaced_class()":{"title":"test_namespaced_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_namespaced_class","snippet":""},"rubyindexer::classesandmodulestest#test_dynamically_namespaced_class()":{"title":"test_dynamically_namespaced_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_dynamically_namespaced_class","snippet":""},"rubyindexer::classesandmodulestest#test_dynamically_namespaced_class_doesnt_affect_other_classes()":{"title":"test_dynamically_namespaced_class_doesnt_affect_other_classes","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_dynamically_namespaced_class_doesnt_affect_other_classes","snippet":""},"rubyindexer::classesandmodulestest#test_empty_statements_module()":{"title":"test_empty_statements_module","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_empty_statements_module","snippet":""},"rubyindexer::classesandmodulestest#test_conditional_module()":{"title":"test_conditional_module","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_conditional_module","snippet":""},"rubyindexer::classesandmodulestest#test_module_with_statements()":{"title":"test_module_with_statements","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_module_with_statements","snippet":""},"rubyindexer::classesandmodulestest#test_colon_colon_module()":{"title":"test_colon_colon_module","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_colon_colon_module","snippet":""},"rubyindexer::classesandmodulestest#test_namespaced_module()":{"title":"test_namespaced_module","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_namespaced_module","snippet":""},"rubyindexer::classesandmodulestest#test_dynamically_namespaced_module()":{"title":"test_dynamically_namespaced_module","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_dynamically_namespaced_module","snippet":""},"rubyindexer::classesandmodulestest#test_dynamically_namespaced_module_doesnt_affect_other_modules()":{"title":"test_dynamically_namespaced_module_doesnt_affect_other_modules","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_dynamically_namespaced_module_doesnt_affect_other_modules","snippet":""},"rubyindexer::classesandmodulestest#test_nested_modules_and_classes()":{"title":"test_nested_modules_and_classes","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_nested_modules_and_classes","snippet":""},"rubyindexer::classesandmodulestest#test_deleting_from_index_based_on_file_path()":{"title":"test_deleting_from_index_based_on_file_path","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_deleting_from_index_based_on_file_path","snippet":""},"rubyindexer::classesandmodulestest#test_comments_can_be_attached_to_a_class()":{"title":"test_comments_can_be_attached_to_a_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_comments_can_be_attached_to_a_class","snippet":""},"rubyindexer::classesandmodulestest#test_skips_comments_containing_invalid_encodings()":{"title":"test_skips_comments_containing_invalid_encodings","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_skips_comments_containing_invalid_encodings","snippet":""},"rubyindexer::classesandmodulestest#test_comments_can_be_attached_to_a_namespaced_class()":{"title":"test_comments_can_be_attached_to_a_namespaced_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_comments_can_be_attached_to_a_namespaced_class","snippet":""},"rubyindexer::classesandmodulestest#test_comments_can_be_attached_to_a_reopened_class()":{"title":"test_comments_can_be_attached_to_a_reopened_class","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_comments_can_be_attached_to_a_reopened_class","snippet":""},"rubyindexer::classesandmodulestest#test_comments_removes_the_leading_pound_and_space()":{"title":"test_comments_removes_the_leading_pound_and_space","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_comments_removes_the_leading_pound_and_space","snippet":""},"rubyindexer::classesandmodulestest#test_private_class_and_module_indexing()":{"title":"test_private_class_and_module_indexing","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_private_class_and_module_indexing","snippet":""},"rubyindexer::classesandmodulestest#test_keeping_track_of_super_classes()":{"title":"test_keeping_track_of_super_classes","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_keeping_track_of_super_classes","snippet":""},"rubyindexer::classesandmodulestest#test_keeping_track_of_included_modules()":{"title":"test_keeping_track_of_included_modules","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_keeping_track_of_included_modules","snippet":""},"rubyindexer::classesandmodulestest#test_keeping_track_of_prepended_modules()":{"title":"test_keeping_track_of_prepended_modules","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_keeping_track_of_prepended_modules","snippet":""},"rubyindexer::classesandmodulestest#test_keeping_track_of_extended_modules()":{"title":"test_keeping_track_of_extended_modules","namespace":"RubyIndexer::ClassesAndModulesTest","path":"RubyIndexer/ClassesAndModulesTest.html#method-i-test_keeping_track_of_extended_modules","snippet":""},"rubyindexer::configuration::new()":{"title":"new","namespace":"RubyIndexer::Configuration","path":"RubyIndexer/Configuration.html#method-c-new","snippet":""},"rubyindexer::configuration#indexables()":{"title":"indexables","namespace":"RubyIndexer::Configuration","path":"RubyIndexer/Configuration.html#method-i-indexables","snippet":""},"rubyindexer::configuration#magic_comment_regex()":{"title":"magic_comment_regex","namespace":"RubyIndexer::Configuration","path":"RubyIndexer/Configuration.html#method-i-magic_comment_regex","snippet":""},"rubyindexer::configuration#apply_config()":{"title":"apply_config","namespace":"RubyIndexer::Configuration","path":"RubyIndexer/Configuration.html#method-i-apply_config","snippet":""},"rubyindexer::configurationtest#setup()":{"title":"setup","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-setup","snippet":""},"rubyindexer::configurationtest#test_load_configuration_executes_configure_block()":{"title":"test_load_configuration_executes_configure_block","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_load_configuration_executes_configure_block","snippet":""},"rubyindexer::configurationtest#test_indexables_have_expanded_full_paths()":{"title":"test_indexables_have_expanded_full_paths","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_have_expanded_full_paths","snippet":""},"rubyindexer::configurationtest#test_indexables_only_includes_gem_require_paths()":{"title":"test_indexables_only_includes_gem_require_paths","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_only_includes_gem_require_paths","snippet":""},"rubyindexer::configurationtest#test_indexables_does_not_include_default_gem_path_when_in_bundle()":{"title":"test_indexables_does_not_include_default_gem_path_when_in_bundle","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_does_not_include_default_gem_path_when_in_bundle","snippet":""},"rubyindexer::configurationtest#test_indexables_includes_default_gems()":{"title":"test_indexables_includes_default_gems","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_includes_default_gems","snippet":""},"rubyindexer::configurationtest#test_indexables_includes_project_files()":{"title":"test_indexables_includes_project_files","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_includes_project_files","snippet":""},"rubyindexer::configurationtest#test_indexables_avoids_duplicates_if_bundle_path_is_inside_project()":{"title":"test_indexables_avoids_duplicates_if_bundle_path_is_inside_project","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_avoids_duplicates_if_bundle_path_is_inside_project","snippet":""},"rubyindexer::configurationtest#test_indexables_does_not_include_gems_own_installed_files()":{"title":"test_indexables_does_not_include_gems_own_installed_files","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_does_not_include_gems_own_installed_files","snippet":""},"rubyindexer::configurationtest#test_indexables_does_not_include_non_ruby_files_inside_rubylibdir()":{"title":"test_indexables_does_not_include_non_ruby_files_inside_rubylibdir","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_indexables_does_not_include_non_ruby_files_inside_rubylibdir","snippet":""},"rubyindexer::configurationtest#test_paths_are_unique()":{"title":"test_paths_are_unique","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_paths_are_unique","snippet":""},"rubyindexer::configurationtest#test_configuration_raises_for_unknown_keys()":{"title":"test_configuration_raises_for_unknown_keys","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_configuration_raises_for_unknown_keys","snippet":""},"rubyindexer::configurationtest#test_magic_comments_regex()":{"title":"test_magic_comments_regex","namespace":"RubyIndexer::ConfigurationTest","path":"RubyIndexer/ConfigurationTest.html#method-i-test_magic_comments_regex","snippet":""},"rubyindexer::constanttest#test_constant_writes()":{"title":"test_constant_writes","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_constant_writes","snippet":""},"rubyindexer::constanttest#test_constant_or_writes()":{"title":"test_constant_or_writes","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_constant_or_writes","snippet":""},"rubyindexer::constanttest#test_constant_path_writes()":{"title":"test_constant_path_writes","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_constant_path_writes","snippet":""},"rubyindexer::constanttest#test_constant_path_or_writes()":{"title":"test_constant_path_or_writes","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_constant_path_or_writes","snippet":""},"rubyindexer::constanttest#test_comments_for_constants()":{"title":"test_comments_for_constants","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_comments_for_constants","snippet":""},"rubyindexer::constanttest#test_variable_path_constants_are_ignored()":{"title":"test_variable_path_constants_are_ignored","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_variable_path_constants_are_ignored","snippet":""},"rubyindexer::constanttest#test_private_constant_indexing()":{"title":"test_private_constant_indexing","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_private_constant_indexing","snippet":""},"rubyindexer::constanttest#test_marking_constants_as_private_reopening_namespaces()":{"title":"test_marking_constants_as_private_reopening_namespaces","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_marking_constants_as_private_reopening_namespaces","snippet":""},"rubyindexer::constanttest#test_marking_constants_as_private_with_receiver()":{"title":"test_marking_constants_as_private_with_receiver","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_marking_constants_as_private_with_receiver","snippet":""},"rubyindexer::constanttest#test_indexing_constant_aliases()":{"title":"test_indexing_constant_aliases","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_indexing_constant_aliases","snippet":""},"rubyindexer::constanttest#test_aliasing_namespaces()":{"title":"test_aliasing_namespaces","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_aliasing_namespaces","snippet":""},"rubyindexer::constanttest#test_indexing_same_line_constant_aliases()":{"title":"test_indexing_same_line_constant_aliases","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_indexing_same_line_constant_aliases","snippet":""},"rubyindexer::constanttest#test_indexing_or_and_operator_nodes()":{"title":"test_indexing_or_and_operator_nodes","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_indexing_or_and_operator_nodes","snippet":""},"rubyindexer::constanttest#test_indexing_constant_targets()":{"title":"test_indexing_constant_targets","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_indexing_constant_targets","snippet":""},"rubyindexer::constanttest#test_indexing_constant_targets_with_splats()":{"title":"test_indexing_constant_targets_with_splats","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_indexing_constant_targets_with_splats","snippet":""},"rubyindexer::constanttest#test_indexing_destructuring_an_array()":{"title":"test_indexing_destructuring_an_array","namespace":"RubyIndexer::ConstantTest","path":"RubyIndexer/ConstantTest.html#method-i-test_indexing_destructuring_an_array","snippet":""},"rubyindexer::declarationlistener::new()":{"title":"new","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-c-new","snippet":""},"rubyindexer::declarationlistener#on_class_node_enter()":{"title":"on_class_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_class_node_enter","snippet":""},"rubyindexer::declarationlistener#on_class_node_leave()":{"title":"on_class_node_leave","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_class_node_leave","snippet":""},"rubyindexer::declarationlistener#on_module_node_enter()":{"title":"on_module_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_module_node_enter","snippet":""},"rubyindexer::declarationlistener#on_module_node_leave()":{"title":"on_module_node_leave","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_module_node_leave","snippet":""},"rubyindexer::declarationlistener#on_multi_write_node_enter()":{"title":"on_multi_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_multi_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_path_write_node_enter()":{"title":"on_constant_path_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_path_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_path_or_write_node_enter()":{"title":"on_constant_path_or_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_path_or_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_path_operator_write_node_enter()":{"title":"on_constant_path_operator_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_path_operator_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_path_and_write_node_enter()":{"title":"on_constant_path_and_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_path_and_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_write_node_enter()":{"title":"on_constant_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_or_write_node_enter()":{"title":"on_constant_or_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_or_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_and_write_node_enter()":{"title":"on_constant_and_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_and_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_constant_operator_write_node_enter()":{"title":"on_constant_operator_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_constant_operator_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_call_node_enter","snippet":""},"rubyindexer::declarationlistener#on_call_node_leave()":{"title":"on_call_node_leave","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_call_node_leave","snippet":""},"rubyindexer::declarationlistener#on_def_node_enter()":{"title":"on_def_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_def_node_enter","snippet":""},"rubyindexer::declarationlistener#on_def_node_leave()":{"title":"on_def_node_leave","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_def_node_leave","snippet":""},"rubyindexer::declarationlistener#on_instance_variable_write_node_enter()":{"title":"on_instance_variable_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_instance_variable_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_instance_variable_and_write_node_enter()":{"title":"on_instance_variable_and_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_instance_variable_and_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_instance_variable_operator_write_node_enter()":{"title":"on_instance_variable_operator_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_instance_variable_operator_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_instance_variable_or_write_node_enter()":{"title":"on_instance_variable_or_write_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_instance_variable_or_write_node_enter","snippet":""},"rubyindexer::declarationlistener#on_instance_variable_target_node_enter()":{"title":"on_instance_variable_target_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_instance_variable_target_node_enter","snippet":""},"rubyindexer::declarationlistener#on_alias_method_node_enter()":{"title":"on_alias_method_node_enter","namespace":"RubyIndexer::DeclarationListener","path":"RubyIndexer/DeclarationListener.html#method-i-on_alias_method_node_enter","snippet":""},"rubyindexer::entry::new()":{"title":"new","namespace":"RubyIndexer::Entry","path":"RubyIndexer/Entry.html#method-c-new","snippet":""},"rubyindexer::entry#private?()":{"title":"private?","namespace":"RubyIndexer::Entry","path":"RubyIndexer/Entry.html#method-i-private-3F","snippet":""},"rubyindexer::entry#file_name()":{"title":"file_name","namespace":"RubyIndexer::Entry","path":"RubyIndexer/Entry.html#method-i-file_name","snippet":""},"rubyindexer::entry::accessor#parameters()":{"title":"parameters","namespace":"RubyIndexer::Entry::Accessor","path":"RubyIndexer/Entry/Accessor.html#method-i-parameters","snippet":""},"rubyindexer::entry::alias::new()":{"title":"new","namespace":"RubyIndexer::Entry::Alias","path":"RubyIndexer/Entry/Alias.html#method-c-new","snippet":""},"rubyindexer::entry::blockparameter#decorated_name()":{"title":"decorated_name","namespace":"RubyIndexer::Entry::BlockParameter","path":"RubyIndexer/Entry/BlockParameter.html#method-i-decorated_name","snippet":""},"rubyindexer::entry::class::new()":{"title":"new","namespace":"RubyIndexer::Entry::Class","path":"RubyIndexer/Entry/Class.html#method-c-new","snippet":""},"rubyindexer::entry::class#ancestor_hash()":{"title":"ancestor_hash","namespace":"RubyIndexer::Entry::Class","path":"RubyIndexer/Entry/Class.html#method-i-ancestor_hash","snippet":""},"rubyindexer::entry::instancevariable::new()":{"title":"new","namespace":"RubyIndexer::Entry::InstanceVariable","path":"RubyIndexer/Entry/InstanceVariable.html#method-c-new","snippet":""},"rubyindexer::entry::keywordparameter#decorated_name()":{"title":"decorated_name","namespace":"RubyIndexer::Entry::KeywordParameter","path":"RubyIndexer/Entry/KeywordParameter.html#method-i-decorated_name","snippet":""},"rubyindexer::entry::keywordrestparameter#decorated_name()":{"title":"decorated_name","namespace":"RubyIndexer::Entry::KeywordRestParameter","path":"RubyIndexer/Entry/KeywordRestParameter.html#method-i-decorated_name","snippet":""},"rubyindexer::entry::member::new()":{"title":"new","namespace":"RubyIndexer::Entry::Member","path":"RubyIndexer/Entry/Member.html#method-c-new","snippet":""},"rubyindexer::entry::member#parameters()":{"title":"parameters","namespace":"RubyIndexer::Entry::Member","path":"RubyIndexer/Entry/Member.html#method-i-parameters","snippet":""},"rubyindexer::entry::method::new()":{"title":"new","namespace":"RubyIndexer::Entry::Method","path":"RubyIndexer/Entry/Method.html#method-c-new","snippet":""},"rubyindexer::entry::moduleoperation::new()":{"title":"new","namespace":"RubyIndexer::Entry::ModuleOperation","path":"RubyIndexer/Entry/ModuleOperation.html#method-c-new","snippet":""},"rubyindexer::entry::namespace::new()":{"title":"new","namespace":"RubyIndexer::Entry::Namespace","path":"RubyIndexer/Entry/Namespace.html#method-c-new","snippet":""},"rubyindexer::entry::namespace#mixin_operation_module_names()":{"title":"mixin_operation_module_names","namespace":"RubyIndexer::Entry::Namespace","path":"RubyIndexer/Entry/Namespace.html#method-i-mixin_operation_module_names","snippet":""},"rubyindexer::entry::namespace#mixin_operations()":{"title":"mixin_operations","namespace":"RubyIndexer::Entry::Namespace","path":"RubyIndexer/Entry/Namespace.html#method-i-mixin_operations","snippet":""},"rubyindexer::entry::namespace#ancestor_hash()":{"title":"ancestor_hash","namespace":"RubyIndexer::Entry::Namespace","path":"RubyIndexer/Entry/Namespace.html#method-i-ancestor_hash","snippet":""},"rubyindexer::entry::optionalkeywordparameter#decorated_name()":{"title":"decorated_name","namespace":"RubyIndexer::Entry::OptionalKeywordParameter","path":"RubyIndexer/Entry/OptionalKeywordParameter.html#method-i-decorated_name","snippet":""},"rubyindexer::entry::parameter::new()":{"title":"new","namespace":"RubyIndexer::Entry::Parameter","path":"RubyIndexer/Entry/Parameter.html#method-c-new","snippet":""},"rubyindexer::entry::restparameter#decorated_name()":{"title":"decorated_name","namespace":"RubyIndexer::Entry::RestParameter","path":"RubyIndexer/Entry/RestParameter.html#method-i-decorated_name","snippet":""},"rubyindexer::entry::unresolvedalias::new()":{"title":"new","namespace":"RubyIndexer::Entry::UnresolvedAlias","path":"RubyIndexer/Entry/UnresolvedAlias.html#method-c-new","snippet":""},"rubyindexer::entry::unresolvedmethodalias::new()":{"title":"new","namespace":"RubyIndexer::Entry::UnresolvedMethodAlias","path":"RubyIndexer/Entry/UnresolvedMethodAlias.html#method-c-new","snippet":""},"rubyindexer::index::new()":{"title":"new","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-c-new","snippet":""},"rubyindexer::index#delete()":{"title":"delete","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-delete","snippet":""},"rubyindexer::index#<<()":{"title":"<<","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-3C-3C","snippet":""},"rubyindexer::index#[]()":{"title":"[]","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-5B-5D","snippet":""},"rubyindexer::index#search_require_paths()":{"title":"search_require_paths","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-search_require_paths","snippet":""},"rubyindexer::index#prefix_search()":{"title":"prefix_search","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-prefix_search","snippet":""},"rubyindexer::index#fuzzy_search()":{"title":"fuzzy_search","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-fuzzy_search","snippet":""},"rubyindexer::index#method_completion_candidates()":{"title":"method_completion_candidates","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-method_completion_candidates","snippet":""},"rubyindexer::index#resolve()":{"title":"resolve","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-resolve","snippet":""},"rubyindexer::index#index_all()":{"title":"index_all","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-index_all","snippet":""},"rubyindexer::index#index_single()":{"title":"index_single","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-index_single","snippet":""},"rubyindexer::index#follow_aliased_namespace()":{"title":"follow_aliased_namespace","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-follow_aliased_namespace","snippet":""},"rubyindexer::index#resolve_method()":{"title":"resolve_method","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-resolve_method","snippet":""},"rubyindexer::index#linearized_ancestors_of()":{"title":"linearized_ancestors_of","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-linearized_ancestors_of","snippet":""},"rubyindexer::index#resolve_instance_variable()":{"title":"resolve_instance_variable","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-resolve_instance_variable","snippet":""},"rubyindexer::index#instance_variable_completion_candidates()":{"title":"instance_variable_completion_candidates","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-instance_variable_completion_candidates","snippet":""},"rubyindexer::index#handle_change()":{"title":"handle_change","namespace":"RubyIndexer::Index","path":"RubyIndexer/Index.html#method-i-handle_change","snippet":""},"rubyindexer::indextest#test_deleting_one_entry_for_a_class()":{"title":"test_deleting_one_entry_for_a_class","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_deleting_one_entry_for_a_class","snippet":""},"rubyindexer::indextest#test_deleting_all_entries_for_a_class()":{"title":"test_deleting_all_entries_for_a_class","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_deleting_all_entries_for_a_class","snippet":""},"rubyindexer::indextest#test_index_resolve()":{"title":"test_index_resolve","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_index_resolve","snippet":""},"rubyindexer::indextest#test_accessing_with_colon_colon_prefix()":{"title":"test_accessing_with_colon_colon_prefix","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_accessing_with_colon_colon_prefix","snippet":""},"rubyindexer::indextest#test_fuzzy_search()":{"title":"test_fuzzy_search","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_fuzzy_search","snippet":""},"rubyindexer::indextest#test_index_single_ignores_directories()":{"title":"test_index_single_ignores_directories","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_index_single_ignores_directories","snippet":""},"rubyindexer::indextest#test_searching_for_require_paths()":{"title":"test_searching_for_require_paths","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_searching_for_require_paths","snippet":""},"rubyindexer::indextest#test_searching_for_entries_based_on_prefix()":{"title":"test_searching_for_entries_based_on_prefix","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_searching_for_entries_based_on_prefix","snippet":""},"rubyindexer::indextest#test_resolve_normalizes_top_level_names()":{"title":"test_resolve_normalizes_top_level_names","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolve_normalizes_top_level_names","snippet":""},"rubyindexer::indextest#test_resolving_aliases_to_non_existing_constants_with_conflicting_names()":{"title":"test_resolving_aliases_to_non_existing_constants_with_conflicting_names","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_aliases_to_non_existing_constants_with_conflicting_names","snippet":""},"rubyindexer::indextest#test_visitor_does_not_visit_unnecessary_nodes()":{"title":"test_visitor_does_not_visit_unnecessary_nodes","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_visitor_does_not_visit_unnecessary_nodes","snippet":""},"rubyindexer::indextest#test_resolve_method_with_known_receiver()":{"title":"test_resolve_method_with_known_receiver","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolve_method_with_known_receiver","snippet":""},"rubyindexer::indextest#test_resolve_method_with_class_name_conflict()":{"title":"test_resolve_method_with_class_name_conflict","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolve_method_with_class_name_conflict","snippet":""},"rubyindexer::indextest#test_resolve_method_attribute()":{"title":"test_resolve_method_attribute","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolve_method_attribute","snippet":""},"rubyindexer::indextest#test_resolve_method_with_two_definitions()":{"title":"test_resolve_method_with_two_definitions","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolve_method_with_two_definitions","snippet":""},"rubyindexer::indextest#test_prefix_search_for_methods()":{"title":"test_prefix_search_for_methods","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_prefix_search_for_methods","snippet":""},"rubyindexer::indextest#test_indexing_prism_fixtures_succeeds()":{"title":"test_indexing_prism_fixtures_succeeds","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_indexing_prism_fixtures_succeeds","snippet":""},"rubyindexer::indextest#test_index_single_does_not_fail_for_non_existing_file()":{"title":"test_index_single_does_not_fail_for_non_existing_file","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_index_single_does_not_fail_for_non_existing_file","snippet":""},"rubyindexer::indextest#test_linearized_ancestors_basic_ordering()":{"title":"test_linearized_ancestors_basic_ordering","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearized_ancestors_basic_ordering","snippet":""},"rubyindexer::indextest#test_linearized_ancestors()":{"title":"test_linearized_ancestors","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearized_ancestors","snippet":""},"rubyindexer::indextest#test_linearized_ancestors_duplicates()":{"title":"test_linearized_ancestors_duplicates","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearized_ancestors_duplicates","snippet":""},"rubyindexer::indextest#test_linearizing_ancestors_is_cached()":{"title":"test_linearizing_ancestors_is_cached","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearizing_ancestors_is_cached","snippet":""},"rubyindexer::indextest#test_duplicate_prepend_include()":{"title":"test_duplicate_prepend_include","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_duplicate_prepend_include","snippet":""},"rubyindexer::indextest#test_linearizing_ancestors_handles_circular_parent_class()":{"title":"test_linearizing_ancestors_handles_circular_parent_class","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearizing_ancestors_handles_circular_parent_class","snippet":""},"rubyindexer::indextest#test_ancestors_linearization_complex_prepend_duplication()":{"title":"test_ancestors_linearization_complex_prepend_duplication","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_ancestors_linearization_complex_prepend_duplication","snippet":""},"rubyindexer::indextest#test_ancestors_linearization_complex_include_duplication()":{"title":"test_ancestors_linearization_complex_include_duplication","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_ancestors_linearization_complex_include_duplication","snippet":""},"rubyindexer::indextest#test_linearizing_ancestors_that_need_to_be_resolved()":{"title":"test_linearizing_ancestors_that_need_to_be_resolved","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearizing_ancestors_that_need_to_be_resolved","snippet":""},"rubyindexer::indextest#test_linearizing_ancestors_for_non_existing_namespaces()":{"title":"test_linearizing_ancestors_for_non_existing_namespaces","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearizing_ancestors_for_non_existing_namespaces","snippet":""},"rubyindexer::indextest#test_linearizing_circular_ancestors()":{"title":"test_linearizing_circular_ancestors","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearizing_circular_ancestors","snippet":""},"rubyindexer::indextest#test_linearizing_circular_aliased_dependency()":{"title":"test_linearizing_circular_aliased_dependency","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_linearizing_circular_aliased_dependency","snippet":""},"rubyindexer::indextest#test_resolving_an_inherited_method()":{"title":"test_resolving_an_inherited_method","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_an_inherited_method","snippet":""},"rubyindexer::indextest#test_resolving_an_inherited_method_lands_on_first_match()":{"title":"test_resolving_an_inherited_method_lands_on_first_match","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_an_inherited_method_lands_on_first_match","snippet":""},"rubyindexer::indextest#test_handle_change_clears_ancestor_cache_if_tree_changed()":{"title":"test_handle_change_clears_ancestor_cache_if_tree_changed","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_handle_change_clears_ancestor_cache_if_tree_changed","snippet":""},"rubyindexer::indextest#test_handle_change_does_not_clear_ancestor_cache_if_tree_not_changed()":{"title":"test_handle_change_does_not_clear_ancestor_cache_if_tree_not_changed","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_handle_change_does_not_clear_ancestor_cache_if_tree_not_changed","snippet":""},"rubyindexer::indextest#test_handle_change_clears_ancestor_cache_if_parent_class_changed()":{"title":"test_handle_change_clears_ancestor_cache_if_parent_class_changed","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_handle_change_clears_ancestor_cache_if_parent_class_changed","snippet":""},"rubyindexer::indextest#test_resolving_inherited_constants()":{"title":"test_resolving_inherited_constants","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_inherited_constants","snippet":""},"rubyindexer::indextest#test_resolving_inherited_alised_namespace()":{"title":"test_resolving_inherited_alised_namespace","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_inherited_alised_namespace","snippet":""},"rubyindexer::indextest#test_resolving_same_constant_from_different_scopes()":{"title":"test_resolving_same_constant_from_different_scopes","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_same_constant_from_different_scopes","snippet":""},"rubyindexer::indextest#test_resolving_prepended_constants()":{"title":"test_resolving_prepended_constants","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_prepended_constants","snippet":""},"rubyindexer::indextest#test_resolving_constants_favors_ancestors_over_top_level()":{"title":"test_resolving_constants_favors_ancestors_over_top_level","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_constants_favors_ancestors_over_top_level","snippet":""},"rubyindexer::indextest#test_resolving_circular_alias()":{"title":"test_resolving_circular_alias","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_circular_alias","snippet":""},"rubyindexer::indextest#test_resolving_circular_alias_three_levels()":{"title":"test_resolving_circular_alias_three_levels","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_circular_alias_three_levels","snippet":""},"rubyindexer::indextest#test_resolving_top_level_compact_reference()":{"title":"test_resolving_top_level_compact_reference","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_top_level_compact_reference","snippet":""},"rubyindexer::indextest#test_resolving_references_with_redundant_namespaces()":{"title":"test_resolving_references_with_redundant_namespaces","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_references_with_redundant_namespaces","snippet":""},"rubyindexer::indextest#test_resolving_qualified_references()":{"title":"test_resolving_qualified_references","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_qualified_references","snippet":""},"rubyindexer::indextest#test_resolving_unqualified_references()":{"title":"test_resolving_unqualified_references","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_unqualified_references","snippet":""},"rubyindexer::indextest#test_resolving_references_with_only_top_level_declaration()":{"title":"test_resolving_references_with_only_top_level_declaration","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_resolving_references_with_only_top_level_declaration","snippet":""},"rubyindexer::indextest#test_instance_variables_completions_from_different_owners_with_conflicting_names()":{"title":"test_instance_variables_completions_from_different_owners_with_conflicting_names","namespace":"RubyIndexer::IndexTest","path":"RubyIndexer/IndexTest.html#method-i-test_instance_variables_completions_from_different_owners_with_conflicting_names","snippet":""},"rubyindexer::indexablepath::new()":{"title":"new","namespace":"RubyIndexer::IndexablePath","path":"RubyIndexer/IndexablePath.html#method-c-new","snippet":""},"rubyindexer::instancevariabletest#test_instance_variable_write()":{"title":"test_instance_variable_write","namespace":"RubyIndexer::InstanceVariableTest","path":"RubyIndexer/InstanceVariableTest.html#method-i-test_instance_variable_write","snippet":""},"rubyindexer::instancevariabletest#test_instance_variable_and_write()":{"title":"test_instance_variable_and_write","namespace":"RubyIndexer::InstanceVariableTest","path":"RubyIndexer/InstanceVariableTest.html#method-i-test_instance_variable_and_write","snippet":""},"rubyindexer::instancevariabletest#test_instance_variable_operator_write()":{"title":"test_instance_variable_operator_write","namespace":"RubyIndexer::InstanceVariableTest","path":"RubyIndexer/InstanceVariableTest.html#method-i-test_instance_variable_operator_write","snippet":""},"rubyindexer::instancevariabletest#test_instance_variable_or_write()":{"title":"test_instance_variable_or_write","namespace":"RubyIndexer::InstanceVariableTest","path":"RubyIndexer/InstanceVariableTest.html#method-i-test_instance_variable_or_write","snippet":""},"rubyindexer::instancevariabletest#test_instance_variable_target()":{"title":"test_instance_variable_target","namespace":"RubyIndexer::InstanceVariableTest","path":"RubyIndexer/InstanceVariableTest.html#method-i-test_instance_variable_target","snippet":""},"rubyindexer::instancevariabletest#test_empty_name_instance_variables()":{"title":"test_empty_name_instance_variables","namespace":"RubyIndexer::InstanceVariableTest","path":"RubyIndexer/InstanceVariableTest.html#method-i-test_empty_name_instance_variables","snippet":""},"rubyindexer::instancevariabletest#test_class_instance_variables()":{"title":"test_class_instance_variables","namespace":"RubyIndexer::InstanceVariableTest","path":"RubyIndexer/InstanceVariableTest.html#method-i-test_class_instance_variables","snippet":""},"rubyindexer::location::new()":{"title":"new","namespace":"RubyIndexer::Location","path":"RubyIndexer/Location.html#method-c-new","snippet":""},"rubyindexer::methodtest#test_method_with_no_parameters()":{"title":"test_method_with_no_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_no_parameters","snippet":""},"rubyindexer::methodtest#test_conditional_method()":{"title":"test_conditional_method","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_conditional_method","snippet":""},"rubyindexer::methodtest#test_singleton_method_using_self_receiver()":{"title":"test_singleton_method_using_self_receiver","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_singleton_method_using_self_receiver","snippet":""},"rubyindexer::methodtest#test_singleton_method_using_other_receiver_is_not_indexed()":{"title":"test_singleton_method_using_other_receiver_is_not_indexed","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_singleton_method_using_other_receiver_is_not_indexed","snippet":""},"rubyindexer::methodtest#test_method_under_dynamic_class_or_module()":{"title":"test_method_under_dynamic_class_or_module","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_under_dynamic_class_or_module","snippet":""},"rubyindexer::methodtest#test_visibility_tracking()":{"title":"test_visibility_tracking","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_visibility_tracking","snippet":""},"rubyindexer::methodtest#test_visibility_tracking_with_nested_class_or_modules()":{"title":"test_visibility_tracking_with_nested_class_or_modules","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_visibility_tracking_with_nested_class_or_modules","snippet":""},"rubyindexer::methodtest#test_method_with_parameters()":{"title":"test_method_with_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_destructed_parameters()":{"title":"test_method_with_destructed_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_destructed_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_optional_parameters()":{"title":"test_method_with_optional_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_optional_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_keyword_parameters()":{"title":"test_method_with_keyword_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_keyword_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_rest_and_keyword_rest_parameters()":{"title":"test_method_with_rest_and_keyword_rest_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_rest_and_keyword_rest_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_post_parameters()":{"title":"test_method_with_post_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_post_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_destructured_rest_parameters()":{"title":"test_method_with_destructured_rest_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_destructured_rest_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_block_parameters()":{"title":"test_method_with_block_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_block_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_anonymous_rest_parameters()":{"title":"test_method_with_anonymous_rest_parameters","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_anonymous_rest_parameters","snippet":""},"rubyindexer::methodtest#test_method_with_forbidden_keyword_splat_parameter()":{"title":"test_method_with_forbidden_keyword_splat_parameter","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_method_with_forbidden_keyword_splat_parameter","snippet":""},"rubyindexer::methodtest#test_keeps_track_of_method_owner()":{"title":"test_keeps_track_of_method_owner","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_keeps_track_of_method_owner","snippet":""},"rubyindexer::methodtest#test_keeps_track_of_attributes()":{"title":"test_keeps_track_of_attributes","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_keeps_track_of_attributes","snippet":""},"rubyindexer::methodtest#test_ignores_attributes_invoked_on_constant()":{"title":"test_ignores_attributes_invoked_on_constant","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_ignores_attributes_invoked_on_constant","snippet":""},"rubyindexer::methodtest#test_properly_tracks_multiple_levels_of_nesting()":{"title":"test_properly_tracks_multiple_levels_of_nesting","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_properly_tracks_multiple_levels_of_nesting","snippet":""},"rubyindexer::methodtest#test_keeps_track_of_aliases()":{"title":"test_keeps_track_of_aliases","namespace":"RubyIndexer::MethodTest","path":"RubyIndexer/MethodTest.html#method-i-test_keeps_track_of_aliases","snippet":""},"rubyindexer::prefixtree::new()":{"title":"new","namespace":"RubyIndexer::PrefixTree","path":"RubyIndexer/PrefixTree.html#method-c-new","snippet":""},"rubyindexer::prefixtree#search()":{"title":"search","namespace":"RubyIndexer::PrefixTree","path":"RubyIndexer/PrefixTree.html#method-i-search","snippet":""},"rubyindexer::prefixtree#insert()":{"title":"insert","namespace":"RubyIndexer::PrefixTree","path":"RubyIndexer/PrefixTree.html#method-i-insert","snippet":""},"rubyindexer::prefixtree#delete()":{"title":"delete","namespace":"RubyIndexer::PrefixTree","path":"RubyIndexer/PrefixTree.html#method-i-delete","snippet":""},"rubyindexer::prefixtree::node::new()":{"title":"new","namespace":"RubyIndexer::PrefixTree::Node","path":"RubyIndexer/PrefixTree/Node.html#method-c-new","snippet":""},"rubyindexer::prefixtree::node#collect()":{"title":"collect","namespace":"RubyIndexer::PrefixTree::Node","path":"RubyIndexer/PrefixTree/Node.html#method-i-collect","snippet":""},"rubyindexer::prefixtreetest#test_empty()":{"title":"test_empty","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_empty","snippet":""},"rubyindexer::prefixtreetest#test_single_item()":{"title":"test_single_item","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_single_item","snippet":""},"rubyindexer::prefixtreetest#test_multiple_items()":{"title":"test_multiple_items","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_multiple_items","snippet":""},"rubyindexer::prefixtreetest#test_multiple_prefixes()":{"title":"test_multiple_prefixes","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_multiple_prefixes","snippet":""},"rubyindexer::prefixtreetest#test_multiple_prefixes_with_shuffled_order()":{"title":"test_multiple_prefixes_with_shuffled_order","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_multiple_prefixes_with_shuffled_order","snippet":""},"rubyindexer::prefixtreetest#test_deletion()":{"title":"test_deletion","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_deletion","snippet":""},"rubyindexer::prefixtreetest#test_delete_does_not_impact_other_keys_with_the_same_value()":{"title":"test_delete_does_not_impact_other_keys_with_the_same_value","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_delete_does_not_impact_other_keys_with_the_same_value","snippet":""},"rubyindexer::prefixtreetest#test_deleted_node_is_removed_from_the_tree()":{"title":"test_deleted_node_is_removed_from_the_tree","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_deleted_node_is_removed_from_the_tree","snippet":""},"rubyindexer::prefixtreetest#test_deleting_non_terminal_nodes()":{"title":"test_deleting_non_terminal_nodes","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_deleting_non_terminal_nodes","snippet":""},"rubyindexer::prefixtreetest#test_overriding_values()":{"title":"test_overriding_values","namespace":"RubyIndexer::PrefixTreeTest","path":"RubyIndexer/PrefixTreeTest.html#method-i-test_overriding_values","snippet":""},"rubyindexer::rbsindexer::new()":{"title":"new","namespace":"RubyIndexer::RBSIndexer","path":"RubyIndexer/RBSIndexer.html#method-c-new","snippet":""},"rubyindexer::rbsindexer#index_core_classes()":{"title":"index_core_classes","namespace":"RubyIndexer::RBSIndexer","path":"RubyIndexer/RBSIndexer.html#method-i-index_core_classes","snippet":""},"rubyindexer::rbsindexertest#setup()":{"title":"setup","namespace":"RubyIndexer::RBSIndexerTest","path":"RubyIndexer/RBSIndexerTest.html#method-i-setup","snippet":""},"rubyindexer::rbsindexertest#test_index_core_classes()":{"title":"test_index_core_classes","namespace":"RubyIndexer::RBSIndexerTest","path":"RubyIndexer/RBSIndexerTest.html#method-i-test_index_core_classes","snippet":""},"rubyindexer::testcase#setup()":{"title":"setup","namespace":"RubyIndexer::TestCase","path":"RubyIndexer/TestCase.html#method-i-setup","snippet":""},"rubylsp::addon::inherited()":{"title":"inherited","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-c-inherited","snippet":""},"rubylsp::addon::load_addons()":{"title":"load_addons","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-c-load_addons","snippet":""},"rubylsp::addon::new()":{"title":"new","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-c-new","snippet":""},"rubylsp::addon#add_error()":{"title":"add_error","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-add_error","snippet":""},"rubylsp::addon#error?()":{"title":"error?","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-error-3F","snippet":""},"rubylsp::addon#formatted_errors()":{"title":"formatted_errors","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-formatted_errors","snippet":""},"rubylsp::addon#errors_details()":{"title":"errors_details","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-errors_details","snippet":""},"rubylsp::addon#activate()":{"title":"activate","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-activate","snippet":""},"rubylsp::addon#deactivate()":{"title":"deactivate","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-deactivate","snippet":""},"rubylsp::addon#name()":{"title":"name","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-name","snippet":""},"rubylsp::addon#create_code_lens_listener()":{"title":"create_code_lens_listener","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-create_code_lens_listener","snippet":""},"rubylsp::addon#create_hover_listener()":{"title":"create_hover_listener","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-create_hover_listener","snippet":""},"rubylsp::addon#create_document_symbol_listener()":{"title":"create_document_symbol_listener","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-create_document_symbol_listener","snippet":""},"rubylsp::addon#create_semantic_highlighting_listener()":{"title":"create_semantic_highlighting_listener","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-create_semantic_highlighting_listener","snippet":""},"rubylsp::addon#create_definition_listener()":{"title":"create_definition_listener","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-create_definition_listener","snippet":""},"rubylsp::addon#create_completion_listener()":{"title":"create_completion_listener","namespace":"RubyLsp::Addon","path":"RubyLsp/Addon.html#method-i-create_completion_listener","snippet":""},"rubylsp::baseserver::new()":{"title":"new","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-c-new","snippet":""},"rubylsp::baseserver#start()":{"title":"start","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-start","snippet":""},"rubylsp::baseserver#run_shutdown()":{"title":"run_shutdown","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-run_shutdown","snippet":""},"rubylsp::baseserver#pop_response()":{"title":"pop_response","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-pop_response","snippet":""},"rubylsp::baseserver#process_message()":{"title":"process_message","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-process_message","snippet":""},"rubylsp::baseserver#shutdown()":{"title":"shutdown","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-shutdown","snippet":""},"rubylsp::baseserver#new_worker()":{"title":"new_worker","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-new_worker","snippet":""},"rubylsp::baseserver#send_message()":{"title":"send_message","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-send_message","snippet":""},"rubylsp::baseserver#send_empty_response()":{"title":"send_empty_response","namespace":"RubyLsp::BaseServer","path":"RubyLsp/BaseServer.html#method-i-send_empty_response","snippet":""},"rubylsp::checkdocs::new()":{"title":"new","namespace":"RubyLsp::CheckDocs","path":"RubyLsp/CheckDocs.html#method-c-new","snippet":""},"rubylsp::document::new()":{"title":"new","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-c-new","snippet":""},"rubylsp::document#tree()":{"title":"tree","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-tree","snippet":""},"rubylsp::document#comments()":{"title":"comments","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-comments","snippet":""},"rubylsp::document#==()":{"title":"==","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-3D-3D","snippet":""},"rubylsp::document#cache_fetch()":{"title":"cache_fetch","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-cache_fetch","snippet":""},"rubylsp::document#cache_set()":{"title":"cache_set","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-cache_set","snippet":""},"rubylsp::document#cache_get()":{"title":"cache_get","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-cache_get","snippet":""},"rubylsp::document#push_edits()":{"title":"push_edits","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-push_edits","snippet":""},"rubylsp::document#parse()":{"title":"parse","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-parse","snippet":""},"rubylsp::document#syntax_error?()":{"title":"syntax_error?","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-syntax_error-3F","snippet":""},"rubylsp::document#create_scanner()":{"title":"create_scanner","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-create_scanner","snippet":""},"rubylsp::document#locate_node()":{"title":"locate_node","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-locate_node","snippet":""},"rubylsp::document#locate()":{"title":"locate","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-locate","snippet":""},"rubylsp::document#sorbet_sigil_is_true_or_higher()":{"title":"sorbet_sigil_is_true_or_higher","namespace":"RubyLsp::Document","path":"RubyLsp/Document.html#method-i-sorbet_sigil_is_true_or_higher","snippet":""},"rubylsp::document::scanner::new()":{"title":"new","namespace":"RubyLsp::Document::Scanner","path":"RubyLsp/Document/Scanner.html#method-c-new","snippet":""},"rubylsp::document::scanner#find_char_position()":{"title":"find_char_position","namespace":"RubyLsp::Document::Scanner","path":"RubyLsp/Document/Scanner.html#method-i-find_char_position","snippet":""},"rubylsp::document::scanner#utf_16_character_position_correction()":{"title":"utf_16_character_position_correction","namespace":"RubyLsp::Document::Scanner","path":"RubyLsp/Document/Scanner.html#method-i-utf_16_character_position_correction","snippet":""},"rubylsp::error::new()":{"title":"new","namespace":"RubyLsp::Error","path":"RubyLsp/Error.html#method-c-new","snippet":""},"rubylsp::error#to_hash()":{"title":"to_hash","namespace":"RubyLsp::Error","path":"RubyLsp/Error.html#method-i-to_hash","snippet":""},"rubylsp::globalstate::new()":{"title":"new","namespace":"RubyLsp::GlobalState","path":"RubyLsp/GlobalState.html#method-c-new","snippet":""},"rubylsp::globalstate#register_formatter()":{"title":"register_formatter","namespace":"RubyLsp::GlobalState","path":"RubyLsp/GlobalState.html#method-i-register_formatter","snippet":""},"rubylsp::globalstate#active_formatter()":{"title":"active_formatter","namespace":"RubyLsp::GlobalState","path":"RubyLsp/GlobalState.html#method-i-active_formatter","snippet":""},"rubylsp::globalstate#active_linters()":{"title":"active_linters","namespace":"RubyLsp::GlobalState","path":"RubyLsp/GlobalState.html#method-i-active_linters","snippet":""},"rubylsp::globalstate#apply_options()":{"title":"apply_options","namespace":"RubyLsp::GlobalState","path":"RubyLsp/GlobalState.html#method-i-apply_options","snippet":""},"rubylsp::globalstate#workspace_path()":{"title":"workspace_path","namespace":"RubyLsp::GlobalState","path":"RubyLsp/GlobalState.html#method-i-workspace_path","snippet":""},"rubylsp::globalstate#encoding_name()":{"title":"encoding_name","namespace":"RubyLsp::GlobalState","path":"RubyLsp/GlobalState.html#method-i-encoding_name","snippet":""},"rubylsp::inlinetypeassertions#absurd()":{"title":"absurd","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-absurd","snippet":""},"rubylsp::inlinetypeassertions#any()":{"title":"any","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-any","snippet":""},"rubylsp::inlinetypeassertions#assert_type!()":{"title":"assert_type!","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-assert_type-21","snippet":""},"rubylsp::inlinetypeassertions#bind()":{"title":"bind","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-bind","snippet":""},"rubylsp::inlinetypeassertions#cast()":{"title":"cast","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-cast","snippet":""},"rubylsp::inlinetypeassertions#let()":{"title":"let","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-let","snippet":""},"rubylsp::inlinetypeassertions#must()":{"title":"must","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-must","snippet":""},"rubylsp::inlinetypeassertions#nilable()":{"title":"nilable","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-nilable","snippet":""},"rubylsp::inlinetypeassertions#unsafe()":{"title":"unsafe","namespace":"RubyLsp::InlineTypeAssertions","path":"RubyLsp/InlineTypeAssertions.html#method-i-unsafe","snippet":""},"rubylsp::listeners::codelens::new()":{"title":"new","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-c-new","snippet":""},"rubylsp::listeners::codelens#on_class_node_enter()":{"title":"on_class_node_enter","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_class_node_enter","snippet":""},"rubylsp::listeners::codelens#on_class_node_leave()":{"title":"on_class_node_leave","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_class_node_leave","snippet":""},"rubylsp::listeners::codelens#on_def_node_enter()":{"title":"on_def_node_enter","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_def_node_enter","snippet":""},"rubylsp::listeners::codelens#on_def_node_leave()":{"title":"on_def_node_leave","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_def_node_leave","snippet":""},"rubylsp::listeners::codelens#on_module_node_enter()":{"title":"on_module_node_enter","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_module_node_enter","snippet":""},"rubylsp::listeners::codelens#on_module_node_leave()":{"title":"on_module_node_leave","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_module_node_leave","snippet":""},"rubylsp::listeners::codelens#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::codelens#on_call_node_leave()":{"title":"on_call_node_leave","namespace":"RubyLsp::Listeners::CodeLens","path":"RubyLsp/Listeners/CodeLens.html#method-i-on_call_node_leave","snippet":""},"rubylsp::listeners::completion::new()":{"title":"new","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-c-new","snippet":""},"rubylsp::listeners::completion#on_constant_read_node_enter()":{"title":"on_constant_read_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_constant_read_node_enter","snippet":""},"rubylsp::listeners::completion#on_constant_path_node_enter()":{"title":"on_constant_path_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_constant_path_node_enter","snippet":""},"rubylsp::listeners::completion#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::completion#on_instance_variable_read_node_enter()":{"title":"on_instance_variable_read_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_instance_variable_read_node_enter","snippet":""},"rubylsp::listeners::completion#on_instance_variable_write_node_enter()":{"title":"on_instance_variable_write_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_instance_variable_write_node_enter","snippet":""},"rubylsp::listeners::completion#on_instance_variable_and_write_node_enter()":{"title":"on_instance_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_instance_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::completion#on_instance_variable_operator_write_node_enter()":{"title":"on_instance_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_instance_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::completion#on_instance_variable_or_write_node_enter()":{"title":"on_instance_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_instance_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::completion#on_instance_variable_target_node_enter()":{"title":"on_instance_variable_target_node_enter","namespace":"RubyLsp::Listeners::Completion","path":"RubyLsp/Listeners/Completion.html#method-i-on_instance_variable_target_node_enter","snippet":""},"rubylsp::listeners::definition::new()":{"title":"new","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-c-new","snippet":""},"rubylsp::listeners::definition#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::definition#on_string_node_enter()":{"title":"on_string_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_string_node_enter","snippet":""},"rubylsp::listeners::definition#on_block_argument_node_enter()":{"title":"on_block_argument_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_block_argument_node_enter","snippet":""},"rubylsp::listeners::definition#on_constant_path_node_enter()":{"title":"on_constant_path_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_constant_path_node_enter","snippet":""},"rubylsp::listeners::definition#on_constant_read_node_enter()":{"title":"on_constant_read_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_constant_read_node_enter","snippet":""},"rubylsp::listeners::definition#on_instance_variable_read_node_enter()":{"title":"on_instance_variable_read_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_instance_variable_read_node_enter","snippet":""},"rubylsp::listeners::definition#on_instance_variable_write_node_enter()":{"title":"on_instance_variable_write_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_instance_variable_write_node_enter","snippet":""},"rubylsp::listeners::definition#on_instance_variable_and_write_node_enter()":{"title":"on_instance_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_instance_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::definition#on_instance_variable_operator_write_node_enter()":{"title":"on_instance_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_instance_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::definition#on_instance_variable_or_write_node_enter()":{"title":"on_instance_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_instance_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::definition#on_instance_variable_target_node_enter()":{"title":"on_instance_variable_target_node_enter","namespace":"RubyLsp::Listeners::Definition","path":"RubyLsp/Listeners/Definition.html#method-i-on_instance_variable_target_node_enter","snippet":""},"rubylsp::listeners::documenthighlight::new()":{"title":"new","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-c-new","snippet":""},"rubylsp::listeners::documenthighlight#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_def_node_enter()":{"title":"on_def_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_def_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_global_variable_target_node_enter()":{"title":"on_global_variable_target_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_global_variable_target_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_instance_variable_target_node_enter()":{"title":"on_instance_variable_target_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_instance_variable_target_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_path_target_node_enter()":{"title":"on_constant_path_target_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_path_target_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_target_node_enter()":{"title":"on_constant_target_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_target_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_class_variable_target_node_enter()":{"title":"on_class_variable_target_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_class_variable_target_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_local_variable_target_node_enter()":{"title":"on_local_variable_target_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_local_variable_target_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_block_parameter_node_enter()":{"title":"on_block_parameter_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_block_parameter_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_required_parameter_node_enter()":{"title":"on_required_parameter_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_required_parameter_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_class_node_enter()":{"title":"on_class_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_class_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_module_node_enter()":{"title":"on_module_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_module_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_local_variable_read_node_enter()":{"title":"on_local_variable_read_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_local_variable_read_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_path_node_enter()":{"title":"on_constant_path_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_path_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_read_node_enter()":{"title":"on_constant_read_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_read_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_instance_variable_read_node_enter()":{"title":"on_instance_variable_read_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_instance_variable_read_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_class_variable_read_node_enter()":{"title":"on_class_variable_read_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_class_variable_read_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_global_variable_read_node_enter()":{"title":"on_global_variable_read_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_global_variable_read_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_path_write_node_enter()":{"title":"on_constant_path_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_path_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_path_or_write_node_enter()":{"title":"on_constant_path_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_path_or_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_path_and_write_node_enter()":{"title":"on_constant_path_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_path_and_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_path_operator_write_node_enter()":{"title":"on_constant_path_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_path_operator_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_local_variable_write_node_enter()":{"title":"on_local_variable_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_local_variable_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_required_keyword_parameter_node_enter()":{"title":"on_required_keyword_parameter_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_required_keyword_parameter_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_optional_keyword_parameter_node_enter()":{"title":"on_optional_keyword_parameter_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_optional_keyword_parameter_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_rest_parameter_node_enter()":{"title":"on_rest_parameter_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_rest_parameter_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_optional_parameter_node_enter()":{"title":"on_optional_parameter_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_optional_parameter_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_keyword_rest_parameter_node_enter()":{"title":"on_keyword_rest_parameter_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_keyword_rest_parameter_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_local_variable_and_write_node_enter()":{"title":"on_local_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_local_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_local_variable_operator_write_node_enter()":{"title":"on_local_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_local_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_local_variable_or_write_node_enter()":{"title":"on_local_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_local_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_class_variable_write_node_enter()":{"title":"on_class_variable_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_class_variable_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_class_variable_or_write_node_enter()":{"title":"on_class_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_class_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_class_variable_operator_write_node_enter()":{"title":"on_class_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_class_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_class_variable_and_write_node_enter()":{"title":"on_class_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_class_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_write_node_enter()":{"title":"on_constant_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_or_write_node_enter()":{"title":"on_constant_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_or_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_operator_write_node_enter()":{"title":"on_constant_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_operator_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_instance_variable_write_node_enter()":{"title":"on_instance_variable_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_instance_variable_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_instance_variable_or_write_node_enter()":{"title":"on_instance_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_instance_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_instance_variable_and_write_node_enter()":{"title":"on_instance_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_instance_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_instance_variable_operator_write_node_enter()":{"title":"on_instance_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_instance_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_constant_and_write_node_enter()":{"title":"on_constant_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_constant_and_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_global_variable_write_node_enter()":{"title":"on_global_variable_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_global_variable_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_global_variable_or_write_node_enter()":{"title":"on_global_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_global_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_global_variable_and_write_node_enter()":{"title":"on_global_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_global_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::documenthighlight#on_global_variable_operator_write_node_enter()":{"title":"on_global_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentHighlight","path":"RubyLsp/Listeners/DocumentHighlight.html#method-i-on_global_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::documentlink::gem_paths()":{"title":"gem_paths","namespace":"RubyLsp::Listeners::DocumentLink","path":"RubyLsp/Listeners/DocumentLink.html#method-c-gem_paths","snippet":""},"rubylsp::listeners::documentlink::new()":{"title":"new","namespace":"RubyLsp::Listeners::DocumentLink","path":"RubyLsp/Listeners/DocumentLink.html#method-c-new","snippet":""},"rubylsp::listeners::documentlink#on_def_node_enter()":{"title":"on_def_node_enter","namespace":"RubyLsp::Listeners::DocumentLink","path":"RubyLsp/Listeners/DocumentLink.html#method-i-on_def_node_enter","snippet":""},"rubylsp::listeners::documentlink#on_class_node_enter()":{"title":"on_class_node_enter","namespace":"RubyLsp::Listeners::DocumentLink","path":"RubyLsp/Listeners/DocumentLink.html#method-i-on_class_node_enter","snippet":""},"rubylsp::listeners::documentlink#on_module_node_enter()":{"title":"on_module_node_enter","namespace":"RubyLsp::Listeners::DocumentLink","path":"RubyLsp/Listeners/DocumentLink.html#method-i-on_module_node_enter","snippet":""},"rubylsp::listeners::documentlink#on_constant_write_node_enter()":{"title":"on_constant_write_node_enter","namespace":"RubyLsp::Listeners::DocumentLink","path":"RubyLsp/Listeners/DocumentLink.html#method-i-on_constant_write_node_enter","snippet":""},"rubylsp::listeners::documentlink#on_constant_path_write_node_enter()":{"title":"on_constant_path_write_node_enter","namespace":"RubyLsp::Listeners::DocumentLink","path":"RubyLsp/Listeners/DocumentLink.html#method-i-on_constant_path_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol::new()":{"title":"new","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-c-new","snippet":""},"rubylsp::listeners::documentsymbol#on_class_node_enter()":{"title":"on_class_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_class_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_class_node_leave()":{"title":"on_class_node_leave","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_class_node_leave","snippet":""},"rubylsp::listeners::documentsymbol#on_singleton_class_node_enter()":{"title":"on_singleton_class_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_singleton_class_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_singleton_class_node_leave()":{"title":"on_singleton_class_node_leave","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_singleton_class_node_leave","snippet":""},"rubylsp::listeners::documentsymbol#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_call_node_leave()":{"title":"on_call_node_leave","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_call_node_leave","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_path_write_node_enter()":{"title":"on_constant_path_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_path_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_write_node_enter()":{"title":"on_constant_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_path_and_write_node_enter()":{"title":"on_constant_path_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_path_and_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_path_or_write_node_enter()":{"title":"on_constant_path_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_path_or_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_path_operator_write_node_enter()":{"title":"on_constant_path_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_path_operator_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_or_write_node_enter()":{"title":"on_constant_or_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_or_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_and_write_node_enter()":{"title":"on_constant_and_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_and_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_operator_write_node_enter()":{"title":"on_constant_operator_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_operator_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_target_node_enter()":{"title":"on_constant_target_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_target_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_constant_path_target_node_enter()":{"title":"on_constant_path_target_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_constant_path_target_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_def_node_leave()":{"title":"on_def_node_leave","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_def_node_leave","snippet":""},"rubylsp::listeners::documentsymbol#on_module_node_enter()":{"title":"on_module_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_module_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_def_node_enter()":{"title":"on_def_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_def_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_module_node_leave()":{"title":"on_module_node_leave","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_module_node_leave","snippet":""},"rubylsp::listeners::documentsymbol#on_instance_variable_write_node_enter()":{"title":"on_instance_variable_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_instance_variable_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_class_variable_write_node_enter()":{"title":"on_class_variable_write_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_class_variable_write_node_enter","snippet":""},"rubylsp::listeners::documentsymbol#on_alias_method_node_enter()":{"title":"on_alias_method_node_enter","namespace":"RubyLsp::Listeners::DocumentSymbol","path":"RubyLsp/Listeners/DocumentSymbol.html#method-i-on_alias_method_node_enter","snippet":""},"rubylsp::listeners::foldingranges::new()":{"title":"new","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-c-new","snippet":""},"rubylsp::listeners::foldingranges#finalize_response!()":{"title":"finalize_response!","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-finalize_response-21","snippet":""},"rubylsp::listeners::foldingranges#on_if_node_enter()":{"title":"on_if_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_if_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_in_node_enter()":{"title":"on_in_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_in_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_rescue_node_enter()":{"title":"on_rescue_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_rescue_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_when_node_enter()":{"title":"on_when_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_when_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_interpolated_string_node_enter()":{"title":"on_interpolated_string_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_interpolated_string_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_array_node_enter()":{"title":"on_array_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_array_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_block_node_enter()":{"title":"on_block_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_block_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_case_node_enter()":{"title":"on_case_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_case_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_case_match_node_enter()":{"title":"on_case_match_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_case_match_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_class_node_enter()":{"title":"on_class_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_class_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_module_node_enter()":{"title":"on_module_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_module_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_for_node_enter()":{"title":"on_for_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_for_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_hash_node_enter()":{"title":"on_hash_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_hash_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_singleton_class_node_enter()":{"title":"on_singleton_class_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_singleton_class_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_unless_node_enter()":{"title":"on_unless_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_unless_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_until_node_enter()":{"title":"on_until_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_until_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_while_node_enter()":{"title":"on_while_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_while_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_else_node_enter()":{"title":"on_else_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_else_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_ensure_node_enter()":{"title":"on_ensure_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_ensure_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_begin_node_enter()":{"title":"on_begin_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_begin_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_def_node_enter()":{"title":"on_def_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_def_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::foldingranges#on_lambda_node_enter()":{"title":"on_lambda_node_enter","namespace":"RubyLsp::Listeners::FoldingRanges","path":"RubyLsp/Listeners/FoldingRanges.html#method-i-on_lambda_node_enter","snippet":""},"rubylsp::listeners::hover::new()":{"title":"new","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-c-new","snippet":""},"rubylsp::listeners::hover#on_constant_read_node_enter()":{"title":"on_constant_read_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_constant_read_node_enter","snippet":""},"rubylsp::listeners::hover#on_constant_write_node_enter()":{"title":"on_constant_write_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_constant_write_node_enter","snippet":""},"rubylsp::listeners::hover#on_constant_path_node_enter()":{"title":"on_constant_path_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_constant_path_node_enter","snippet":""},"rubylsp::listeners::hover#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::hover#on_instance_variable_read_node_enter()":{"title":"on_instance_variable_read_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_instance_variable_read_node_enter","snippet":""},"rubylsp::listeners::hover#on_instance_variable_write_node_enter()":{"title":"on_instance_variable_write_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_instance_variable_write_node_enter","snippet":""},"rubylsp::listeners::hover#on_instance_variable_and_write_node_enter()":{"title":"on_instance_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_instance_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::hover#on_instance_variable_operator_write_node_enter()":{"title":"on_instance_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_instance_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::hover#on_instance_variable_or_write_node_enter()":{"title":"on_instance_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_instance_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::hover#on_instance_variable_target_node_enter()":{"title":"on_instance_variable_target_node_enter","namespace":"RubyLsp::Listeners::Hover","path":"RubyLsp/Listeners/Hover.html#method-i-on_instance_variable_target_node_enter","snippet":""},"rubylsp::listeners::inlayhints::new()":{"title":"new","namespace":"RubyLsp::Listeners::InlayHints","path":"RubyLsp/Listeners/InlayHints.html#method-c-new","snippet":""},"rubylsp::listeners::inlayhints#on_rescue_node_enter()":{"title":"on_rescue_node_enter","namespace":"RubyLsp::Listeners::InlayHints","path":"RubyLsp/Listeners/InlayHints.html#method-i-on_rescue_node_enter","snippet":""},"rubylsp::listeners::inlayhints#on_implicit_node_enter()":{"title":"on_implicit_node_enter","namespace":"RubyLsp::Listeners::InlayHints","path":"RubyLsp/Listeners/InlayHints.html#method-i-on_implicit_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting::new()":{"title":"new","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-c-new","snippet":""},"rubylsp::listeners::semantichighlighting#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_call_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_match_write_node_enter()":{"title":"on_match_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_match_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_match_write_node_leave()":{"title":"on_match_write_node_leave","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_match_write_node_leave","snippet":""},"rubylsp::listeners::semantichighlighting#on_constant_read_node_enter()":{"title":"on_constant_read_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_constant_read_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_constant_write_node_enter()":{"title":"on_constant_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_constant_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_constant_and_write_node_enter()":{"title":"on_constant_and_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_constant_and_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_constant_operator_write_node_enter()":{"title":"on_constant_operator_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_constant_operator_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_constant_or_write_node_enter()":{"title":"on_constant_or_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_constant_or_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_constant_target_node_enter()":{"title":"on_constant_target_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_constant_target_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_def_node_enter()":{"title":"on_def_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_def_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_def_node_leave()":{"title":"on_def_node_leave","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_def_node_leave","snippet":""},"rubylsp::listeners::semantichighlighting#on_block_node_enter()":{"title":"on_block_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_block_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_block_node_leave()":{"title":"on_block_node_leave","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_block_node_leave","snippet":""},"rubylsp::listeners::semantichighlighting#on_block_local_variable_node_enter()":{"title":"on_block_local_variable_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_block_local_variable_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_block_parameter_node_enter()":{"title":"on_block_parameter_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_block_parameter_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_required_keyword_parameter_node_enter()":{"title":"on_required_keyword_parameter_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_required_keyword_parameter_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_optional_keyword_parameter_node_enter()":{"title":"on_optional_keyword_parameter_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_optional_keyword_parameter_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_keyword_rest_parameter_node_enter()":{"title":"on_keyword_rest_parameter_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_keyword_rest_parameter_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_optional_parameter_node_enter()":{"title":"on_optional_parameter_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_optional_parameter_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_required_parameter_node_enter()":{"title":"on_required_parameter_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_required_parameter_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_rest_parameter_node_enter()":{"title":"on_rest_parameter_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_rest_parameter_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_self_node_enter()":{"title":"on_self_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_self_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_local_variable_write_node_enter()":{"title":"on_local_variable_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_local_variable_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_local_variable_read_node_enter()":{"title":"on_local_variable_read_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_local_variable_read_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_local_variable_and_write_node_enter()":{"title":"on_local_variable_and_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_local_variable_and_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_local_variable_operator_write_node_enter()":{"title":"on_local_variable_operator_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_local_variable_operator_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_local_variable_or_write_node_enter()":{"title":"on_local_variable_or_write_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_local_variable_or_write_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_local_variable_target_node_enter()":{"title":"on_local_variable_target_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_local_variable_target_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_class_node_enter()":{"title":"on_class_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_class_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_module_node_enter()":{"title":"on_module_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_module_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_implicit_node_enter()":{"title":"on_implicit_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_implicit_node_enter","snippet":""},"rubylsp::listeners::semantichighlighting#on_implicit_node_leave()":{"title":"on_implicit_node_leave","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_implicit_node_leave","snippet":""},"rubylsp::listeners::semantichighlighting#on_constant_path_node_enter()":{"title":"on_constant_path_node_enter","namespace":"RubyLsp::Listeners::SemanticHighlighting","path":"RubyLsp/Listeners/SemanticHighlighting.html#method-i-on_constant_path_node_enter","snippet":""},"rubylsp::listeners::signaturehelp::new()":{"title":"new","namespace":"RubyLsp::Listeners::SignatureHelp","path":"RubyLsp/Listeners/SignatureHelp.html#method-c-new","snippet":""},"rubylsp::listeners::signaturehelp#on_call_node_enter()":{"title":"on_call_node_enter","namespace":"RubyLsp::Listeners::SignatureHelp","path":"RubyLsp/Listeners/SignatureHelp.html#method-i-on_call_node_enter","snippet":""},"rubylsp::message::new()":{"title":"new","namespace":"RubyLsp::Message","path":"RubyLsp/Message.html#method-c-new","snippet":""},"rubylsp::message#to_hash()":{"title":"to_hash","namespace":"RubyLsp::Message","path":"RubyLsp/Message.html#method-i-to_hash","snippet":""},"rubylsp::nodecontext::new()":{"title":"new","namespace":"RubyLsp::NodeContext","path":"RubyLsp/NodeContext.html#method-c-new","snippet":""},"rubylsp::nodecontext#fully_qualified_name()":{"title":"fully_qualified_name","namespace":"RubyLsp::NodeContext","path":"RubyLsp/NodeContext.html#method-i-fully_qualified_name","snippet":""},"rubylsp::notification::window_show_error()":{"title":"window_show_error","namespace":"RubyLsp::Notification","path":"RubyLsp/Notification.html#method-c-window_show_error","snippet":""},"rubylsp::notification#to_hash()":{"title":"to_hash","namespace":"RubyLsp::Notification","path":"RubyLsp/Notification.html#method-i-to_hash","snippet":""},"rubylsp::parameterscope::new()":{"title":"new","namespace":"RubyLsp::ParameterScope","path":"RubyLsp/ParameterScope.html#method-c-new","snippet":""},"rubylsp::parameterscope#<<()":{"title":"<<","namespace":"RubyLsp::ParameterScope","path":"RubyLsp/ParameterScope.html#method-i-3C-3C","snippet":""},"rubylsp::parameterscope#type_for()":{"title":"type_for","namespace":"RubyLsp::ParameterScope","path":"RubyLsp/ParameterScope.html#method-i-type_for","snippet":""},"rubylsp::parameterscope#parameter?()":{"title":"parameter?","namespace":"RubyLsp::ParameterScope","path":"RubyLsp/ParameterScope.html#method-i-parameter-3F","snippet":""},"rubylsp::request::new()":{"title":"new","namespace":"RubyLsp::Request","path":"RubyLsp/Request.html#method-c-new","snippet":""},"rubylsp::request#to_hash()":{"title":"to_hash","namespace":"RubyLsp::Request","path":"RubyLsp/Request.html#method-i-to_hash","snippet":""},"rubylsp::requestconfig::new()":{"title":"new","namespace":"RubyLsp::RequestConfig","path":"RubyLsp/RequestConfig.html#method-c-new","snippet":""},"rubylsp::requestconfig#enabled?()":{"title":"enabled?","namespace":"RubyLsp::RequestConfig","path":"RubyLsp/RequestConfig.html#method-i-enabled-3F","snippet":""},"rubylsp::requests::codeactionresolve::new()":{"title":"new","namespace":"RubyLsp::Requests::CodeActionResolve","path":"RubyLsp/Requests/CodeActionResolve.html#method-c-new","snippet":""},"rubylsp::requests::codeactionresolve#perform()":{"title":"perform","namespace":"RubyLsp::Requests::CodeActionResolve","path":"RubyLsp/Requests/CodeActionResolve.html#method-i-perform","snippet":""},"rubylsp::requests::codeactionresolve#refactor_variable()":{"title":"refactor_variable","namespace":"RubyLsp::Requests::CodeActionResolve","path":"RubyLsp/Requests/CodeActionResolve.html#method-i-refactor_variable","snippet":""},"rubylsp::requests::codeactionresolve#refactor_method()":{"title":"refactor_method","namespace":"RubyLsp::Requests::CodeActionResolve","path":"RubyLsp/Requests/CodeActionResolve.html#method-i-refactor_method","snippet":""},"rubylsp::requests::codeactions::provider()":{"title":"provider","namespace":"RubyLsp::Requests::CodeActions","path":"RubyLsp/Requests/CodeActions.html#method-c-provider","snippet":""},"rubylsp::requests::codeactions::new()":{"title":"new","namespace":"RubyLsp::Requests::CodeActions","path":"RubyLsp/Requests/CodeActions.html#method-c-new","snippet":""},"rubylsp::requests::codeactions#perform()":{"title":"perform","namespace":"RubyLsp::Requests::CodeActions","path":"RubyLsp/Requests/CodeActions.html#method-i-perform","snippet":""},"rubylsp::requests::codelens::provider()":{"title":"provider","namespace":"RubyLsp::Requests::CodeLens","path":"RubyLsp/Requests/CodeLens.html#method-c-provider","snippet":""},"rubylsp::requests::codelens::new()":{"title":"new","namespace":"RubyLsp::Requests::CodeLens","path":"RubyLsp/Requests/CodeLens.html#method-c-new","snippet":""},"rubylsp::requests::codelens#perform()":{"title":"perform","namespace":"RubyLsp::Requests::CodeLens","path":"RubyLsp/Requests/CodeLens.html#method-i-perform","snippet":""},"rubylsp::requests::completion::provider()":{"title":"provider","namespace":"RubyLsp::Requests::Completion","path":"RubyLsp/Requests/Completion.html#method-c-provider","snippet":""},"rubylsp::requests::completion::new()":{"title":"new","namespace":"RubyLsp::Requests::Completion","path":"RubyLsp/Requests/Completion.html#method-c-new","snippet":""},"rubylsp::requests::completion#perform()":{"title":"perform","namespace":"RubyLsp::Requests::Completion","path":"RubyLsp/Requests/Completion.html#method-i-perform","snippet":""},"rubylsp::requests::completionresolve::new()":{"title":"new","namespace":"RubyLsp::Requests::CompletionResolve","path":"RubyLsp/Requests/CompletionResolve.html#method-c-new","snippet":""},"rubylsp::requests::completionresolve#perform()":{"title":"perform","namespace":"RubyLsp::Requests::CompletionResolve","path":"RubyLsp/Requests/CompletionResolve.html#method-i-perform","snippet":""},"rubylsp::requests::definition::new()":{"title":"new","namespace":"RubyLsp::Requests::Definition","path":"RubyLsp/Requests/Definition.html#method-c-new","snippet":""},"rubylsp::requests::definition#perform()":{"title":"perform","namespace":"RubyLsp::Requests::Definition","path":"RubyLsp/Requests/Definition.html#method-i-perform","snippet":""},"rubylsp::requests::diagnostics::provider()":{"title":"provider","namespace":"RubyLsp::Requests::Diagnostics","path":"RubyLsp/Requests/Diagnostics.html#method-c-provider","snippet":""},"rubylsp::requests::diagnostics::new()":{"title":"new","namespace":"RubyLsp::Requests::Diagnostics","path":"RubyLsp/Requests/Diagnostics.html#method-c-new","snippet":""},"rubylsp::requests::diagnostics#perform()":{"title":"perform","namespace":"RubyLsp::Requests::Diagnostics","path":"RubyLsp/Requests/Diagnostics.html#method-i-perform","snippet":""},"rubylsp::requests::documenthighlight::new()":{"title":"new","namespace":"RubyLsp::Requests::DocumentHighlight","path":"RubyLsp/Requests/DocumentHighlight.html#method-c-new","snippet":""},"rubylsp::requests::documenthighlight#perform()":{"title":"perform","namespace":"RubyLsp::Requests::DocumentHighlight","path":"RubyLsp/Requests/DocumentHighlight.html#method-i-perform","snippet":""},"rubylsp::requests::documentlink::provider()":{"title":"provider","namespace":"RubyLsp::Requests::DocumentLink","path":"RubyLsp/Requests/DocumentLink.html#method-c-provider","snippet":""},"rubylsp::requests::documentlink::new()":{"title":"new","namespace":"RubyLsp::Requests::DocumentLink","path":"RubyLsp/Requests/DocumentLink.html#method-c-new","snippet":""},"rubylsp::requests::documentlink#perform()":{"title":"perform","namespace":"RubyLsp::Requests::DocumentLink","path":"RubyLsp/Requests/DocumentLink.html#method-i-perform","snippet":""},"rubylsp::requests::documentsymbol::provider()":{"title":"provider","namespace":"RubyLsp::Requests::DocumentSymbol","path":"RubyLsp/Requests/DocumentSymbol.html#method-c-provider","snippet":""},"rubylsp::requests::documentsymbol::new()":{"title":"new","namespace":"RubyLsp::Requests::DocumentSymbol","path":"RubyLsp/Requests/DocumentSymbol.html#method-c-new","snippet":""},"rubylsp::requests::documentsymbol#perform()":{"title":"perform","namespace":"RubyLsp::Requests::DocumentSymbol","path":"RubyLsp/Requests/DocumentSymbol.html#method-i-perform","snippet":""},"rubylsp::requests::foldingranges::provider()":{"title":"provider","namespace":"RubyLsp::Requests::FoldingRanges","path":"RubyLsp/Requests/FoldingRanges.html#method-c-provider","snippet":""},"rubylsp::requests::foldingranges::new()":{"title":"new","namespace":"RubyLsp::Requests::FoldingRanges","path":"RubyLsp/Requests/FoldingRanges.html#method-c-new","snippet":""},"rubylsp::requests::foldingranges#perform()":{"title":"perform","namespace":"RubyLsp::Requests::FoldingRanges","path":"RubyLsp/Requests/FoldingRanges.html#method-i-perform","snippet":""},"rubylsp::requests::formatting::new()":{"title":"new","namespace":"RubyLsp::Requests::Formatting","path":"RubyLsp/Requests/Formatting.html#method-c-new","snippet":""},"rubylsp::requests::formatting#perform()":{"title":"perform","namespace":"RubyLsp::Requests::Formatting","path":"RubyLsp/Requests/Formatting.html#method-i-perform","snippet":""},"rubylsp::requests::hover::provider()":{"title":"provider","namespace":"RubyLsp::Requests::Hover","path":"RubyLsp/Requests/Hover.html#method-c-provider","snippet":""},"rubylsp::requests::hover::new()":{"title":"new","namespace":"RubyLsp::Requests::Hover","path":"RubyLsp/Requests/Hover.html#method-c-new","snippet":""},"rubylsp::requests::hover#perform()":{"title":"perform","namespace":"RubyLsp::Requests::Hover","path":"RubyLsp/Requests/Hover.html#method-i-perform","snippet":""},"rubylsp::requests::inlayhints::provider()":{"title":"provider","namespace":"RubyLsp::Requests::InlayHints","path":"RubyLsp/Requests/InlayHints.html#method-c-provider","snippet":""},"rubylsp::requests::inlayhints::new()":{"title":"new","namespace":"RubyLsp::Requests::InlayHints","path":"RubyLsp/Requests/InlayHints.html#method-c-new","snippet":""},"rubylsp::requests::inlayhints#perform()":{"title":"perform","namespace":"RubyLsp::Requests::InlayHints","path":"RubyLsp/Requests/InlayHints.html#method-i-perform","snippet":""},"rubylsp::requests::ontypeformatting::provider()":{"title":"provider","namespace":"RubyLsp::Requests::OnTypeFormatting","path":"RubyLsp/Requests/OnTypeFormatting.html#method-c-provider","snippet":""},"rubylsp::requests::ontypeformatting::new()":{"title":"new","namespace":"RubyLsp::Requests::OnTypeFormatting","path":"RubyLsp/Requests/OnTypeFormatting.html#method-c-new","snippet":""},"rubylsp::requests::ontypeformatting#perform()":{"title":"perform","namespace":"RubyLsp::Requests::OnTypeFormatting","path":"RubyLsp/Requests/OnTypeFormatting.html#method-i-perform","snippet":""},"rubylsp::requests::request#perform()":{"title":"perform","namespace":"RubyLsp::Requests::Request","path":"RubyLsp/Requests/Request.html#method-i-perform","snippet":""},"rubylsp::requests::selectionranges::new()":{"title":"new","namespace":"RubyLsp::Requests::SelectionRanges","path":"RubyLsp/Requests/SelectionRanges.html#method-c-new","snippet":""},"rubylsp::requests::selectionranges#perform()":{"title":"perform","namespace":"RubyLsp::Requests::SelectionRanges","path":"RubyLsp/Requests/SelectionRanges.html#method-i-perform","snippet":""},"rubylsp::requests::semantichighlighting::provider()":{"title":"provider","namespace":"RubyLsp::Requests::SemanticHighlighting","path":"RubyLsp/Requests/SemanticHighlighting.html#method-c-provider","snippet":""},"rubylsp::requests::semantichighlighting::new()":{"title":"new","namespace":"RubyLsp::Requests::SemanticHighlighting","path":"RubyLsp/Requests/SemanticHighlighting.html#method-c-new","snippet":""},"rubylsp::requests::semantichighlighting#perform()":{"title":"perform","namespace":"RubyLsp::Requests::SemanticHighlighting","path":"RubyLsp/Requests/SemanticHighlighting.html#method-i-perform","snippet":""},"rubylsp::requests::showsyntaxtree::new()":{"title":"new","namespace":"RubyLsp::Requests::ShowSyntaxTree","path":"RubyLsp/Requests/ShowSyntaxTree.html#method-c-new","snippet":""},"rubylsp::requests::showsyntaxtree#perform()":{"title":"perform","namespace":"RubyLsp::Requests::ShowSyntaxTree","path":"RubyLsp/Requests/ShowSyntaxTree.html#method-i-perform","snippet":""},"rubylsp::requests::signaturehelp::provider()":{"title":"provider","namespace":"RubyLsp::Requests::SignatureHelp","path":"RubyLsp/Requests/SignatureHelp.html#method-c-provider","snippet":""},"rubylsp::requests::signaturehelp::new()":{"title":"new","namespace":"RubyLsp::Requests::SignatureHelp","path":"RubyLsp/Requests/SignatureHelp.html#method-c-new","snippet":""},"rubylsp::requests::signaturehelp#perform()":{"title":"perform","namespace":"RubyLsp::Requests::SignatureHelp","path":"RubyLsp/Requests/SignatureHelp.html#method-i-perform","snippet":""},"rubylsp::requests::support::annotation::new()":{"title":"new","namespace":"RubyLsp::Requests::Support::Annotation","path":"RubyLsp/Requests/Support/Annotation.html#method-c-new","snippet":""},"rubylsp::requests::support::annotation#match?()":{"title":"match?","namespace":"RubyLsp::Requests::Support::Annotation","path":"RubyLsp/Requests/Support/Annotation.html#method-i-match-3F","snippet":""},"rubylsp::requests::support::common#range_from_node()":{"title":"range_from_node","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-range_from_node","snippet":""},"rubylsp::requests::support::common#range_from_location()":{"title":"range_from_location","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-range_from_location","snippet":""},"rubylsp::requests::support::common#visible?()":{"title":"visible?","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-visible-3F","snippet":""},"rubylsp::requests::support::common#create_code_lens()":{"title":"create_code_lens","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-create_code_lens","snippet":""},"rubylsp::requests::support::common#not_in_dependencies?()":{"title":"not_in_dependencies?","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-not_in_dependencies-3F","snippet":""},"rubylsp::requests::support::common#self_receiver?()":{"title":"self_receiver?","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-self_receiver-3F","snippet":""},"rubylsp::requests::support::common#categorized_markdown_from_index_entries()":{"title":"categorized_markdown_from_index_entries","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-categorized_markdown_from_index_entries","snippet":""},"rubylsp::requests::support::common#markdown_from_index_entries()":{"title":"markdown_from_index_entries","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-markdown_from_index_entries","snippet":""},"rubylsp::requests::support::common#constant_name()":{"title":"constant_name","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-constant_name","snippet":""},"rubylsp::requests::support::common#namespace_constant_name()":{"title":"namespace_constant_name","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-namespace_constant_name","snippet":""},"rubylsp::requests::support::common#each_constant_path_part()":{"title":"each_constant_path_part","namespace":"RubyLsp::Requests::Support::Common","path":"RubyLsp/Requests/Support/Common.html#method-i-each_constant_path_part","snippet":""},"rubylsp::requests::support::formatter#run_formatting()":{"title":"run_formatting","namespace":"RubyLsp::Requests::Support::Formatter","path":"RubyLsp/Requests/Support/Formatter.html#method-i-run_formatting","snippet":""},"rubylsp::requests::support::formatter#run_diagnostic()":{"title":"run_diagnostic","namespace":"RubyLsp::Requests::Support::Formatter","path":"RubyLsp/Requests/Support/Formatter.html#method-i-run_diagnostic","snippet":""},"rubylsp::requests::support::internalrubocoperror::new()":{"title":"new","namespace":"RubyLsp::Requests::Support::InternalRuboCopError","path":"RubyLsp/Requests/Support/InternalRuboCopError.html#method-c-new","snippet":""},"rubylsp::requests::support::rubocopdiagnostic::new()":{"title":"new","namespace":"RubyLsp::Requests::Support::RuboCopDiagnostic","path":"RubyLsp/Requests/Support/RuboCopDiagnostic.html#method-c-new","snippet":""},"rubylsp::requests::support::rubocopdiagnostic#to_lsp_code_actions()":{"title":"to_lsp_code_actions","namespace":"RubyLsp::Requests::Support::RuboCopDiagnostic","path":"RubyLsp/Requests/Support/RuboCopDiagnostic.html#method-i-to_lsp_code_actions","snippet":""},"rubylsp::requests::support::rubocopdiagnostic#to_lsp_diagnostic()":{"title":"to_lsp_diagnostic","namespace":"RubyLsp::Requests::Support::RuboCopDiagnostic","path":"RubyLsp/Requests/Support/RuboCopDiagnostic.html#method-i-to_lsp_diagnostic","snippet":""},"rubylsp::requests::support::rubocopformatter::new()":{"title":"new","namespace":"RubyLsp::Requests::Support::RuboCopFormatter","path":"RubyLsp/Requests/Support/RuboCopFormatter.html#method-c-new","snippet":""},"rubylsp::requests::support::rubocopformatter#run_formatting()":{"title":"run_formatting","namespace":"RubyLsp::Requests::Support::RuboCopFormatter","path":"RubyLsp/Requests/Support/RuboCopFormatter.html#method-i-run_formatting","snippet":""},"rubylsp::requests::support::rubocopformatter#run_diagnostic()":{"title":"run_diagnostic","namespace":"RubyLsp::Requests::Support::RuboCopFormatter","path":"RubyLsp/Requests/Support/RuboCopFormatter.html#method-i-run_diagnostic","snippet":""},"rubylsp::requests::support::rubocoprunner::new()":{"title":"new","namespace":"RubyLsp::Requests::Support::RuboCopRunner","path":"RubyLsp/Requests/Support/RuboCopRunner.html#method-c-new","snippet":""},"rubylsp::requests::support::rubocoprunner#run()":{"title":"run","namespace":"RubyLsp::Requests::Support::RuboCopRunner","path":"RubyLsp/Requests/Support/RuboCopRunner.html#method-i-run","snippet":""},"rubylsp::requests::support::rubocoprunner#formatted_source()":{"title":"formatted_source","namespace":"RubyLsp::Requests::Support::RuboCopRunner","path":"RubyLsp/Requests/Support/RuboCopRunner.html#method-i-formatted_source","snippet":""},"rubylsp::requests::support::rubocoprunner::find_cop_by_name()":{"title":"find_cop_by_name","namespace":"RubyLsp::Requests::Support::RuboCopRunner","path":"RubyLsp/Requests/Support/RuboCopRunner.html#method-c-find_cop_by_name","snippet":""},"rubylsp::requests::support::selectionrange#cover?()":{"title":"cover?","namespace":"RubyLsp::Requests::Support::SelectionRange","path":"RubyLsp/Requests/Support/SelectionRange.html#method-i-cover-3F","snippet":""},"rubylsp::requests::support::sorbet::annotation?()":{"title":"annotation?","namespace":"RubyLsp::Requests::Support::Sorbet","path":"RubyLsp/Requests/Support/Sorbet.html#method-c-annotation-3F","snippet":""},"rubylsp::requests::support::syntaxtreeformatter::new()":{"title":"new","namespace":"RubyLsp::Requests::Support::SyntaxTreeFormatter","path":"RubyLsp/Requests/Support/SyntaxTreeFormatter.html#method-c-new","snippet":""},"rubylsp::requests::support::syntaxtreeformatter#run_formatting()":{"title":"run_formatting","namespace":"RubyLsp::Requests::Support::SyntaxTreeFormatter","path":"RubyLsp/Requests/Support/SyntaxTreeFormatter.html#method-i-run_formatting","snippet":""},"rubylsp::requests::support::syntaxtreeformatter#run_diagnostic()":{"title":"run_diagnostic","namespace":"RubyLsp::Requests::Support::SyntaxTreeFormatter","path":"RubyLsp/Requests/Support/SyntaxTreeFormatter.html#method-i-run_diagnostic","snippet":""},"rubylsp::requests::workspacesymbol::new()":{"title":"new","namespace":"RubyLsp::Requests::WorkspaceSymbol","path":"RubyLsp/Requests/WorkspaceSymbol.html#method-c-new","snippet":""},"rubylsp::requests::workspacesymbol#perform()":{"title":"perform","namespace":"RubyLsp::Requests::WorkspaceSymbol","path":"RubyLsp/Requests/WorkspaceSymbol.html#method-i-perform","snippet":""},"rubylsp::responsebuilders::collectionresponsebuilder::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::CollectionResponseBuilder","path":"RubyLsp/ResponseBuilders/CollectionResponseBuilder.html#method-c-new","snippet":""},"rubylsp::responsebuilders::collectionresponsebuilder#<<()":{"title":"<<","namespace":"RubyLsp::ResponseBuilders::CollectionResponseBuilder","path":"RubyLsp/ResponseBuilders/CollectionResponseBuilder.html#method-i-3C-3C","snippet":""},"rubylsp::responsebuilders::collectionresponsebuilder#response()":{"title":"response","namespace":"RubyLsp::ResponseBuilders::CollectionResponseBuilder","path":"RubyLsp/ResponseBuilders/CollectionResponseBuilder.html#method-i-response","snippet":""},"rubylsp::responsebuilders::documentsymbol::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::DocumentSymbol","path":"RubyLsp/ResponseBuilders/DocumentSymbol.html#method-c-new","snippet":""},"rubylsp::responsebuilders::documentsymbol#push()":{"title":"push","namespace":"RubyLsp::ResponseBuilders::DocumentSymbol","path":"RubyLsp/ResponseBuilders/DocumentSymbol.html#method-i-push","snippet":""},"rubylsp::responsebuilders::documentsymbol#<<()":{"title":"<<","namespace":"RubyLsp::ResponseBuilders::DocumentSymbol","path":"RubyLsp/ResponseBuilders/DocumentSymbol.html#method-i-3C-3C","snippet":""},"rubylsp::responsebuilders::documentsymbol#pop()":{"title":"pop","namespace":"RubyLsp::ResponseBuilders::DocumentSymbol","path":"RubyLsp/ResponseBuilders/DocumentSymbol.html#method-i-pop","snippet":""},"rubylsp::responsebuilders::documentsymbol#last()":{"title":"last","namespace":"RubyLsp::ResponseBuilders::DocumentSymbol","path":"RubyLsp/ResponseBuilders/DocumentSymbol.html#method-i-last","snippet":""},"rubylsp::responsebuilders::documentsymbol#response()":{"title":"response","namespace":"RubyLsp::ResponseBuilders::DocumentSymbol","path":"RubyLsp/ResponseBuilders/DocumentSymbol.html#method-i-response","snippet":""},"rubylsp::responsebuilders::documentsymbol::symbolhierarchyroot::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::DocumentSymbol::SymbolHierarchyRoot","path":"RubyLsp/ResponseBuilders/DocumentSymbol/SymbolHierarchyRoot.html#method-c-new","snippet":""},"rubylsp::responsebuilders::hover::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::Hover","path":"RubyLsp/ResponseBuilders/Hover.html#method-c-new","snippet":""},"rubylsp::responsebuilders::hover#push()":{"title":"push","namespace":"RubyLsp::ResponseBuilders::Hover","path":"RubyLsp/ResponseBuilders/Hover.html#method-i-push","snippet":""},"rubylsp::responsebuilders::hover#empty?()":{"title":"empty?","namespace":"RubyLsp::ResponseBuilders::Hover","path":"RubyLsp/ResponseBuilders/Hover.html#method-i-empty-3F","snippet":""},"rubylsp::responsebuilders::hover#response()":{"title":"response","namespace":"RubyLsp::ResponseBuilders::Hover","path":"RubyLsp/ResponseBuilders/Hover.html#method-i-response","snippet":""},"rubylsp::responsebuilders::responsebuilder#response()":{"title":"response","namespace":"RubyLsp::ResponseBuilders::ResponseBuilder","path":"RubyLsp/ResponseBuilders/ResponseBuilder.html#method-i-response","snippet":""},"rubylsp::responsebuilders::semantichighlighting::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting","path":"RubyLsp/ResponseBuilders/SemanticHighlighting.html#method-c-new","snippet":""},"rubylsp::responsebuilders::semantichighlighting#add_token()":{"title":"add_token","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting","path":"RubyLsp/ResponseBuilders/SemanticHighlighting.html#method-i-add_token","snippet":""},"rubylsp::responsebuilders::semantichighlighting#last_token_matches?()":{"title":"last_token_matches?","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting","path":"RubyLsp/ResponseBuilders/SemanticHighlighting.html#method-i-last_token_matches-3F","snippet":""},"rubylsp::responsebuilders::semantichighlighting#last()":{"title":"last","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting","path":"RubyLsp/ResponseBuilders/SemanticHighlighting.html#method-i-last","snippet":""},"rubylsp::responsebuilders::semantichighlighting#response()":{"title":"response","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting","path":"RubyLsp/ResponseBuilders/SemanticHighlighting.html#method-i-response","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictoken::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticToken","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticToken.html#method-c-new","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictoken#replace_type()":{"title":"replace_type","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticToken","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticToken.html#method-i-replace_type","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictoken#replace_modifier()":{"title":"replace_modifier","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticToken","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticToken.html#method-i-replace_modifier","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictokenencoder::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticTokenEncoder","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html#method-c-new","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictokenencoder#encode()":{"title":"encode","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticTokenEncoder","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html#method-i-encode","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictokenencoder#compute_delta()":{"title":"compute_delta","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticTokenEncoder","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html#method-i-compute_delta","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictokenencoder#encode_modifiers()":{"title":"encode_modifiers","namespace":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticTokenEncoder","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html#method-i-encode_modifiers","snippet":""},"rubylsp::responsebuilders::signaturehelp::new()":{"title":"new","namespace":"RubyLsp::ResponseBuilders::SignatureHelp","path":"RubyLsp/ResponseBuilders/SignatureHelp.html#method-c-new","snippet":""},"rubylsp::responsebuilders::signaturehelp#replace()":{"title":"replace","namespace":"RubyLsp::ResponseBuilders::SignatureHelp","path":"RubyLsp/ResponseBuilders/SignatureHelp.html#method-i-replace","snippet":""},"rubylsp::responsebuilders::signaturehelp#response()":{"title":"response","namespace":"RubyLsp::ResponseBuilders::SignatureHelp","path":"RubyLsp/ResponseBuilders/SignatureHelp.html#method-i-response","snippet":""},"rubylsp::result::new()":{"title":"new","namespace":"RubyLsp::Result","path":"RubyLsp/Result.html#method-c-new","snippet":""},"rubylsp::result#to_hash()":{"title":"to_hash","namespace":"RubyLsp::Result","path":"RubyLsp/Result.html#method-i-to_hash","snippet":""},"rubylsp::rubydocument#parse()":{"title":"parse","namespace":"RubyLsp::RubyDocument","path":"RubyLsp/RubyDocument.html#method-i-parse","snippet":""},"rubylsp::server::new()":{"title":"new","namespace":"RubyLsp::Server","path":"RubyLsp/Server.html#method-c-new","snippet":""},"rubylsp::server#process_message()":{"title":"process_message","namespace":"RubyLsp::Server","path":"RubyLsp/Server.html#method-i-process_message","snippet":""},"rubylsp::server#load_addons()":{"title":"load_addons","namespace":"RubyLsp::Server","path":"RubyLsp/Server.html#method-i-load_addons","snippet":""},"rubylsp::setupbundler::new()":{"title":"new","namespace":"RubyLsp::SetupBundler","path":"RubyLsp/SetupBundler.html#method-c-new","snippet":""},"rubylsp::setupbundler#setup!()":{"title":"setup!","namespace":"RubyLsp::SetupBundler","path":"RubyLsp/SetupBundler.html#method-i-setup-21","snippet":""},"rubylsp::store::new()":{"title":"new","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-c-new","snippet":""},"rubylsp::store#get()":{"title":"get","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-i-get","snippet":""},"rubylsp::store#set()":{"title":"set","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-i-set","snippet":""},"rubylsp::store#push_edits()":{"title":"push_edits","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-i-push_edits","snippet":""},"rubylsp::store#clear()":{"title":"clear","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-i-clear","snippet":""},"rubylsp::store#empty?()":{"title":"empty?","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-i-empty-3F","snippet":""},"rubylsp::store#delete()":{"title":"delete","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-i-delete","snippet":""},"rubylsp::store#cache_fetch()":{"title":"cache_fetch","namespace":"RubyLsp::Store","path":"RubyLsp/Store.html#method-i-cache_fetch","snippet":""},"rubylsp::testhelper#with_server()":{"title":"with_server","namespace":"RubyLsp::TestHelper","path":"RubyLsp/TestHelper.html#method-i-with_server","snippet":""},"uri::generic::from_path()":{"title":"from_path","namespace":"URI::Generic","path":"URI/Generic.html#method-c-from_path","snippet":""},"uri::generic#to_standardized_path()":{"title":"to_standardized_path","namespace":"URI::Generic","path":"URI/Generic.html#method-i-to_standardized_path","snippet":""},"uri::source::build()":{"title":"build","namespace":"URI::Source","path":"URI/Source.html#method-c-build","snippet":""},"uri::source#set_path()":{"title":"set_path","namespace":"URI::Source","path":"URI/Source.html#method-i-set_path","snippet":""},"uri::source#check_host()":{"title":"check_host","namespace":"URI::Source","path":"URI/Source.html#method-i-check_host","snippet":""},"uri::source#to_s()":{"title":"to_s","namespace":"URI::Source","path":"URI/Source.html#method-i-to_s","snippet":""},"rubocop":{"title":"RuboCop","namespace":"","path":"RuboCop.html","snippet":""},"rubocop::cop":{"title":"RuboCop::Cop","namespace":"","path":"RuboCop/Cop.html","snippet":""},"rubocop::cop::rubylsp":{"title":"RuboCop::Cop::RubyLsp","namespace":"","path":"RuboCop/Cop/RubyLsp.html","snippet":""},"rubocop::cop::rubylsp::uselanguageserveraliases":{"title":"RuboCop::Cop::RubyLsp::UseLanguageServerAliases","namespace":"","path":"RuboCop/Cop/RubyLsp/UseLanguageServerAliases.html","snippet":"

Prefer using Interface, Transport and Constant aliases\nwithin the RubyLsp module, without having to prefix ...\n"},"rubocop::cop::rubylsp::useregisterwithhandlermethod":{"title":"RuboCop::Cop::RubyLsp::UseRegisterWithHandlerMethod","namespace":"","path":"RuboCop/Cop/RubyLsp/UseRegisterWithHandlerMethod.html","snippet":"

Avoid using register without handler method, or handler without register.\n

@example\n

Register without handler …\n"},"rubyindexer":{"title":"RubyIndexer","namespace":"","path":"RubyIndexer.html","snippet":"

typed: strict\n

typed: strict\n

typed: strict\n"},"rubyindexer::classesandmodulestest":{"title":"RubyIndexer::ClassesAndModulesTest","namespace":"","path":"RubyIndexer/ClassesAndModulesTest.html","snippet":""},"rubyindexer::configuration":{"title":"RubyIndexer::Configuration","namespace":"","path":"RubyIndexer/Configuration.html","snippet":""},"rubyindexer::configurationtest":{"title":"RubyIndexer::ConfigurationTest","namespace":"","path":"RubyIndexer/ConfigurationTest.html","snippet":""},"rubyindexer::constanttest":{"title":"RubyIndexer::ConstantTest","namespace":"","path":"RubyIndexer/ConstantTest.html","snippet":""},"rubyindexer::declarationlistener":{"title":"RubyIndexer::DeclarationListener","namespace":"","path":"RubyIndexer/DeclarationListener.html","snippet":""},"rubyindexer::entry":{"title":"RubyIndexer::Entry","namespace":"","path":"RubyIndexer/Entry.html","snippet":""},"rubyindexer::entry::accessor":{"title":"RubyIndexer::Entry::Accessor","namespace":"","path":"RubyIndexer/Entry/Accessor.html","snippet":""},"rubyindexer::entry::alias":{"title":"RubyIndexer::Entry::Alias","namespace":"","path":"RubyIndexer/Entry/Alias.html","snippet":"

Alias represents a resolved alias, which points to an existing constant target\n"},"rubyindexer::entry::blockparameter":{"title":"RubyIndexer::Entry::BlockParameter","namespace":"","path":"RubyIndexer/Entry/BlockParameter.html","snippet":"

A block method parameter, e.g. def foo(&block)\n"},"rubyindexer::entry::class":{"title":"RubyIndexer::Entry::Class","namespace":"","path":"RubyIndexer/Entry/Class.html","snippet":""},"rubyindexer::entry::constant":{"title":"RubyIndexer::Entry::Constant","namespace":"","path":"RubyIndexer/Entry/Constant.html","snippet":""},"rubyindexer::entry::extend":{"title":"RubyIndexer::Entry::Extend","namespace":"","path":"RubyIndexer/Entry/Extend.html","snippet":""},"rubyindexer::entry::include":{"title":"RubyIndexer::Entry::Include","namespace":"","path":"RubyIndexer/Entry/Include.html","snippet":""},"rubyindexer::entry::instancemethod":{"title":"RubyIndexer::Entry::InstanceMethod","namespace":"","path":"RubyIndexer/Entry/InstanceMethod.html","snippet":""},"rubyindexer::entry::instancevariable":{"title":"RubyIndexer::Entry::InstanceVariable","namespace":"","path":"RubyIndexer/Entry/InstanceVariable.html","snippet":"

Represents an instance variable e.g.: @a = 1\n"},"rubyindexer::entry::keywordparameter":{"title":"RubyIndexer::Entry::KeywordParameter","namespace":"","path":"RubyIndexer/Entry/KeywordParameter.html","snippet":"

An required keyword method parameter, e.g. def foo(a:)\n"},"rubyindexer::entry::keywordrestparameter":{"title":"RubyIndexer::Entry::KeywordRestParameter","namespace":"","path":"RubyIndexer/Entry/KeywordRestParameter.html","snippet":"

A keyword rest method parameter, e.g. def foo(**a)\n"},"rubyindexer::entry::member":{"title":"RubyIndexer::Entry::Member","namespace":"","path":"RubyIndexer/Entry/Member.html","snippet":""},"rubyindexer::entry::method":{"title":"RubyIndexer::Entry::Method","namespace":"","path":"RubyIndexer/Entry/Method.html","snippet":""},"rubyindexer::entry::module":{"title":"RubyIndexer::Entry::Module","namespace":"","path":"RubyIndexer/Entry/Module.html","snippet":""},"rubyindexer::entry::moduleoperation":{"title":"RubyIndexer::Entry::ModuleOperation","namespace":"","path":"RubyIndexer/Entry/ModuleOperation.html","snippet":""},"rubyindexer::entry::namespace":{"title":"RubyIndexer::Entry::Namespace","namespace":"","path":"RubyIndexer/Entry/Namespace.html","snippet":""},"rubyindexer::entry::optionalkeywordparameter":{"title":"RubyIndexer::Entry::OptionalKeywordParameter","namespace":"","path":"RubyIndexer/Entry/OptionalKeywordParameter.html","snippet":"

An optional keyword method parameter, e.g. def foo(a: 123)\n"},"rubyindexer::entry::optionalparameter":{"title":"RubyIndexer::Entry::OptionalParameter","namespace":"","path":"RubyIndexer/Entry/OptionalParameter.html","snippet":"

An optional method parameter, e.g. def foo(a = 123)\n"},"rubyindexer::entry::parameter":{"title":"RubyIndexer::Entry::Parameter","namespace":"","path":"RubyIndexer/Entry/Parameter.html","snippet":""},"rubyindexer::entry::prepend":{"title":"RubyIndexer::Entry::Prepend","namespace":"","path":"RubyIndexer/Entry/Prepend.html","snippet":""},"rubyindexer::entry::requiredparameter":{"title":"RubyIndexer::Entry::RequiredParameter","namespace":"","path":"RubyIndexer/Entry/RequiredParameter.html","snippet":"

A required method parameter, e.g. def foo(a)\n"},"rubyindexer::entry::restparameter":{"title":"RubyIndexer::Entry::RestParameter","namespace":"","path":"RubyIndexer/Entry/RestParameter.html","snippet":"

A rest method parameter, e.g. def foo(*a)\n"},"rubyindexer::entry::singletonmethod":{"title":"RubyIndexer::Entry::SingletonMethod","namespace":"","path":"RubyIndexer/Entry/SingletonMethod.html","snippet":""},"rubyindexer::entry::unresolvedalias":{"title":"RubyIndexer::Entry::UnresolvedAlias","namespace":"","path":"RubyIndexer/Entry/UnresolvedAlias.html","snippet":"

An UnresolvedAlias points to a constant alias with a right hand side that has not yet been resolved. …\n"},"rubyindexer::entry::unresolvedmethodalias":{"title":"RubyIndexer::Entry::UnresolvedMethodAlias","namespace":"","path":"RubyIndexer/Entry/UnresolvedMethodAlias.html","snippet":""},"rubyindexer::entry::visibility":{"title":"RubyIndexer::Entry::Visibility","namespace":"","path":"RubyIndexer/Entry/Visibility.html","snippet":""},"rubyindexer::index":{"title":"RubyIndexer::Index","namespace":"","path":"RubyIndexer/Index.html","snippet":""},"rubyindexer::index::nonexistingnamespaceerror":{"title":"RubyIndexer::Index::NonExistingNamespaceError","namespace":"","path":"RubyIndexer/Index/NonExistingNamespaceError.html","snippet":""},"rubyindexer::index::unresolvablealiaserror":{"title":"RubyIndexer::Index::UnresolvableAliasError","namespace":"","path":"RubyIndexer/Index/UnresolvableAliasError.html","snippet":""},"rubyindexer::indextest":{"title":"RubyIndexer::IndexTest","namespace":"","path":"RubyIndexer/IndexTest.html","snippet":""},"rubyindexer::indexablepath":{"title":"RubyIndexer::IndexablePath","namespace":"","path":"RubyIndexer/IndexablePath.html","snippet":""},"rubyindexer::instancevariabletest":{"title":"RubyIndexer::InstanceVariableTest","namespace":"","path":"RubyIndexer/InstanceVariableTest.html","snippet":""},"rubyindexer::location":{"title":"RubyIndexer::Location","namespace":"","path":"RubyIndexer/Location.html","snippet":""},"rubyindexer::methodtest":{"title":"RubyIndexer::MethodTest","namespace":"","path":"RubyIndexer/MethodTest.html","snippet":""},"rubyindexer::prefixtree":{"title":"RubyIndexer::PrefixTree","namespace":"","path":"RubyIndexer/PrefixTree.html","snippet":"

A PrefixTree is a data structure that allows searching for partial strings fast. The tree is similar …\n"},"rubyindexer::prefixtree::node":{"title":"RubyIndexer::PrefixTree::Node","namespace":"","path":"RubyIndexer/PrefixTree/Node.html","snippet":""},"rubyindexer::prefixtreetest":{"title":"RubyIndexer::PrefixTreeTest","namespace":"","path":"RubyIndexer/PrefixTreeTest.html","snippet":""},"rubyindexer::rbsindexer":{"title":"RubyIndexer::RBSIndexer","namespace":"","path":"RubyIndexer/RBSIndexer.html","snippet":""},"rubyindexer::rbsindexertest":{"title":"RubyIndexer::RBSIndexerTest","namespace":"","path":"RubyIndexer/RBSIndexerTest.html","snippet":""},"rubyindexer::testcase":{"title":"RubyIndexer::TestCase","namespace":"","path":"RubyIndexer/TestCase.html","snippet":""},"rubylsp":{"title":"RubyLsp","namespace":"","path":"RubyLsp.html","snippet":"

typed: true\n

typed: strict\n

typed: strict\n"},"rubylsp::addon":{"title":"RubyLsp::Addon","namespace":"","path":"RubyLsp/Addon.html","snippet":"

To register an addon, inherit from this class and implement both name and activate\n

Example\n\n

module MyGem ...
\n"},"rubylsp::baseserver":{"title":"RubyLsp::BaseServer","namespace":"","path":"RubyLsp/BaseServer.html","snippet":""},"rubylsp::checkdocs":{"title":"RubyLsp::CheckDocs","namespace":"","path":"RubyLsp/CheckDocs.html","snippet":"

This rake task checks that all requests or addons are fully documented. Add the rake task to your Rakefile …\n"},"rubylsp::document":{"title":"RubyLsp::Document","namespace":"","path":"RubyLsp/Document.html","snippet":""},"rubylsp::document::scanner":{"title":"RubyLsp::Document::Scanner","namespace":"","path":"RubyLsp/Document/Scanner.html","snippet":""},"rubylsp::error":{"title":"RubyLsp::Error","namespace":"","path":"RubyLsp/Error.html","snippet":""},"rubylsp::globalstate":{"title":"RubyLsp::GlobalState","namespace":"","path":"RubyLsp/GlobalState.html","snippet":""},"rubylsp::inlinetypeassertions":{"title":"RubyLsp::InlineTypeAssertions","namespace":"","path":"RubyLsp/InlineTypeAssertions.html","snippet":"

No-op all inline type assertions defined in T\n"},"rubylsp::listeners":{"title":"RubyLsp::Listeners","namespace":"","path":"RubyLsp/Listeners.html","snippet":""},"rubylsp::listeners::codelens":{"title":"RubyLsp::Listeners::CodeLens","namespace":"","path":"RubyLsp/Listeners/CodeLens.html","snippet":""},"rubylsp::listeners::completion":{"title":"RubyLsp::Listeners::Completion","namespace":"","path":"RubyLsp/Listeners/Completion.html","snippet":""},"rubylsp::listeners::definition":{"title":"RubyLsp::Listeners::Definition","namespace":"","path":"RubyLsp/Listeners/Definition.html","snippet":""},"rubylsp::listeners::documenthighlight":{"title":"RubyLsp::Listeners::DocumentHighlight","namespace":"","path":"RubyLsp/Listeners/DocumentHighlight.html","snippet":""},"rubylsp::listeners::documentlink":{"title":"RubyLsp::Listeners::DocumentLink","namespace":"","path":"RubyLsp/Listeners/DocumentLink.html","snippet":""},"rubylsp::listeners::documentsymbol":{"title":"RubyLsp::Listeners::DocumentSymbol","namespace":"","path":"RubyLsp/Listeners/DocumentSymbol.html","snippet":""},"rubylsp::listeners::foldingranges":{"title":"RubyLsp::Listeners::FoldingRanges","namespace":"","path":"RubyLsp/Listeners/FoldingRanges.html","snippet":""},"rubylsp::listeners::hover":{"title":"RubyLsp::Listeners::Hover","namespace":"","path":"RubyLsp/Listeners/Hover.html","snippet":""},"rubylsp::listeners::inlayhints":{"title":"RubyLsp::Listeners::InlayHints","namespace":"","path":"RubyLsp/Listeners/InlayHints.html","snippet":""},"rubylsp::listeners::semantichighlighting":{"title":"RubyLsp::Listeners::SemanticHighlighting","namespace":"","path":"RubyLsp/Listeners/SemanticHighlighting.html","snippet":""},"rubylsp::listeners::signaturehelp":{"title":"RubyLsp::Listeners::SignatureHelp","namespace":"","path":"RubyLsp/Listeners/SignatureHelp.html","snippet":""},"rubylsp::message":{"title":"RubyLsp::Message","namespace":"","path":"RubyLsp/Message.html","snippet":"

A notification to be sent to the client\n"},"rubylsp::nodecontext":{"title":"RubyLsp::NodeContext","namespace":"","path":"RubyLsp/NodeContext.html","snippet":"

This class allows listeners to access contextual information about a node in the AST, such as its parent, …\n"},"rubylsp::notification":{"title":"RubyLsp::Notification","namespace":"","path":"RubyLsp/Notification.html","snippet":""},"rubylsp::parameterscope":{"title":"RubyLsp::ParameterScope","namespace":"","path":"RubyLsp/ParameterScope.html","snippet":""},"rubylsp::request":{"title":"RubyLsp::Request","namespace":"","path":"RubyLsp/Request.html","snippet":""},"rubylsp::requestconfig":{"title":"RubyLsp::RequestConfig","namespace":"","path":"RubyLsp/RequestConfig.html","snippet":"

A request configuration, to turn on/off features\n"},"rubylsp::requests":{"title":"RubyLsp::Requests","namespace":"","path":"RubyLsp/Requests.html","snippet":"

Supported features\n

DocumentSymbol\n

DocumentLink\n"},"rubylsp::requests::codeactionresolve":{"title":"RubyLsp::Requests::CodeActionResolve","namespace":"","path":"RubyLsp/Requests/CodeActionResolve.html","snippet":"

\n

The code action resolve\nrequest is used to to resolve the edit ...\n"},"rubylsp::requests::codeactionresolve::codeactionerror":{"title":"RubyLsp::Requests::CodeActionResolve::CodeActionError","namespace":"","path":"RubyLsp/Requests/CodeActionResolve/CodeActionError.html","snippet":""},"rubylsp::requests::codeactionresolve::error":{"title":"RubyLsp::Requests::CodeActionResolve::Error","namespace":"","path":"RubyLsp/Requests/CodeActionResolve/Error.html","snippet":""},"rubylsp::requests::codeactions":{"title":"RubyLsp::Requests::CodeActions","namespace":"","path":"RubyLsp/Requests/CodeActions.html","snippet":"

\n

The code actions\nrequest informs the editor of RuboCop quick fixes ...\n"},"rubylsp::requests::codelens":{"title":"RubyLsp::Requests::CodeLens","namespace":"","path":"RubyLsp/Requests/CodeLens.html","snippet":"

\n

The\ncode lens\nrequest informs the editor of runnable commands such as ...\n"},"rubylsp::requests::completion":{"title":"RubyLsp::Requests::Completion","namespace":"","path":"RubyLsp/Requests/Completion.html","snippet":"

\n

The completion\nsuggests possible completions according to what the developer ...\n"},"rubylsp::requests::completionresolve":{"title":"RubyLsp::Requests::CompletionResolve","namespace":"","path":"RubyLsp/Requests/CompletionResolve.html","snippet":"

\n

The completionItem/resolve\nrequest provides additional information ...\n"},"rubylsp::requests::definition":{"title":"RubyLsp::Requests::Definition","namespace":"","path":"RubyLsp/Requests/Definition.html","snippet":"

\n

The definition request jumps to the\ndefinition of the symbol under the ...\n"},"rubylsp::requests::diagnostics":{"title":"RubyLsp::Requests::Diagnostics","namespace":"","path":"RubyLsp/Requests/Diagnostics.html","snippet":"

\n

The\ndiagnostics\nrequest informs the editor of RuboCop offenses for a ...\n"},"rubylsp::requests::documenthighlight":{"title":"RubyLsp::Requests::DocumentHighlight","namespace":"","path":"RubyLsp/Requests/DocumentHighlight.html","snippet":"

\n

The document highlight\ninforms the editor all relevant elements ...\n"},"rubylsp::requests::documentlink":{"title":"RubyLsp::Requests::DocumentLink","namespace":"","path":"RubyLsp/Requests/DocumentLink.html","snippet":"

\n

The document link\nmakes # source://PATH_TO_FILE#line comments in a ...\n"},"rubylsp::requests::documentsymbol":{"title":"RubyLsp::Requests::DocumentSymbol","namespace":"","path":"RubyLsp/Requests/DocumentSymbol.html","snippet":"

\n

The document symbol request\ninforms the editor of all the important ...\n"},"rubylsp::requests::foldingranges":{"title":"RubyLsp::Requests::FoldingRanges","namespace":"","path":"RubyLsp/Requests/FoldingRanges.html","snippet":"

\n

The folding ranges\nrequest informs the editor of the ranges where ...\n"},"rubylsp::requests::formatting":{"title":"RubyLsp::Requests::Formatting","namespace":"","path":"RubyLsp/Requests/Formatting.html","snippet":"

\n

The formatting\nrequest uses RuboCop to fix auto-correctable offenses ...\n"},"rubylsp::requests::formatting::error":{"title":"RubyLsp::Requests::Formatting::Error","namespace":"","path":"RubyLsp/Requests/Formatting/Error.html","snippet":""},"rubylsp::requests::hover":{"title":"RubyLsp::Requests::Hover","namespace":"","path":"RubyLsp/Requests/Hover.html","snippet":"

\n

The hover request\ndisplays the documentation for the symbol currently under ...\n"},"rubylsp::requests::inlayhints":{"title":"RubyLsp::Requests::InlayHints","namespace":"","path":"RubyLsp/Requests/InlayHints.html","snippet":"

\n

Inlay hints\nare labels added directly in the code that explicitly show ...\n"},"rubylsp::requests::ontypeformatting":{"title":"RubyLsp::Requests::OnTypeFormatting","namespace":"","path":"RubyLsp/Requests/OnTypeFormatting.html","snippet":"

\n

The on type formatting\nrequest formats code as the user is typing. ...\n"},"rubylsp::requests::request":{"title":"RubyLsp::Requests::Request","namespace":"","path":"RubyLsp/Requests/Request.html","snippet":""},"rubylsp::requests::request::invalidformatter":{"title":"RubyLsp::Requests::Request::InvalidFormatter","namespace":"","path":"RubyLsp/Requests/Request/InvalidFormatter.html","snippet":""},"rubylsp::requests::selectionranges":{"title":"RubyLsp::Requests::SelectionRanges","namespace":"","path":"RubyLsp/Requests/SelectionRanges.html","snippet":"

\n

The selection ranges\nrequest informs the editor of ranges that ...\n"},"rubylsp::requests::semantichighlighting":{"title":"RubyLsp::Requests::SemanticHighlighting","namespace":"","path":"RubyLsp/Requests/SemanticHighlighting.html","snippet":"

\n

The semantic highlighting\nrequest informs the editor of the ...\n"},"rubylsp::requests::showsyntaxtree":{"title":"RubyLsp::Requests::ShowSyntaxTree","namespace":"","path":"RubyLsp/Requests/ShowSyntaxTree.html","snippet":"

\n

Show syntax tree is a custom LSP request that displays the AST …\n"},"rubylsp::requests::signaturehelp":{"title":"RubyLsp::Requests::SignatureHelp","namespace":"","path":"RubyLsp/Requests/SignatureHelp.html","snippet":"

\n

The signature help request displays\ninformation about the parameters ...\n"},"rubylsp::requests::support":{"title":"RubyLsp::Requests::Support","namespace":"","path":"RubyLsp/Requests/Support.html","snippet":""},"rubylsp::requests::support::annotation":{"title":"RubyLsp::Requests::Support::Annotation","namespace":"","path":"RubyLsp/Requests/Support/Annotation.html","snippet":""},"rubylsp::requests::support::common":{"title":"RubyLsp::Requests::Support::Common","namespace":"","path":"RubyLsp/Requests/Support/Common.html","snippet":""},"rubylsp::requests::support::formatter":{"title":"RubyLsp::Requests::Support::Formatter","namespace":"","path":"RubyLsp/Requests/Support/Formatter.html","snippet":""},"rubylsp::requests::support::internalrubocoperror":{"title":"RubyLsp::Requests::Support::InternalRuboCopError","namespace":"","path":"RubyLsp/Requests/Support/InternalRuboCopError.html","snippet":""},"rubylsp::requests::support::rubocopdiagnostic":{"title":"RubyLsp::Requests::Support::RuboCopDiagnostic","namespace":"","path":"RubyLsp/Requests/Support/RuboCopDiagnostic.html","snippet":""},"rubylsp::requests::support::rubocopformatter":{"title":"RubyLsp::Requests::Support::RuboCopFormatter","namespace":"","path":"RubyLsp/Requests/Support/RuboCopFormatter.html","snippet":""},"rubylsp::requests::support::rubocoprunner":{"title":"RubyLsp::Requests::Support::RuboCopRunner","namespace":"","path":"RubyLsp/Requests/Support/RuboCopRunner.html","snippet":""},"rubylsp::requests::support::rubocoprunner::configurationerror":{"title":"RubyLsp::Requests::Support::RuboCopRunner::ConfigurationError","namespace":"","path":"RubyLsp/Requests/Support/RuboCopRunner/ConfigurationError.html","snippet":""},"rubylsp::requests::support::selectionrange":{"title":"RubyLsp::Requests::Support::SelectionRange","namespace":"","path":"RubyLsp/Requests/Support/SelectionRange.html","snippet":""},"rubylsp::requests::support::sorbet":{"title":"RubyLsp::Requests::Support::Sorbet","namespace":"","path":"RubyLsp/Requests/Support/Sorbet.html","snippet":""},"rubylsp::requests::support::syntaxtreeformatter":{"title":"RubyLsp::Requests::Support::SyntaxTreeFormatter","namespace":"","path":"RubyLsp/Requests/Support/SyntaxTreeFormatter.html","snippet":""},"rubylsp::requests::workspacesymbol":{"title":"RubyLsp::Requests::WorkspaceSymbol","namespace":"","path":"RubyLsp/Requests/WorkspaceSymbol.html","snippet":"

\n

The workspace symbol\nrequest allows fuzzy searching declarations ...\n"},"rubylsp::responsebuilders":{"title":"RubyLsp::ResponseBuilders","namespace":"","path":"RubyLsp/ResponseBuilders.html","snippet":""},"rubylsp::responsebuilders::collectionresponsebuilder":{"title":"RubyLsp::ResponseBuilders::CollectionResponseBuilder","namespace":"","path":"RubyLsp/ResponseBuilders/CollectionResponseBuilder.html","snippet":""},"rubylsp::responsebuilders::documentsymbol":{"title":"RubyLsp::ResponseBuilders::DocumentSymbol","namespace":"","path":"RubyLsp/ResponseBuilders/DocumentSymbol.html","snippet":""},"rubylsp::responsebuilders::documentsymbol::symbolhierarchyroot":{"title":"RubyLsp::ResponseBuilders::DocumentSymbol::SymbolHierarchyRoot","namespace":"","path":"RubyLsp/ResponseBuilders/DocumentSymbol/SymbolHierarchyRoot.html","snippet":""},"rubylsp::responsebuilders::hover":{"title":"RubyLsp::ResponseBuilders::Hover","namespace":"","path":"RubyLsp/ResponseBuilders/Hover.html","snippet":""},"rubylsp::responsebuilders::responsebuilder":{"title":"RubyLsp::ResponseBuilders::ResponseBuilder","namespace":"","path":"RubyLsp/ResponseBuilders/ResponseBuilder.html","snippet":""},"rubylsp::responsebuilders::semantichighlighting":{"title":"RubyLsp::ResponseBuilders::SemanticHighlighting","namespace":"","path":"RubyLsp/ResponseBuilders/SemanticHighlighting.html","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictoken":{"title":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticToken","namespace":"","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticToken.html","snippet":""},"rubylsp::responsebuilders::semantichighlighting::semantictokenencoder":{"title":"RubyLsp::ResponseBuilders::SemanticHighlighting::SemanticTokenEncoder","namespace":"","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/SemanticTokenEncoder.html","snippet":""},"rubylsp::responsebuilders::semantichighlighting::undefinedtokentype":{"title":"RubyLsp::ResponseBuilders::SemanticHighlighting::UndefinedTokenType","namespace":"","path":"RubyLsp/ResponseBuilders/SemanticHighlighting/UndefinedTokenType.html","snippet":""},"rubylsp::responsebuilders::signaturehelp":{"title":"RubyLsp::ResponseBuilders::SignatureHelp","namespace":"","path":"RubyLsp/ResponseBuilders/SignatureHelp.html","snippet":""},"rubylsp::result":{"title":"RubyLsp::Result","namespace":"","path":"RubyLsp/Result.html","snippet":"

The final result of running a request before its IO is finalized\n"},"rubylsp::rubydocument":{"title":"RubyLsp::RubyDocument","namespace":"","path":"RubyLsp/RubyDocument.html","snippet":""},"rubylsp::server":{"title":"RubyLsp::Server","namespace":"","path":"RubyLsp/Server.html","snippet":""},"rubylsp::setupbundler":{"title":"RubyLsp::SetupBundler","namespace":"","path":"RubyLsp/SetupBundler.html","snippet":""},"rubylsp::setupbundler::bundleinstallfailure":{"title":"RubyLsp::SetupBundler::BundleInstallFailure","namespace":"","path":"RubyLsp/SetupBundler/BundleInstallFailure.html","snippet":""},"rubylsp::setupbundler::bundlenotlocked":{"title":"RubyLsp::SetupBundler::BundleNotLocked","namespace":"","path":"RubyLsp/SetupBundler/BundleNotLocked.html","snippet":""},"rubylsp::store":{"title":"RubyLsp::Store","namespace":"","path":"RubyLsp/Store.html","snippet":""},"rubylsp::testhelper":{"title":"RubyLsp::TestHelper","namespace":"","path":"RubyLsp/TestHelper.html","snippet":""},"uri":{"title":"URI","namespace":"","path":"URI.html","snippet":"

typed: strict\n"},"uri::generic":{"title":"URI::Generic","namespace":"","path":"URI/Generic.html","snippet":""},"uri::source":{"title":"URI::Source","namespace":"","path":"URI/Source.html","snippet":"

Must be kept in sync with the one in Tapioca\n"}} \ No newline at end of file diff --git a/docs/js/search_index.js.gz b/docs/js/search_index.js.gz new file mode 100644 index 0000000000..3f670ea634 Binary files /dev/null and b/docs/js/search_index.js.gz differ diff --git a/docs/js/snapper.js b/docs/js/snapper.js new file mode 100644 index 0000000000..05f2b9c9c8 --- /dev/null +++ b/docs/js/snapper.js @@ -0,0 +1,119 @@ +"use strict"; + +let searchModal; +let searchModalContent; +let sideSearchInput; +let searchInput; +let searchResults; +let mainContainer; + +function hideSearchModal() { + searchModal.style.display = "none"; + mainContainer.style.filter = "none"; +} + +function showSearchModal() { + searchModal.style.display = "flex"; + mainContainer.style.filter = "blur(8px)"; + + if (searchResults.innerHTML === "") { + // Populate the search modal with the first 10 items to start + const keys = Object.keys(searchIndex).slice(0, 10); + const initialEntries = keys.map((key) => { + return searchIndex[key]; + }); + searchResults.innerHTML = htmlForResults(initialEntries); + } + + searchInput.value = ""; + searchInput.focus(); +} + +function htmlForResults(results) { + // The solo closing p tag is intentional. The snippet is HTML and includes only the opening of the tag + return results.map((result) => { + let name = result.title; + + if (result.namespace) { + name += ` (${result.namespace})`; + } + const escapedPath = result.path.replace(/[&<>"`']/g, (c) => `&#${c.charCodeAt(0)};`); + + return `

  • + + ${name} + ${result.snippet}

    +
    +
  • `; + }).join(""); +} + +function setupSearch() { + searchModal = document.getElementById("search-modal"); + searchModalContent = document.getElementById("search-modal-content"); + sideSearchInput = document.getElementById("side-search"); + mainContainer = document.getElementById("main-container"); + searchInput = document.getElementById("search-modal-input"); + searchResults = document.getElementById("search-results"); + + // Toggle the search modal on CMD|CTRL + K + document.addEventListener("keydown", (event) => { + if (event.metaKey && event.key === "k") { + if (searchModal.style.display === "flex") { + hideSearchModal(); + } else { + showSearchModal(); + } + } else if (event.key === "Escape") { + hideSearchModal(); + } + }); + + // Show the search modal when clicking on the side search input. Hide it when clicking anywhere outside of the modal + document.addEventListener("click", (event) => { + if (event.target === sideSearchInput) { + showSearchModal(); + } else if (!searchModalContent.contains(event.target)) { + hideSearchModal(); + } + }); + + // Search submission + let debounceTimerId; + + searchInput.addEventListener("input", (event) => { + clearTimeout(debounceTimerId); + + debounceTimerId = setTimeout(() => { + if (event.target.value === "") { + searchResults.innerHTML = ""; + return; + } + + const regex = new RegExp(event.target.value, "i"); + const results = Object.keys(searchIndex).filter((key) => regex.test(key)).map((key) => searchIndex[key]); + + if (results.length === 0) { + searchResults.innerHTML = "
  • No results found

  • "; + return; + } + + searchResults.innerHTML = htmlForResults(results); + }, 500); + }); +} + +function setupShowSource() { + const showSourceButtons = document.getElementsByClassName("show-source"); + + for (const button of showSourceButtons) { + const parentEntry = button.closest(".method-entry"); + const methodSource = parentEntry.getElementsByClassName("method-source")[0]; + button.addEventListener("click", (_event) => methodSource.classList.toggle("hidden")); + }; +} + +window.addEventListener("DOMContentLoaded", (_event) => { + setupSearch(); + setupShowSource(); +}); diff --git a/docs/js/snapper.js.gz b/docs/js/snapper.js.gz new file mode 100644 index 0000000000..56135c95b2 Binary files /dev/null and b/docs/js/snapper.js.gz differ diff --git a/docs/on_type_formatting.gif b/docs/on_type_formatting.gif new file mode 100644 index 0000000000..bacea36cfa Binary files /dev/null and b/docs/on_type_formatting.gif differ diff --git a/docs/selection_ranges.gif b/docs/selection_ranges.gif new file mode 100644 index 0000000000..d33400a779 Binary files /dev/null and b/docs/selection_ranges.gif differ diff --git a/docs/semantic_highlighting.gif b/docs/semantic_highlighting.gif new file mode 100644 index 0000000000..ef4232f4bb Binary files /dev/null and b/docs/semantic_highlighting.gif differ diff --git a/docs/show_syntax_tree.gif b/docs/show_syntax_tree.gif new file mode 100644 index 0000000000..e44186bbc6 Binary files /dev/null and b/docs/show_syntax_tree.gif differ diff --git a/docs/signature_help.gif b/docs/signature_help.gif new file mode 100644 index 0000000000..2cc4602416 Binary files /dev/null and b/docs/signature_help.gif differ diff --git a/docs/vscode/extras/ruby_lsp_demo.gif b/docs/vscode/extras/ruby_lsp_demo.gif new file mode 100644 index 0000000000..d3fb2d37a2 Binary files /dev/null and b/docs/vscode/extras/ruby_lsp_demo.gif differ diff --git a/docs/vscode/extras/ruby_lsp_status_center.png b/docs/vscode/extras/ruby_lsp_status_center.png new file mode 100644 index 0000000000..e23bae2595 Binary files /dev/null and b/docs/vscode/extras/ruby_lsp_status_center.png differ diff --git a/docs/vscode/icon.png b/docs/vscode/icon.png new file mode 100644 index 0000000000..ad0a7e076b Binary files /dev/null and b/docs/vscode/icon.png differ diff --git a/docs/workspace_symbol.gif b/docs/workspace_symbol.gif new file mode 100644 index 0000000000..385fa7f012 Binary files /dev/null and b/docs/workspace_symbol.gif differ