From 0d3b6518e39a28774e4e70ed9bb7ef4aa009c0cf Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 19 Jan 2023 17:31:43 +0200 Subject: [PATCH] (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") -- 2.39.2