Function: web-mode-asp-indentation
web-mode-asp-indentation is a natively compiled function defined in
web-mode.el.
Signature
(web-mode-asp-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-asp-indentation (pos line initial-column language-offset limit)
(unless limit (setq limit nil))
(let (h out prev-line prev-indentation)
(setq h (web-mode-previous-line pos limit))
(setq out initial-column)
(when h
(setq prev-line (car h))
(setq prev-indentation (cdr h))
;;(message "line=%S" line)
(cond
((string-match-p "'" line)
(setq out prev-indentation))
;; ----------------------------------------------------------------------
;; unindent
((string-match-p "\\_<\\(\\(end \\(if\\|function\\|class\\|sub\\|with\\)\\)\\|else\\|elseif\\|next\\|loop\\)\\_>" line)
(setq out (- prev-indentation language-offset)))
;; ----------------------------------------------------------------------
;; select case statement
((string-match-p "\\_<\\(select case\\)\\_>" line)
(setq out (- prev-indentation 0)))
((string-match-p "\\_<\\(end select\\)" line)
(setq out (- prev-indentation (* 2 language-offset))))
((and (string-match-p "\\_<\\(case\\)\\_>" line) (not (string-match-p "\\_<\\(select case\\)\\_>" prev-line)))
(setq out (- prev-indentation language-offset)))
;; ----------------------------------------------------------------------
;; do nothing
((string-match-p "\\_<\\(\\(end \\(if\\|function\\|class\\|sub\\|select\\|with\\)\\)\\|loop\\( until\\| while\\)?\\)\\_>" prev-line)
(setq out (+ prev-indentation 0)))
;; indent
((string-match-p "\\_<\\(\\(select \\)?case\\|else\\|elseif\\|unless\\|for\\|class\\|with\\|do\\( until\\| while\\)?\\|while\\|\\(public \\|private \\)?\\(function\\|sub\\|class\\)\\)\\_>" prev-line)
(setq out (+ prev-indentation language-offset)))
;; single line if statement
((string-match-p "\\_<if\\_>.*\\_<then\\_>[ \t]*[[:alpha:]]+" prev-line)
(setq out (+ prev-indentation 0)))
;; normal if statement
((string-match-p "\\_<\\if\\_>" prev-line)
(setq out (+ prev-indentation language-offset)))
(t
(setq out prev-indentation))
)
) ;when
out))