Function: web-mode-ruby-indentation
web-mode-ruby-indentation is a natively compiled function defined in
web-mode.el.
Signature
(web-mode-ruby-indentation POS LINE INITIAL-COLUMN LANGUAGE-OFFSET LIMIT)
Source Code
;; Defined in /nix/store/2qgnz1rp30nzfz6w0apx4kdm14if1bbs-emacs-packages-deps/share/emacs/site-lisp/elpa/web-mode-20260831.219/web-mode.el
(defun web-mode-ruby-indentation (pos line initial-column language-offset limit)
(unless limit (setq limit nil))
(let (h offset prev-line prev-indentation open-ctx)
(setq open-ctx (web-mode-bracket-up pos "ruby" limit))
;;(message "%S" open-ctx)
(if (plist-get open-ctx :pos)
(cond
((web-mode-looking-at-p ".[ \t\n]+" (plist-get open-ctx :pos))
(setq offset (+ (plist-get open-ctx :indentation) language-offset)))
(t
(setq offset (1+ (plist-get open-ctx :column))))
)
(setq h (web-mode-previous-line pos limit))
(setq offset initial-column)
(when h
(setq prev-line (car h))
(setq prev-indentation (cdr h))
(cond
((string-match-p ",$" prev-line)
(save-excursion
(goto-char limit)
(looking-at "<%=? [a-z_]+ ")
(setq offset (+ initial-column (length (match-string-no-properties 0))))
) ;save-excursion
)
((string-match-p "^[ ]*\\(end\\|else\\|elsif\\|when\\)" line)
(setq offset (- prev-indentation language-offset))
)
((string-match-p "[ ]+\\(do\\)" prev-line)
(setq offset (+ prev-indentation language-offset))
)
((string-match-p "^[ ]*\\(when\\|if\\|else\\|elsif\\|unless\\|for\\|while\\|def\\|class\\)" prev-line)
(setq offset (+ prev-indentation language-offset))
)
(t
(setq offset prev-indentation)
)
)
) ;when
) ;if
offset))