ruby-lsp
ruby-lsp copied to clipboard
An opinionated language server for Ruby
We allow users to configure the desired features from the VS Code plugin. However, it currently requires starting the LSP for the configuration changes to take effect. We can use...
If we add the indexer in #199, then it knows which classes, modules, constants and methods are defined in a workspace, which allows us to provide the workspace symbols request....
Despite not being able to provide a fully correct go to definition implementation (which requires type checking), the Ruby LSP could provide a simpler version of it. One possible idea...
Range formatting is a request very similar to formatting, but it applies only to the selected range and not the entire document. Currently, trying to format ranges with either RuboCop...
We can use a similar mechanism of #199 and find possible references if we store those in the index. These will not always be correct as type checking is needed...
If https://github.com/Shopify/ruby-lsp/issues/199 works and is successful in providing decent results for finding possible method definitions, we can use the same mechanism to provide hover. This request shows documentation/information about methods...
If #199 works and is successful in providing decent results for finding possible method definitions, we can use the same mechanism to provide signature help. This request shows the method...
Inlay hints display "invisible" information to the user to assist with the understanding of the code. For example: ```ruby class User < ApplicationRecord (self.)has_many :posts #^ inlay hint displaying the...
We currently provide examples of supported features as gifs and [written code examples](https://github.com/Shopify/ruby-lsp/blob/main/lib/ruby_lsp/requests/folding_ranges.rb#L9). While gifs better demonstrate the functionality we've implemented, they are not accessible to people with slow internet...
[This regexp](https://github.com/ruby/ruby/blob/714a4942fdb1e71ce38032a9f4bab10855a4bea8/test/ruby/test_rubyoptions.rb#L738-L774) that seems to mess things up: ```rb ExpectedStderrList = [ %r( -e:(?:1:)?\s\[BUG\]\sSegmentation\sfault.*\n )x, %r( #{ Regexp.quote(NO_JIT_DESCRIPTION) }\n\n )x, %r( (?:--\s(?:.+\n)*\n)? --\sControl\sframe\sinformation\s-+\n (?:(?:c:.*\n)|(?:^\s+.+\n))* \n )x, %r( (?: --\sRuby\slevel\sbacktrace\sinformation\s----------------------------------------\n (?:-e:1:in\s\`(?:block\sin\s)?\'\n)*...