From 5daa8f5946e50dd3c461079442452115f47e44a1 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 22 Jul 2019 10:14:01 +0900 Subject: [PATCH] Strip trailing whitespaces at the end of converted do block * lisp/progmodes/ruby-mode.el (ruby-brace-to-do-end): Strip trailing whitespaces at the end of converted do block. https://bugs.ruby-lang.org/issues/16014 https://github.com/syl20bnr/spacemacs/issues/12548 --- lisp/progmodes/ruby-mode.el | 3 ++- test/lisp/progmodes/ruby-mode-tests.el | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 8eadf018..1fe832d9 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -1690,7 +1690,8 @@ ruby-brace-to-do-end (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") diff --git a/test/lisp/progmodes/ruby-mode-tests.el b/test/lisp/progmodes/ruby-mode-tests.el index efbe0124..83fcdd8a 100644 --- a/test/lisp/progmodes/ruby-mode-tests.el +++ b/test/lisp/progmodes/ruby-mode-tests.el @@ -369,7 +369,11 @@ ruby-toggle-block-to-do-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 }") -- 2.22.0