Function: haskell-indentation-newline-and-indent
haskell-indentation-newline-and-indent is an interactive and natively
compiled function defined in haskell-indentation.el.
Signature
(haskell-indentation-newline-and-indent)
Documentation
Insert newline and indent.
Key Bindings
haskell-indentation-mode-map RET
Source Code
;; Defined in /nix/store/9lz2mhw95f9fqxr9mnq46k3f6qz3aq83-emacs-packages-deps/share/emacs/site-lisp/elpa/haskell-mode-20260904.1042/haskell-indentation.el
(defun haskell-indentation-newline-and-indent ()
"Insert newline and indent."
(interactive "*")
;; On RET (or C-j), we:
;; - just jump to the next line if literate haskell, but outside code
(if (haskell-indentation-literate-outside-code-p)
(progn
(delete-horizontal-space)
(newline))
;; - save the current column
(let ((ci (haskell-indentation-current-indentation)))
;; - jump to the next line and reindent to at the least same level
(delete-horizontal-space)
(newline)
;; calculate indentation after newline is inserted because if we
;; break an identifier we might create a keyword, for example
;; "dowhere" => "do where"
(let ((indentations (or (haskell-indentation-find-indentations)
'(0))))
(when (haskell-indentation-bird-p)
(insert "> "))
(haskell-indentation-reindent-to
(haskell-indentation-next-indentation (- ci 1) indentations 'nofail)
'move)))))