1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

Don't misindent arguments of a method call inside continuation

* lisp/progmodes/ruby-mode.el (ruby-smie-rules):
Use smie-indent-virtual instead of smie-rule-parent (bug#23015).
Simplify the traversal loop.
This commit is contained in:
Dmitry Gutov 2016-03-15 03:12:19 +02:00
parent e6776f8362
commit 040362001d
2 changed files with 18 additions and 13 deletions

View File

@ -629,19 +629,13 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
;; because when `.' is inside the line, the
;; additional indentation from it looks out of place.
((smie-rule-parent-p ".")
(let (smie--parent)
(save-excursion
;; Traverse up the parents until the parent is "." at
;; indentation, or any other token.
(while (and (let ((parent (smie-indent--parent)))
(goto-char (cadr parent))
(save-excursion
(unless (integerp (car parent)) (forward-char -1))
(not (ruby-smie--bosp))))
(progn
(setq smie--parent nil)
(smie-rule-parent-p "."))))
(smie-rule-parent))))
;; Traverse up the call chain until the parent is not `.',
;; or `.' at indentation, or at eol.
(while (and (not (ruby-smie--bosp))
(equal (nth 2 (smie-backward-sexp ".")) ".")
(not (ruby-smie--bosp)))
(forward-char -1))
(smie-indent-virtual))
(t (smie-rule-parent))))))
(`(:after . ,(or `"(" "[" "{"))
;; FIXME: Shouldn't this be the default behavior of

View File

@ -405,6 +405,17 @@ def qux
a.records().map(&:b).zip(
foo)
foo1 =
subject.update(
1
)
foo2 =
subject.
update(
2
)
# FIXME: This is not consistent with the example below it, but this
# offset only happens if the colon is at eol, which wouldn't be often.
# Tokenizing `bar:' as `:bar =>' would be better, but it's hard to