# File lib/ruby_lsp/listeners/signature_help.rb, line 29defon_call_node_enter(node)
returnif@typechecker_enabledreturnunlessself_receiver?(node)
message = node.messagereturnunlessmessagemethods = @index.resolve_method(message, @nesting.join("::"))
returnunlessmethodstarget_method = methods.firstreturnunlesstarget_methodparameters = target_method.parametersname = target_method.name# If the method doesn't have any parameters, there's no need to show signature helpreturnifparameters.empty?label = "#{name}(#{parameters.map(&:decorated_name).join(", ")})"arguments_node = node.argumentsarguments = arguments_node&.arguments|| []
active_parameter = (arguments.length-1).clamp(0, parameters.length-1)
# If there are arguments, then we need to check if there's a trailing comma after the end of the last argument# to advance the active parameter to the next oneifarguments_node&&node.slice.byteslice(arguments_node.location.end_offset-node.location.start_offset) ==","active_parameter+=1endsignature_help = Interface::SignatureHelp.new(
signatures: [
Interface::SignatureInformation.new(
label:label,
parameters:parameters.map { |param|Interface::ParameterInformation.new(label:param.name) },
documentation:Interface::MarkupContent.new(
kind:"markdown",
value:markdown_from_index_entries("", methods),
),
),
],
active_parameter:active_parameter,
)
@response_builder.replace(signature_help)
end