It was reported via Reddit that onTypeFormatting (enabled by default) LSP feature in Ruby LSP causes issues:

Why? Ruby LSP tries to improve UX and complete block params automatically. Here is how it look in VSCode:

This is done by sending the following response:
Specifically the last TextEdit command breaks bevahior in Zed:
This commands moves the cursor to the $0 the final cursor position. $0 is a part of the LSP Snippets.
Workaround
The workaround is to disable onTypeFormatting via Zed settings like this:
It was reported via Reddit that
onTypeFormatting(enabled by default) LSP feature in Ruby LSP causes issues:Why? Ruby LSP tries to improve UX and complete block params automatically. Here is how it look in VSCode:
This is done by sending the following response:
[ { "range": { "start": { "line": 1, "character": 12 }, "end": { "line": 1, "character": 12 } }, "newText": "|" }, { "range": { "start": { "line": 1, "character": 12 }, "end": { "line": 1, "character": 12 } }, "newText": "$0" } ]Specifically the last
TextEditcommand breaks bevahior in Zed:{ "range": { "start": { "line": 1, "character": 12 }, "end": { "line": 1, "character": 12 } }, "newText": "$0" }This commands moves the cursor to the
$0the final cursor position.$0is a part of the LSP Snippets.Workaround
The workaround is to disable
onTypeFormattingvia Zed settings like this:{ "lsp": { "ruby-lsp": { "initialization_options": { "enabledFeatures": { "onTypeFormatting": false } } } } }