[前][次][番号順一覧][スレッド一覧]

ruby-changes:58851

From: aycabta <ko1@a...>
Date: Wed, 20 Nov 2019 10:06:03 +0900 (JST)
Subject: [ruby-changes:58851] da0d7211aa (master): Fix indent of a line when a newline is inserted to the next

https://git.ruby-lang.org/ruby.git/commit/?id=da0d7211aa

From da0d7211aa85b90f2246e2d9abfe08105f7ddedb Mon Sep 17 00:00:00 2001
From: aycabta <aycabta@g...>
Date: Wed, 20 Nov 2019 10:04:41 +0900
Subject: Fix indent of a line when a newline is inserted to the next


diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index 55a5faf..aab20b8 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -806,6 +806,26 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L806
 
   private def process_auto_indent
     return if not @check_new_auto_indent and @previous_line_index # move cursor up or down
+    if @check_new_auto_indent and @previous_line_index and @previous_line_index > 0 and @line_index > @previous_line_index
+      # Fix indent of a line when a newline is inserted to the next
+      new_lines = whole_lines(index: @previous_line_index, line: @line)
+      new_indent = @auto_indent_proc.(new_lines[0..-3].push(''), @line_index - 1, 0, true)
+      md = @line.match(/\A */)
+      prev_indent = md[0].count(' ')
+      @line = ' ' * new_indent + @line.lstrip
+
+      new_indent = nil
+      (new_lines[-2].size + 1).times do |n|
+        result = @auto_indent_proc.(new_lines[0..-2], @line_index - 1, n, false)
+        if result
+          new_indent = result
+          break
+        end
+      end
+      if new_indent&.>= 0
+        @line = ' ' * new_indent + @line.lstrip
+      end
+    end
     if @previous_line_index
       new_lines = whole_lines(index: @previous_line_index, line: @line)
     else
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]