* lisp/progmodes/ruby-mode.el (ruby-brace-to-do-end):
Strip trailing whitespaces at the end of converted do block
(bug#36756).
https://bugs.ruby-lang.org/issues/16014
https://github.com/syl20bnr/spacemacs/issues/12548
(when (eq (char-before) ?\})
(delete-char -1)
(when (save-excursion
- (skip-chars-backward " \t")
+ (let ((n (skip-chars-backward " \t")))
+ (if (< n 0) (delete-char (- n))))
(not (bolp)))
(insert "\n"))
(insert "end")
(ruby-with-temp-buffer "foo {|b|\n}"
(beginning-of-line)
(ruby-toggle-block)
- (should (string= "foo do |b|\nend" (buffer-string)))))
+ (should (string= "foo do |b|\nend" (buffer-string))))
+ (ruby-with-temp-buffer "foo {|b| b }"
+ (beginning-of-line)
+ (ruby-toggle-block)
+ (should (string= "foo do |b|\n b\nend" (buffer-string)))))
(ert-deftest ruby-toggle-block-to-brace ()
(let ((pairs '((17 . "foo { |b| b + 2 }")