[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 0d3b6518e39 1/4: (ruby-ts--indent-rules): Indent inside empty p
From: |
Dmitry Gutov |
Subject: |
emacs-29 0d3b6518e39 1/4: (ruby-ts--indent-rules): Indent inside empty parens properly |
Date: |
Thu, 19 Jan 2023 12:44:55 -0500 (EST) |
branch: emacs-29
commit 0d3b6518e39a28774e4e70ed9bb7ef4aa009c0cf
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--indent-rules): Indent inside empty parens properly
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
Consider the case when there are no arguments inside the call yet.
* test/lisp/progmodes/ruby-ts-mode-tests.el
(ruby-ts-indent-call-no-args): Add test.
---
lisp/progmodes/ruby-ts-mode.el | 4 +++-
test/lisp/progmodes/ruby-ts-mode-tests.el | 12 ++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index f075824591d..41a1d8df2a6 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -680,7 +680,9 @@ a statement container is a node that matches
((and (query "(argument_list \"(\" _ @indent)")
(node-is ")"))
ruby-ts--parent-call-or-bol 0)
- ((query "(argument_list \"(\" _ @indent)")
+ ((or (query "(argument_list \"(\" _ @indent)")
+ ;; No arguments yet; NODE is nil in that case.
+ (match "\\`\\'" "argument_list"))
ruby-ts--parent-call-or-bol ruby-indent-level)
;; 3) No paren, ruby-parenless-call-arguments-indent is t
((and ruby-ts--parenless-call-arguments-indent-p (parent-is
"argument_list"))
diff --git a/test/lisp/progmodes/ruby-ts-mode-tests.el
b/test/lisp/progmodes/ruby-ts-mode-tests.el
index d34c235e82b..18e3e60a04a 100644
--- a/test/lisp/progmodes/ruby-ts-mode-tests.el
+++ b/test/lisp/progmodes/ruby-ts-mode-tests.el
@@ -110,6 +110,18 @@ The whitespace before and including \"|\" on each line is
removed."
| 42
| end")))
+
+(ert-deftest ruby-ts-indent-call-no-args ()
+ (skip-unless (treesit-ready-p 'ruby t))
+ (ruby-ts-with-temp-buffer
+ "variable = foo(
+
+)"
+ (goto-char (point-min))
+ (forward-line 1)
+ (funcall indent-line-function)
+ (should (= (current-indentation) ruby-indent-level))))
+
(ert-deftest ruby-ts-add-log-current-method-examples ()
(skip-unless (treesit-ready-p 'ruby t))
(let ((pairs '(("foo" . "#foo")