Function: haskell-indentation-data
haskell-indentation-data is a natively compiled function defined in
haskell-indentation.el.
Signature
(haskell-indentation-data)
Documentation
Parse data or type declaration.
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-data ()
"Parse data or type declaration."
(haskell-indentation-read-next-token)
(when (string= current-token "instance")
(haskell-indentation-read-next-token))
(haskell-indentation-type)
(cond ((eq current-token 'end-tokens)
(when (member following-token '("=" "where"))
(haskell-indentation-add-indentation current-indent)
(throw 'parse-end nil)))
((string= current-token "=")
(let ((starter-indent-inside (current-column)))
(haskell-indentation-with-starter
(lambda ()
(haskell-indentation-separated
#'haskell-indentation-expression "|")))
(cond
((equal current-token 'end-tokens)
(when (string= following-token "deriving")
(haskell-indentation-push-indentation starter-indent-inside)
(haskell-indentation-add-left-indent)))
((equal current-token "deriving")
(haskell-indentation-with-starter
#'haskell-indentation-type-1)))))
((string= current-token "where")
(haskell-indentation-with-starter
#'haskell-indentation-expression-layout nil)
(cond
((equal current-token 'end-tokens)
(when (string= following-token "deriving")
(haskell-indentation-add-left-indent)))
((equal current-token "deriving")
(haskell-indentation-with-starter
#'haskell-indentation-type-1))))))