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))