Skip to content

Commit

Permalink
Formatting message handles empty files.
Browse files Browse the repository at this point in the history
  • Loading branch information
castwide committed Mar 26, 2020
1 parent c020026 commit ec8b181
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
27 changes: 16 additions & 11 deletions lib/solargraph/language_server/message/text_document/formatting.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,22 @@ def process
# @param result [String]
# @return [void]
def format original, result
if original.end_with?("\n")
ending = {
line: original.lines.length,
character: 0
}
else
ending = {
line: original.lines.length - 1,
character: original.lines.last.length
}
end
ending = if original.end_with?("\n")
{
line: original.lines.length,
character: 0
}
elsif original.lines.empty?
{
line: 0,
character: 0
}
else
{
line: original.lines.length - 1,
character: original.lines.last.length
}
end
set_result(
[
{
Expand Down
15 changes: 15 additions & 0 deletions spec/language_server/message/text_document/formatting_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
describe Solargraph::LanguageServer::Message::TextDocument::Formatting do
it 'gracefully handles empty files' do
host = double(:Host, read_text: '')
request = {
'params' => {
'textDocument' => {
'uri' => 'test.rb'
}
}
}
message = Solargraph::LanguageServer::Message::TextDocument::Formatting.new(host, request)
message.process
expect(message.process.first[:newText]).to be_empty
end
end

0 comments on commit ec8b181

Please sign in to comment.