Function: haskell-indentation-implicit-layout-list
haskell-indentation-implicit-layout-list is a natively compiled
function defined in haskell-indentation.el.
Signature
(haskell-indentation-implicit-layout-list PARSER)
Documentation
An implicit layout list, elements are parsed with PARSER.
This sets the layout-indent variable to the column where the
layout starts.
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-implicit-layout-list (parser)
"An implicit layout list, elements are parsed with PARSER.
This sets the `layout-indent' variable to the column where the
layout starts."
(let* ((layout-indent (current-column))
(current-indent (current-column))
(left-indent (current-column))
(implicit-layout-active t))
(catch 'return
(while t
(let ((left-indent left-indent))
(funcall parser))
(cond ((member current-token '(layout-item ";"))
(haskell-indentation-read-next-token))
((eq current-token 'end-tokens)
(when (or (and
(not (member following-token '("{" operator)))
(not (member previous-token '(operator)))
(haskell-indentation-expression-token-p following-token))
(string= following-token ";")
(and (equal layout-indent 0)
(member following-token (mapcar #'car haskell-indentation-toplevel-list))
(not (string= following-token "where"))))
(haskell-indentation-add-layout-indent))
(throw 'return nil))
(t (throw 'return nil))))))
;; put `haskell-indentation-read-next-token' outside the current-indent
;; definition so it will not return 'layout-end again
(when (eq current-token 'layout-end)
(let ((implicit-layout-active t))
;; leave layout at 'layout-end or illegal token
(haskell-indentation-read-next-token))))